I recently wrote an article about configuring and installing Graphite + Grafana , now I’ll tell you how to install and configure Collectd to collect server status data, send it to Grapfite and display in Grafana .
Collectd is a system for collecting, storing and sending metrics about the state of the machine on which it is running.
It has many out-of-box plugins and is very flexible in customization.
And so, let's get started.
Installation, as in most cases, is simple:
 sudo apt-get install collectd collectd-utils First we need to stop the collectd service.
 sudo service collectd stop I suggest making a backup of the standard configuration file and writing your own.
 sudo mv /etc/collectd/collectd.conf /etc/collectd/collectd.conf.bak sudo touch /etc/collectd/collectd.conf All settings are in the file /etc/collectd/collectd.conf , we will edit it.
 Hostname "graph_host" #    ( IP   Grafana #    ,    FQDNLookup true This completes the basic setup.
collectd lot of embedded plugins.
Consider the most necessary.
Add the line to the same configuration file
 LoadPlugin mysql And below we enter its settings:
 <Plugin mysql> <Database DataBaseName> Host "HOST.OR.IP" Port "3306" User "UserName" Password "PassWord" Database "databasename" MasterStats true </Database> <Database DataBaseName2> Host "HOST.OR.IP" Port "3306" User "UserName" Password "PassWord" Database "databasename2" MasterStats true </Database> #       </Plugin> It's all a little more interesting.
First you need to configure Nginx itself, namely to enable the nginx_status page.
We check the availability of the required module as part of Nginx :
 nginx -V 2>&1 | grep -o with-http_stub_status_module If the output of the command is:
 with-http_stub_status_module then everything is fine Otherwise, you need to rebuild Nginx with this module, or upgrade to the latest version of nginx/1.10.1 , which includes this module out of the box.
Next, configure Nginx , edit the file /etc/nginx/conf.d/your.domain.conf :
 server { listen 80; server_name your.domain.com; location / { #     ,    . } location /nginx_status { stub_status on; access_log off; allow IP.AD.DR.ES; # IP     Nginx deny all; } } Now, if we open http://your.domain.com/nginx_status in the browser, we will see a 403 error.
This means that left users will not be allowed here.
Now add the line to the collectd configuration file:
 LoadPlugin nginx And prescribe settings:
 <Plugin nginx> URL "http://your.domain.com/nginx_status" VerifyPeer false VerifyHost false </Plugin> Add lines to the same configuration file
 LoadPlugin memory LoadPlugin uptime LoadPlugin users LoadPlugin cpu These plugins do not require configuration.
I think the names make it clear what these plugins are responsible for.
If your server is an OpenVPN server, then this plugin will help display some data.
Add the line to the same configuration file
 LoadPlugin openvpn And prescribe settings:
 <Plugin openvpn> StatusFile "/etc/openvpn/openvpn-status.log" ImprovedNamingSchema false CollectCompression true CollectIndividualUsers true CollectUserCount false </Plugin> With the values of the settings you can play at your discretion.
If your system uses SWAP {target = "_ bank"}, then this plugin is for you.
Add the line to the same configuration file
 LoadPlugin swap And prescribe settings:
 <Plugin swap> ReportByDevice false ReportBytes true </Plugin> Add the line to the same configuration file
 LoadPlugin vmem And prescribe settings:
 <Plugin vmem> Verbose false </Plugin> Add the line to the same configuration file
 LoadPlugin syslog And prescribe settings:
 <Plugin syslog> LogLevel info </Plugin> I haven’t figured out this plug-in yet, but judging by the content, it gives the CPU parameters and, possibly, has additional settings. I give the default settings.
Add the line to the same configuration file
 LoadPlugin aggregation And prescribe settings:
 <Plugin "aggregation"> <Aggregation> #Host "unspecified" Plugin "cpu" PluginInstance "/[0,2,4,6,8]$/" Type "cpu" #TypeInstance "unspecified" SetPlugin "cpu" SetPluginInstance "even-%{aggregation}" GroupBy "Host" GroupBy "TypeInstance" CalculateNum false CalculateSum false CalculateAverage true CalculateMinimum false CalculateMaximum false CalculateStddev false </Aggregation> </Plugin> If bind9 DNS server is installed on your server, then enable this plugin.
Add the line to the same configuration file
 LoadPlugin bind And prescribe settings:
 <Plugin "bind"> URL "http://localhost:8053/" ParseTime false OpCodes true QTypes true ServerStats true ZoneMaintStats true ResolverStats false MemoryStats true <View "_default"> QTypes true ResolverStats true CacheRRSets true Zone "your.domain.com/IN" #   ,     </View> <View "_default2"> #      </View> </Plugin> df - display of free and occupied space on all mounted partitions.
Add the line to the same configuration file
 LoadPlugin df And prescribe settings:
 <Plugin df> Device "/dev/vda1" #       df -h MountPoint "/" #    FSType "ext4" #    FSType rootfs FSType sysfs FSType proc FSType devtmpfs FSType devpts FSType tmpfs FSType fusectl FSType cgroup IgnoreSelected true ReportByDevice false ReportReserved false ReportInodes false ValuesAbsolute true ValuesPercentage false </Plugin> Works similar to the plugin above, but displays several other metrics.
Add the line to the same configuration file
 LoadPlugin disk And prescribe settings:
 <Plugin disk> Disk "vda" #   Disk "/vda[1,2,3,4,5,6]/" #     IgnoreSelected false </Plugin> Checks availability and response time from the specified domain.
Add the line to the same configuration file
 LoadPlugin ping And prescribe settings:
 <Plugin ping> Host "www.google.com" Interval 1.0 Timeout 0.9 TTL 255 SourceAddress "8.8.8.8" Device "eth0" MaxMissed -1 </Plugin> The main plugin for which this article is written. Sending data to Graphite .
Add the line to the same configuration file
 LoadPlugin write_graphite And prescribe settings:
 <Plugin write_graphite> <Node "Graphite"> #   Host "127.0.0.1" Port "2003" Protocol "tcp" LogSendErrors true Prefix "collectd." Postfix "collectd." StoreRates true AlwaysAppendDS true EscapeCharacter "-" </Node> </Plugin> Add lines to the same configuration file
 <Include "/etc/collectd/collectd.conf.d"> Filter "*.conf" </Include> This is an import of settings from the /etc/collectd/collectd.conf.d directory with a .conf extension.
Run collectd
 sudo service collectd start And if everything went without errors - go to Grafana , add dashboards, and prescribe metrics.
All metrics from collectd are written as follows:
 collectd.MetrikaName.******** We build the necessary graphics and enjoy beautiful monitoring.

A complete list of collectd plugins collectd of the box can be found here .
In the next article I will talk about plugins for Grafana .
Original article published on my blog.
Source: https://habr.com/ru/post/302840/
All Articles