Недавно я писал статью о настройке и установке Graphite+Grafana, теперь я расскажу как установить и настроить Collectd для сбора данных о состоянии сервера, отправки их в Grapfite
и отображение в Grafana
.
Предисловие
Collectd
— система сбора, хранения и отправки метрик о состоянии машины, на которой он запущен.
Он имеет множество плагинов "из коробки" и очень гибок в настройке.
И так, приступим.
Установка Collectd
Установка, как и в большинстве случаев, проста:
sudo apt-get install collectd collectd-utils
Базовая настройка Collectd
Для начала нам надо остановить сервис collectd
.
sudo service collectd stop
Я предлагаю сделать бэкап стандартного файла конфигурации и написать свой.
sudo mv /etc/collectd/collectd.conf /etc/collectd/collectd.conf.bak
sudo touch /etc/collectd/collectd.conf
Все настройки находятся в файле /etc/collectd/collectd.conf
, его мы и будем редактировать.
Hostname "graph_host" # Вводим сюда хост (или IP вашего сервера Grafana
# Если Вы вводите хост, добавляем следующую строку
FQDNLookup true
На этом базовая настройка завершена.
Настройка плагинов
У collectd
множество встроенных плагинов.
Рассмотрим самые необходимые.
Плагин mysql
В тот же конфигурационный файл добавляем строку
LoadPlugin mysql
И ниже вводим его настройки:
<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>
Плагин nginx
Тут всё немного интереснее.
Для начала необходимо настроить сам Nginx
, а именно включить страницу nginx_status
.
Проверяем наличие необходимого модуля в составе Nginx
:
nginx -V 2>&1 | grep -o with-http_stub_status_module
Если вывод команды такой:
with-http_stub_status_module
то всё отлично. В противном случае необходимо пересобрать Nginx
с этим модулем, либо обновиться до последней версии nginx/1.10.1
, в составе которой есть этот модуль "из коробки".
Далее настраиваем Nginx
, редактируем файл /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;
}
}
Теперь если в браузере открыть http://your.domain.com/nginx_status
мы увидим 403 ошибку.
Это значит что левых пользователей сюда не пустят.
Теперь в конфигурационный файл collectd
добавляем строку:
LoadPlugin nginx
И прописываем настройки:
<Plugin nginx>
URL "http://your.domain.com/nginx_status"
VerifyPeer false
VerifyHost false
</Plugin>
Плагины memory, uptime, users и cpu
В тот же конфигурационный файл добавляем строки
LoadPlugin memory
LoadPlugin uptime
LoadPlugin users
LoadPlugin cpu
Эти плагины не требуют настроек.
Думаю из названий понятно, за что отвечают эти плагины.
Плагин openvpn
Если Ваш сервер является сервером OpenVPN, то этот плагин поможет вывести некоторые данные.
В тот же конфигурационный файл добавляем строку
LoadPlugin openvpn
И прописываем настройки:
<Plugin openvpn>
StatusFile "/etc/openvpn/openvpn-status.log"
ImprovedNamingSchema false
CollectCompression true
CollectIndividualUsers true
CollectUserCount false
</Plugin>
Со значениями настроек можете поиграться на Ваше усмотрение.
Плагин swap
Если в Вашей системе используется SWAP{target="_bank"}, то этот плагин для Вас.
В тот же конфигурационный файл добавляем строку
LoadPlugin swap
И прописываем настройки:
<Plugin swap>
ReportByDevice false
ReportBytes true
</Plugin>
Плагин vmem
В тот же конфигурационный файл добавляем строку
LoadPlugin vmem
И прописываем настройки:
<Plugin vmem>
Verbose false
</Plugin>
Плагин syslog
В тот же конфигурационный файл добавляем строку
LoadPlugin syslog
И прописываем настройки:
<Plugin syslog>
LogLevel info
</Plugin>
Плагин aggregation
С этим плагином я до конца ещё не разобрался, но судя по содержимому он отдаёт параметры CPU
и, возможно, имеет дополнительные настройки. Привожу настройки по умолчанию.
В тот же конфигурационный файл добавляем строку
LoadPlugin aggregation
И прописываем настройки:
<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>
Плагин bind
Если на Вашем сервере установлен DNS-сервер bind9
, то включаем этот плагин.
В тот же конфигурационный файл добавляем строку
LoadPlugin bind
И прописываем настройки:
<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
df
— отображение свободного и занятого пространства на всех смонтированных разделах.
В тот же конфигурационный файл добавляем строку
LoadPlugin df
И прописываем настройки:
<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>
Плагин disk
Работает аналогично плагину выше, но выводит несколько другие метрики
В тот же конфигурационный файл добавляем строку
LoadPlugin disk
И прописываем настройки:
<Plugin disk>
Disk "vda" # Имя диска
Disk "/vda[1,2,3,4,5,6]/" # Список разделов по номерам
IgnoreSelected false
</Plugin>
Плагин ping
Проверяет доступность и время ответа от заданного домена
В тот же конфигурационный файл добавляем строку
LoadPlugin ping
И прописываем настройки:
<Plugin ping>
Host "www.google.com"
Interval 1.0
Timeout 0.9
TTL 255
SourceAddress "8.8.8.8"
Device "eth0"
MaxMissed -1
</Plugin>
Плагин write_graphite
Основной плагин, ради которого пишется данная статья. Отправка данных в Graphite
.
В тот же конфигурационный файл добавляем строку
LoadPlugin write_graphite
И прописываем настройки:
<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>
Дополнительные настройки
В тот же конфигурационный файл добавляем строки
<Include "/etc/collectd/collectd.conf.d">
Filter "*.conf"
</Include>
Это импорт настроек из директории /etc/collectd/collectd.conf.d
с расширением .conf
.
Запуск collectd
Запускаем collectd
sudo service collectd start
И если всё прошёл без ошибок — идём в Grafana
, добавляем дашборд, и прописываем метрики.
Все метрики от collectd
записаны следующим образом:
collectd.MetrikaName.********
Строим необходимые графики и наслаждаемся красивым мониторингом.
Полный список плагинов
Полный список плагинов collectd
"из коробки" можно посмотреть здесь.
Послесловие
В следующей статье я расскажу о плагинах для Grafana
.
Оригинал статьи опубликован на моём блоге