#source : http://emacstragic.net/collectd-causing-rrd-illegal-attempt-to-update-using-time-errors/
<Plugin df>
FSType "rootfs"
IgnoreSelected true
</Plugin>
apt-get install libdbd-mysql
LoadPlugin dbi
# recup de la taille de la table inventoryitems
Statement "SELECT table_name as c_key,round(sum(data_length+index_length)/1024/1024,2) as c_value FROM information_schema.tables WHERE table_schema = 'prod_grid' AND table_name = 'inventoryitems';"
Type "gauge"
InstancePrefix "inventory_size"
InstancesFrom "c_key"
ValuesFrom "c_value"
# recup du nombre de users
Statement "SELECT count( PrincipalID ) as c_value FROM `UserAccounts;"
Type "gauge"
InstancePrefix "users_count"
ValuesFrom "c_value"
# recup de la quantite de users online
Statement "SELECT COUNT(UserID) AS c_value FROM Presence WHERE RegionID'00000000-0000-0000-0000-000000000000';"
Type "gauge"
InstancePrefix "online_users_count"
ValuesFrom "c_value"
# recup de la quantite de regions
Statement "SELECT COUNT(uuid) AS c_value FROM regions;"
Type "gauge"
InstancePrefix "regions_count"
ValuesFrom "c_value"
# config de la base
Driver "mysql"
DriverOption "host" "localhost"
DriverOption "mysql_unix_socket" "/var/run/mysqld/mysqld.sock"
DriverOption "username" "localreader"
DriverOption "password" "abcdef"
DriverOption "dbname" "mybase"
SelectDB "mybase"
Query "inventory_size"
Query "users_count"
Query "online_users_count"
Query "regions_count"
a2enmod status
edit /etc/apache2/conf.d/stats
ExtendedStatus on <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from .example.com Allow from localhost </Location>
apt-get install collectd
edit /etc/collectd/collectd.conf
# Config file for collectd(1). # # Some plugins need additional configuration and are disabled by default. # Please read collectd.conf(5) for details. # # You should also read /usr/share/doc/collectd-core/README.Debian.plugins # before enabling any more plugins. #Hostname "localhost" FQDNLookup true #BaseDir "/var/lib/collectd" #PluginDir "/usr/lib/collectd" #TypesDB "/usr/share/collectd/types.db" "/etc/collectd/my_types.db" #Interval 10 #ReadThreads 5 LoadPlugin logfile #LoadPlugin syslog #<Plugin syslog> # LogLevel info #</Plugin> <Plugin "logfile"> LogLevel "info" File "/var/log/collectd.log" #File STDOUT Timestamp true </Plugin> LoadPlugin apache #LoadPlugin apcups #LoadPlugin ascent #LoadPlugin battery #LoadPlugin bind #LoadPlugin conntrack LoadPlugin cpu #LoadPlugin cpufreq #LoadPlugin csv #LoadPlugin curl #LoadPlugin curl_json #LoadPlugin dbi LoadPlugin df LoadPlugin disk #LoadPlugin dns #LoadPlugin email #LoadPlugin entropy #LoadPlugin exec #LoadPlugin filecount #LoadPlugin fscache #LoadPlugin gmond #LoadPlugin hddtemp LoadPlugin interface #LoadPlugin ipmi #LoadPlugin iptables #LoadPlugin ipvs #LoadPlugin irq #LoadPlugin java #LoadPlugin libvirt LoadPlugin load #LoadPlugin madwifi #LoadPlugin mbmon #LoadPlugin memcachec #LoadPlugin memcached LoadPlugin memory #LoadPlugin multimeter #LoadPlugin mysql #LoadPlugin netlink #LoadPlugin network #LoadPlugin nfs #LoadPlugin nginx #LoadPlugin notify_desktop #LoadPlugin notify_email #LoadPlugin ntpd #LoadPlugin nut #LoadPlugin olsrd #LoadPlugin openvpn #LoadPlugin perl #LoadPlugin ping #LoadPlugin postgresql #LoadPlugin powerdns LoadPlugin processes #LoadPlugin protocols LoadPlugin rrdtool #LoadPlugin sensors #LoadPlugin serial #LoadPlugin snmp LoadPlugin swap #LoadPlugin table #LoadPlugin tail #LoadPlugin tcpconns #LoadPlugin teamspeak2 #LoadPlugin ted #LoadPlugin thermal #LoadPlugin unixsock #LoadPlugin uptime #LoadPlugin users #LoadPlugin uuid #LoadPlugin vmem #LoadPlugin vserver #LoadPlugin wireless #LoadPlugin write_http <Plugin apache> # <Instance "foo"> # URL "http://localhost/server-status?auto" # User "www-user" # Password "secret" # VerifyPeer false # VerifyHost false # CACert "/etc/ssl/ca.crt" # Server "apache" # </Instance> # <Instance "myserver"> URL "http://localhost/server-status?auto" Host "mymachine" Server "apache" </Instance> </Plugin> #<Plugin apcups> # Host "localhost" # Port "3551" #</Plugin> #<Plugin ascent> # URL "http://localhost/ascent/status/" # User "www-user" # Password "secret" # VerifyPeer false # VerifyHost false # CACert "/etc/ssl/ca.crt" #</Plugin> #<Plugin "bind"> # URL "http://localhost:8053/" # # OpCodes true # QTypes true # ServerStats true # ZoneMaintStats true # ResolverStats false # MemoryStats true # # <View "_default"> # QTypes true # ResolverStats true # CacheRRSets true # # Zone "127.in-addr.arpa/IN" # </View> #</Plugin> #<Plugin csv> # DataDir "/var/lib/collectd/csv" # StoreRates false #</Plugin> #<Plugin curl> # <Page "stock_quotes"> # URL "http://finance.google.com/finance?q=NYSE%3AAMD" # User "foo" # Password "bar" # VerifyPeer false # VerifyHost false # CACert "/etc/ssl/ca.crt" # <Match> # Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>" # DSType "GaugeAverage" # Type "stock_value" # Instance "AMD" # </Match> # </Page> #</Plugin> #<Plugin curl_json> ## See: http://wiki.apache.org/couchdb/Runtime_Statistics # <URL "http://localhost:5984/_stats"> # Instance "httpd" # <Key "httpd/requests/count"> # Type "http_requests" # </Key> # # <Key "httpd_request_methods/*/count"> # Type "http_request_methods" # </Key> # # <Key "httpd_status_codes/*/count"> # Type "http_response_codes" # </Key> # </URL> ## Database status metrics: # <URL "http://localhost:5984/_all_dbs"> # Instance "dbs" # <Key "*/doc_count"> # Type "gauge" # </Key> # <Key "*/doc_del_count"> # Type "counter" # </Key> # <Key "*/disk_size"> # Type "bytes" # </Key> # </URL> #</Plugin> #<Plugin dbi> # <Query "num_of_customers"> # Statement "SELECT 'customers' AS c_key, COUNT(*) AS c_value \ # FROM customers_tbl" # MinVersion 40102 # MaxVersion 50042 # <Result> # Type "gauge" # InstancePrefix "customer" # InstancesFrom "c_key" # ValuesFrom "c_value" # </Result> # </Query> # # <Database "customers_db"> # Driver "mysql" # DriverOption "host" "localhost" # DriverOption "username" "collectd" # DriverOption "password" "secret" # DriverOption "dbname" "custdb0" # SelectDB "custdb0" # Query "num_of_customers" # Query "..." # </Database> #</Plugin> #<Plugin df> # Device "/dev/sda1" # Device "192.168.0.2:/mnt/nfs" # MountPoint "/home" # FSType "ext3" # IgnoreSelected false # ReportByDevice false #</Plugin> #<Plugin disk> # Disk "hda" # Disk "/sda[23]/" # IgnoreSelected false #</Plugin> #<Plugin dns> # Interface "eth0" # IgnoreSource "192.168.0.1" # SelectNumericQueryTypes false #</Plugin> #<Plugin email> # SocketFile "/var/run/collectd-email" # SocketGroup "collectd" # SocketPerms "0770" # MaxConns 5 #</Plugin> #<Plugin exec> # Exec user "/path/to/exec" # Exec "user:group" "/path/to/exec" # NotificationExec user "/path/to/exec" #</Plugin> #<Plugin filecount> # <Directory "/path/to/dir"> # Instance "foodir" # Name "*.conf" # MTime "-5m" # Size "+10k" # Recursive true # </Directory> #</Plugin> #<Plugin gmond> # MCReceiveFrom "239.2.11.71" "8649" # # <Metric "swap_total"> # Type "swap" # TypeInstance "total" # DataSource "value" # </Metric> # # <Metric "swap_free"> # Type "swap" # TypeInstance "free" # DataSource "value" # </Metric> #</Plugin> #<Plugin hddtemp> # Host "127.0.0.1" # Port 7634 # TranslateDevicename false #</Plugin> #<Plugin interface> # Interface "eth0" # IgnoreSelected false #</Plugin> #<Plugin ipmi> # Sensor "some_sensor" # Sensor "another_one" # IgnoreSelected false # NotifySensorAdd false # NotifySensorRemove true # NotifySensorNotPresent false #</Plugin> #<Plugin iptables> # Chain "table" "chain" #</Plugin> #<Plugin irq> # Irq 7 # Irq 8 # Irq 9 # IgnoreSelected true #</Plugin> #<Plugin java> # JVMArg "-verbose:jni" # # LoadPlugin "org.collectd.java.GenericJMX" # <Plugin "GenericJMX"> # # See /usr/share/doc/collectd/examples/GenericJMX.conf # # for an example config. # </Plugin> #</Plugin> #<Plugin libvirt> # Connection "xen:///" # RefreshInterval 60 # Domain "name" # BlockDevice "name:device" # InterfaceDevice "name:device" # IgnoreSelected false # HostnameFormat name #</Plugin> #<Plugin madwifi> # Interface "wlan0" # IgnoreSelected false # Source "SysFS" # WatchSet "None" # WatchAdd "node_octets" # WatchAdd "node_rssi" # WatchAdd "is_rx_acl" # WatchAdd "is_scan_active" #</Plugin> #<Plugin mbmon> # Host "127.0.0.1" # Port 411 #</Plugin> #<Plugin memcachec> # <Page "plugin_instance"> # Server "localhost" # Key "page_key" # <Match> # Regex "(\\d+) bytes sent" # DSType CounterAdd # Type "ipt_octets" # Instance "type_instance" # </Match> # </Page> #</Plugin> #<Plugin memcached> # Socket "/var/run/memcached.sock" # or: # Host "127.0.0.1" # Port "11211" #</Plugin> #<Plugin mysql> # <Database db_name> # Host "database.serv.er" # Port "3306" # User "db_user" # Password "secret" # Database "db_name" # MasterStats true # </Database> # # <Database db_name2> # Host "localhost" # Socket "/var/run/mysql/mysqld.sock" # SlaveStats true # SlaveNotifications true # </Database> #</Plugin> #<Plugin netlink> # Interface "All" # VerboseInterface "All" # QDisc "eth0" "pfifo_fast-1:0" # Class "ppp0" "htb-1:10" # Filter "ppp0" "u32-1:0" # IgnoreSelected false #</Plugin> #<Plugin network> # # client setup: # Server "ff18::efc0:4a42" "25826" # <Server "239.192.74.66" "25826"> # SecurityLevel Encrypt # Username "user" # Password "secret" # </Server> # TimeToLive "128" # # # server setup: # Listen "ff18::efc0:4a42" "25826" # <Listen "239.192.74.66" "25826"> # SecurityLevel Sign # AuthFile "/etc/collectd/passwd" # </Listen> # MaxPacketSize 1024 # # # proxy setup (client and server as above): # Forward true #</Plugin> #<Plugin nginx> # URL "http://localhost/status?auto" # User "www-user" # Password "secret" # VerifyPeer false # VerifyHost false # CACert "/etc/ssl/ca.crt" #</Plugin> #<Plugin notify_desktop> # OkayTimeout 1000 # WarningTimeout 5000 # FailureTimeout 0 #</Plugin> #<Plugin notify_email> # SMTPServer "localhost" # SMTPPort 25 # SMTPUser "my-username" # SMTPPassword "my-password" # From "collectd@main0server.com" # # <WARNING/FAILURE/OK> on <hostname>. # # Beware! Do not use not more than two placeholders (%)! # Subject "[collectd] %s on %s!" # Recipient "email1@domain1.net" # Recipient "email2@domain2.com" #</Plugin> #<Plugin ntpd> # Host "localhost" # Port 123 # ReverseLookups false #</Plugin> #<Plugin nut> # UPS "upsname@hostname:port" #</Plugin> #<Plugin olsrd> # Host "127.0.0.1" # Port "2006" # CollectLinks "Summary" # CollectRoutes "Summary" # CollectTopology "Summary" #</Plugin> #<Plugin openvpn> # StatusFile "/etc/openvpn/openvpn-status.log" #</Plugin> #<Plugin perl> # IncludeDir "/my/include/path" # BaseName "Collectd::Plugin" # EnableDebugger "" # LoadPlugin "foo" # LoadPlugin "bar" # # <Plugin foo> # Foo "Bar" # Qux "Baz" # </Plugin> #</Plugin> #<Plugin ping> # Host "host.foo.bar" # Host "host.baz.qux" # Interval 1.0 # Timeout 0.9 # TTL 255 #</Plugin> #<Plugin postgresql> # <Query magic> # Statement "SELECT magic FROM wizard WHERE host = $1;" # Param hostname # # <Result> # Type gauge # InstancePrefix "magic" # ValuesFrom "magic" # </Result> # </Query> # # <Query rt36_tickets> # Statement "SELECT COUNT(type) AS count, type \ # FROM (SELECT CASE \ # WHEN resolved = 'epoch' THEN 'open' \ # ELSE 'resolved' END AS type \ # FROM tickets) type \ # GROUP BY type;" # # <Result> # Type counter # InstancePrefix "rt36_tickets" # InstancesFrom "type" # ValuesFrom "count" # </Result> # </Query> # # <Database foo> # Host "hostname" # Port 5432 # User "username" # Password "secret" # # SSLMode "prefer" # KRBSrvName "kerberos_service_name" # # Query magic # </Database> # # <Database bar> # Service "service_name" # # Query backend # predefined # Query rt36_tickets # </Database> #</Plugin> #<Plugin powerdns> # <Server "server_name"> # Collect "latency" # Collect "udp-answers" "udp-queries" # Socket "/var/run/pdns.controlsocket" # </Server> # <Recursor "recursor_name"> # Collect "questions" # Collect "cache-hits" "cache-misses" # Socket "/var/run/pdns_recursor.controlsocket" # </Recursor> # LocalSocket "/opt/collectd/var/run/collectd-powerdns" #</Plugin> #<Plugin processes> # Process "name" # ProcessMatch "foobar" "/usr/bin/perl foobar\\.pl.*" #</Plugin> #<Plugin protocols> # Value "/^Tcp:/" # IgnoreSelected false #</Plugin> <Plugin rrdtool> DataDir "/var/lib/collectd/rrd" # CacheTimeout 120 # CacheFlush 900 # WritesPerSecond 30 # RandomTimeout 0 # # The following settings are rather advanced # and should usually not be touched: # StepSize 10 # HeartBeat 20 # RRARows 1200 # RRATimespan 158112000 # XFF 0.1 </Plugin> #<Plugin sensors> # Sensor "it8712-isa-0290/temperature-temp1" # Sensor "it8712-isa-0290/fanspeed-fan3" # Sensor "it8712-isa-0290/voltage-in8" # IgnoreSelected false #</Plugin> # See /usr/share/doc/collectd/examples/snmp-data.conf.gz for a # comprehensive sample configuration. #<Plugin snmp> # <Data "powerplus_voltge_input"> # Type "voltage" # Table false # Instance "input_line1" # Scale 0.1 # Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1" # </Data> # <Data "hr_users"> # Type "users" # Table false # Instance "" # Shift -1 # Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0" # </Data> # <Data "std_traffic"> # Type "if_octets" # Table true # InstancePrefix "traffic" # Instance "IF-MIB::ifDescr" # Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" # </Data> # # <Host "some.switch.mydomain.org"> # Address "192.168.0.2" # Version 1 # Community "community_string" # Collect "std_traffic" # Inverval 120 # </Host> # <Host "some.server.mydomain.org"> # Address "192.168.0.42" # Version 2 # Community "another_string" # Collect "std_traffic" "hr_users" # </Host> # <Host "some.ups.mydomain.org"> # Address "192.168.0.3" # Version 1 # Community "more_communities" # Collect "powerplus_voltge_input" # Interval 300 # </Host> #</Plugin> #<Plugin table> # <Table "/proc/slabinfo"> # Instance "slabinfo" # Separator " " # <Result> # Type gauge # InstancePrefix "active_objs" # InstancesFrom 0 # ValuesFrom 1 # </Result> # <Result> # Type gauge # InstancePrefix "objperslab" # InstancesFrom 0 # ValuesFrom 4 # </Result> # </Table> #</Plugin> #<Plugin "tail"> # <File "/var/log/exim4/mainlog"> # Instance "exim" # <Match> # Regex "S=([1-9][0-9]*)" # DSType "CounterAdd" # Type "ipt_bytes" # Instance "total" # </Match> # <Match> # Regex "\\<R=local_user\\>" # DSType "CounterInc" # Type "counter" # Instance "local_user" # </Match> # </File> #</Plugin> #<Plugin tcpconns> # ListeningPorts false # LocalPort "25" # RemotePort "25" #</Plugin> #<Plugin teamspeak2> # Host "127.0.0.1" # Port "51234" # Server "8767" #</Plugin> #<Plugin ted> # Device "/dev/ttyUSB0" # Retries 0 #</Plugin> #<Plugin thermal> # ForceUseProcfs false # Device "THRM" # IgnoreSelected false #</Plugin> #<Plugin unixsock> # SocketFile "/var/run/collectd-unixsock" # SocketGroup "collectd" # SocketPerms "0660" #</Plugin> #<Plugin uuid> # UUIDFile "/etc/uuid" #</Plugin> #<Plugin vmem> # Verbose false #</Plugin> #<Plugin write_http> # <URL "http://example.com/collectd-post"> # User "collectd" # Password "secret" # </URL> #</Plugin> Include "/etc/collectd/filters.conf" Include "/etc/collectd/thresholds.conf"
/etc/init.d/collectd restart
apt-get install librrds-perl libconfig-general-perl libhtml-parser-perl libregexp-common-perl
edit /etc/apache2/sites-available/stats
ScriptAlias /collectd/bin/ /usr/share/doc/collectd-core/examples/collection3/bin/
Alias /collectd/ /usr/share/doc/collectd-core/examples/collection3/
<Directory /usr/share/doc/collectd-core/examples/collection3/>
AddHandler cgi-script .cgi
DirectoryIndex bin/index.cgi
Options +ExecCGI
Order Allow,Deny
Allow from example.com
</Directory>
a2ensite stats
service apache2 restart