Мониторинг Nginx
1.Узнаем под каким пользователем запускается poller
1 |
# grep -ri cacti /etc/cron* |
1 |
/etc/cron.d/cacti:* * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 |
В данном случае под пользователем cacti
2. Создаем пару SSH-ключей без пароля и сохраняем ключи в /etc/cacti
1 |
# ssh-keygen |
1 2 3 4 5 6 |
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /etc/cacti/id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /etc/cacti/id_rsa. Your public key has been saved in /etc/cacti/id_rsa.pub. |
3.Выставляем корректного владельца на ключи – пользователя cacti
1 |
# chown cacti /etc/cacti/id_rsa* |
1 |
# ls -al /etc/cacti/ | grep id |
1 2 |
-rw------- 1 cacti root 1679 Dec 29 22:52 id_rsa -rw-r--r-- 1 cacti root 406 Dec 29 22:52 id_rsa.pub |
4.Создаем пользователя,например, cacti на клиенте(192.168.1.100), с которого будет сниматься статитика
1 |
# ssh -p 2220 root@192.168.1.100 adduser cacti |
5. Копируем публичный SSH-ключ для пользователя cacti на клиентский сервер
Предварительно на клиентском сервере создадим каталог .ssh и файл .ssh/authorized_keys
1 |
# mkdir /home/cacti/.ssh |
1 |
# nano /home/cacti/.ssh/authorized_keys |
Вставляем сюда содержимое ключа на Cacti-сервере /etc/cacti/id_rs.pub
1 |
# chmod 700 /home/cacti/.ssh/ |
1 |
# chown -R cacti /home/cacti/.ssh |
Проверяем подключение с Cacti сервера
1 |
# ssh -p 2220 -i /etc/cacti/id_rsa cacti@192.168.1.100 echo "it works" |
1 |
it works |
6.Загружаем и распаковываем архив Percona с плагинами
1 |
# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.5/percona-monitoring-plugins-1.1.5.tar.gz |
1 |
# tar xvfz percona-monitoring-plugins-1.1.5.tar.gz |
Копируем скрипт ss_get_by_ssh.php на Cacti-сервер в каталог /scripts
1 |
# cp percona-monitoring-plugins-1.1.5/cacti/scripts/ss_get_by_ssh.php /usr/share/cacti/scripts/ |
Если необходимо изменить определенные параметры ,то изменять непосредственно в скрипте не лучшее решение т.к. при обновлении скрипта Ваши настройки будут перезаписаны
Поэтому в каталоге /etc/cacti создаем пользователський файл с настройками
Например, для изменения настроек в файле /usr/share/cacti/scripts/ss_get_by_ssh.php
Создаем файл /etc/cacti/ss_get_by_ssh.php.cnf и переопределяем в нем необходимые настройки.
В данном случае порт подключения по SSH, расположение приватного ключа, url, по которому доступен статус Nginx.
1 |
# nano /etc/cacti/ss_get_by_ssh.php.cnf |
$ssh_port = 2220;
$ssh_iden = ‘-i /etc/cacti/id_rsa’;
$status_url = ‘/nginx_status’
Важно, чтобы файл не содержал пустых/лишних строк/пробелов в начале и в конце файла
Для проверки можно использовать команду
1 |
# cat -A /etc/cacti/ss_get_by_ssh.php.cnf |
1 2 3 4 |
<?php$ $ssh_port = 2220;$ $ssh_iden = '-i /etc/cacti/id_rsa';$ $status_url = '/nginx_status';$ |
Выставляем бит исполнения и делаем владельца скрипта пользователя Сacti
1 |
# chmod +x /etc/cacti/ss_get_by_ssh.php.conf |
1 |
# chown cacti /etc/cacti/ss_get_by_ssh.php.cnf |
7.Настройка Nginx для снятия статистики
Настройка Nginx для снятия статистики была описана в другом посте
https://kamaok.org.ua/?p=1347
Основные моменты:
1)Nginx должен слушать на localhost-интерфейсе также т.к снятие статистики происходит по hostname localhost(скрипт подключается по SSH и снимает статистику по URL http://localhost/nginx_status
2) C localhost(127.0.0.1) должен быть разрешен доступ на просмотр статистики
1 2 3 4 5 6 |
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; …………………… } |
Проверка с командной строки с помощью скрипта с Cacti-сервера
1 |
# sudo -u cacti php /usr/share/cacti/scripts/ss_get_by_ssh.php --type nginx --host 192.168.1.100 --url /nginx_status --items hw,hx |
1 |
hw:36 hx:65647 |
8.Импортирование шаблона, создание графиков
У меня используется spine вместо cmd.php и частота запуска определена как 60 секунд (вместо дефолтных 300 секунд).Поэтому перед импортированием шаблона от Percona, в котором также используется 300 секунд, необходимо изменить частоту запуска на 60 секунд.
Создаем свой шаблон на базе существующего с изменением poller-интервала с 300 секунд на 60 секунд
1 |
# cd <path_to_percona_monitoring_plugins>/percona-monitoring-plugins-1.1.5/cacti/bin/ |
1 |
./pmp-cacti-template --script ../scripts/ss_get_by_ssh.php --poll_interval 60 ../definitions/nginx.def > cacti_host_template_percona_nginx_server_poll_interval_60.xml |
После чего импортируем вновь созданный шаблон
Добавляем мониторинг Nginx к проверяемому хосту
1 |
Console->Device->Servername->Host Template->Percona Nginx Server HT->Save |
Создаем графики
1 |
Console->Device->Servername->Create Graphs for this host-> |
Выбираем 3 графика
1 2 3 |
Percona Nginx Accepts/Handled GT Percona Nginx Requests GT Percona Nginx Scoreboard GT |
Для снятия статистики с локального Cacti-сервера
Изменяем оболочку уже существующего cacti-пользователя с /bin/nologin на /bin/bash
1 |
# usermod -s /bin/bash cacti |
Настраиваем вход по ключам для пользователя cacti локально с Cacti-сервера
1 |
# mkdir /usr/share/cacti/.ssh |
1 |
# cat /etc/cacti/id_rsa.pub > /usr/share/cacti/.ssh/authorized_keys |
1 |
# chmod 700 /usr/share/cacti/.ssh |
1 |
# chown -R cacti /usr/share/cacti/.ssh |
Проверяем локальный вход SSH по ключам для пользователя cacti
1 |
# ssh -p 2220 -i /etc/cacti/id_rsa cacti@127.0.0.1 |
Проверяем подключение через скрипт
1 |
# sudo -u cacti php /usr/share/cacti/scripts/ss_get_by_ssh.php --type nginx --host 127.0.0.1 --url /nginx_status --items hw,hx |
1 |
hw:7 hx:4146 |
Примеры графиков
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/nginx-templates.html
Источники:
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/ssh-based-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/nginx-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/customizing-templates.html
Мониторинг Memcached
1.Необходимо настроить доступ через SSH с Cacti-сервера на клиентский сервер, как описано в начале статьи
2.Проверка наличия статистики Memcached
Проверка снятия статистики Memcached локально с клиентского сервера
1 |
# echo "stats settings" | nc 192.168.1.100 11211 |
1 |
# echo "stats settings" | nc localhost 11211 |
Проверка с командной строки с помощью скрипта с Cacti-сервера
1 |
# sudo -u cacti /usr/bin/php -q /usr/share/cacti/scripts/ss_get_by_ssh.php --host 192.168.1.100 --type memcached --items io,ip,im,it,iu,iv,ij,ik,il,in,iq,ir,is |
1 |
ij:76988 ik:104984 il:337 im:880 in:579577 io:13 ip:39 iq:976 ir:880 is:663 it:0 iu:1184233 iv:514119 |
3.Создаем и импортируем шаблон с запуском поллера каждые 60 секунд, вместо дефолтных 300 секунд
(если используется запуск раз в 300 секунд , то импортируем шаблон, поставляемый в комплекте percona monitoring plugins)
1 |
# cd <path_to_percona_monitoring_plugins>/percona-monitoring-plugins-1.1.5/cacti/bin/ |
1 |
# ./pmp-cacti-template --script ../scripts/ss_get_by_ssh.php --poll_interval 60 ../definitions/memcached.def > cacti_host_template_percona_memcached_server_poll_interval_60.xml |
После чего импортируем вновь созданный шаблон
4.Добавляем мониторинг Memcached к проверяемому хосту
1 |
Console->Device->Servername->Host Template->Percona Memcached Server HT->Save |
5.Создаем графики
1 |
Console->Device->Servername->Create Graphs for this host-> |
1 2 3 4 5 6 7 |
Percona Memcached Additions and Evictions GT Percona Memcached Connections GT Percona Memcached Current Items GT Percona Memcached Memory GT Percona Memcached Requests GT Percona Memcached Rusage GT Percona Memcached Traffic GT |
Примеры графиков
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/memcached-templates.html
Источники:
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/ssh-based-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/memcached-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/customizing-templates.html
Мониторинг Redis
1.Необходимо настроить доступ через SSH с Cacti-сервера на клиентский сервер,как описано в начале статьи
2.Настройка Redis для снятия статистики и проверка получения данных
Снятие статистики с Redis происходит путем прямого подключения к Redis на порт 6379
Поэтому нужно настрить Redis на прослушиание внешнего интерфейса
1 |
# nano /etc/redis.conf |
1 |
bind 0.0.0.0 |
1 |
# service redis restart |
1 |
# netstat -nlpt | grep redis |
1 |
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 12932/redis-server |
С целью повышения безопасности ограничим доступ к Redis только с Cacti-сервера
1 |
# iptables -A INPUT -p tcp --dport 6379 -s <IP-address-Cacti-server> -j ACCEPT |
1 |
# /usr/bin/php -q /usr/share/cacti/scripts/ss_get_by_ssh.php --host 192.168.1.100 --type redis --items lq,ln,lo,lr,ls,lp |
1 |
ln:1 lo:0 lp:815992 lq:0 lr:52 ls:37 |
3.Создаем шаблон с запуском поллера каждые 60 секунд, вместо дефолтных 300 секунд
(если используется запуск раз в 300 секунд , то импортируем шаблон, поставляемый в комплекте percona monitoring plugins)
1 |
# cd <path_to_percona_monitoring_plugins>/percona-monitoring-plugins-1.1.5/cacti/bin/ |
1 |
# ./pmp-cacti-template --script ../scripts/ss_get_by_ssh.php --poll_interval 60 ../definitions/redis.def > cacti_host_template_percona_redis_server_poll_interval_60.xml |
После чего импортируем вновь созданный шаблон
4.Добавляем мониторинг Redis к проверяемому хосту
1 |
Console->Device->Servername->Host Template->Percona Redis Server HT->Save |
5.Создаем графики
1 |
Console->Device->Servername->Create Graphs for this host-> |
1 2 3 4 |
Percona Redis Commands GT Percona Redis Connections GT Percona Redis Memory GT Percona Redis Unsaved Changes GT |
Примеры графиков
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/redis-templates.html
Источники:
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/ssh-based-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/redis-templates.html
https://www.percona.com/doc/percona-monitoring-plugins/1.1/cacti/customizing-templates.html