User Tools

This is an old revision of the document!


collectd

debug log

#source : http://emacstragic.net/collectd-causing-rrd-illegal-attempt-to-update-using-time-errors/
<Plugin df>
        FSType "rootfs"
        IgnoreSelected true
</Plugin>

mysql

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"

Install apache stats

a2enmod status

create stats config file

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>

Install collectd

apt-get install collectd

  • the config file is : /etc/collectd/collectd.conf
  • the default rrd folder is : /var/lib/collectd/rrd
  • the default plugins folder is : /usr/lib/collectd
  • some libs are in : /usr/share/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"

Restart Collectd

/etc/init.d/collectd restart

Install web interface

Install some perl libs

apt-get install librrds-perl libconfig-general-perl libhtml-parser-perl  libregexp-common-perl

Create an apache conf file

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>

Enable apache site

a2ensite stats

Restart apache

service apache2 restart

Go to the page

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information