Мониторинг и статистика
Munin
Munin - на мой взгляд, надежный базовый мониторинг хостов основанный на RRDTool, с помощью которого можно смотреть на состояние хоста сверху укрупненно. Дает ясную картину по базовым вещам - сколько ресурсов есть у машины в целом.
Он кастомизируется, но для узких вещей я бы ставил более точные и интерактивные решения вроде Graphana + Prometeus.
На мой взгляд, munin должен быть установлен на каждом хосте, чтобы понимать что происходит с этой машиной.
Он поддерживает сбор метрик с нод по сети, однако в случае разрыва сети данные могут пропасть, поэтому каждая нода должна собирать данные сама себе.
Точно должны быть под мониторингом:
- Процессор
- Память
- Диск
- Сеть
- Хостовый Nginx
- Все базы данных работающие на этом хосте
sudo apt install munin munin-node spawn-fcgi nginx
cat /etc/hostname <HOSTNAME>
sudo nano /etc/munin/munin.conf #[<HOSTNAME>] # address 127.0.0.1 # use_node_name yes
Plugins
sudo nano /etc/munin/plugin-conf.d/munin-node sudo /etc/init.d/munin-node restart cd /etc/munin/plugins sudo ln -s /usr/share/munin/plugins/mysql_ mysql_mydb
NGINX
server { listen 172.17.0.1:64000; root /var/cache/munin/www; index index.html; access_log /var/log/nginx/munin.access.log; error_log /var/log/nginx/munin.error.log info; location / { alias /var/cache/munin/www/; } location /static/ { alias /etc/munin/static/; } location ^~ /cgi-bin/munin-cgi-graph/ { fastcgi_split_path_info ^(/cgi-bin/munin-cgi-graph)(.*); fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/var/run/munin/fastcgi-graph.sock; include fastcgi_params; } location /munin/ { fastcgi_split_path_info ^(/munin)(.*); fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/var/run/munin/fastcgi-html.sock; include fastcgi_params; } }
Troubleshooting
- https://guide.munin-monitoring.org/en/latest/tutorial/troubleshooting.html
- Plugins - test section https://guide.munin-monitoring.org/en/latest/plugin/use.html
sudo munin-check
# сбор данных sudo -u munin /usr/share/munin/munin-update --debug --nofork sudo -u munin /usr/share/munin/munin-limits --debug sudo -u munin /usr/share/munin/munin-graph --debug --nofork sudo -u munin /usr/share/munin/munin-html --debug --nofork sudo -u munin munin-cron --debug --nofork
Нет HTML файлов
sudo munin-check
Исправляем ошибки
sudo -u munin /usr/share/munin/munin-html --debug --nofork
Смотрим ERROR и исправляем
Нет данных у плагина
sudo munin-check
Исправляем ошибки
sudo munin-run -d myplugin
Смотрим выхлоп - должно быть в виде показатель число.
Обычно проблема в том, что нет нужного расширения PERL или нет доступа. Проверяем доступ вручную и доставляем расширения PERL
Например, для nginx
sudo apt install libwww-perl
Например, для mysql
sudo apt install libdbi-perl libcache-cache-perl libdbd-mysql-perl
Project
- NS серверы подвязаны к домену
host -t ns artem.aleksashkin.com dig ns artem.aleksashkin.com
- Резолвятся ли NS серверы с 2х серверов
dig ns1.aleksashkin.net dig ns2.aleksashkin.net
- Пингуются ли NS серверы с 2х серверов
ping ns1.aleksashkin.net ping ns2.aleksashkin.net
- Резолвят ли NS серверы домен корректно
dig ns1.aleksashkin.net artem.aleksashkin.com dig ns2.aleksashkin.net artem.aleksashkin.com
- Пинг домена с 2х адресов - время пинга должно быть адекватным
ping artem.aleksashkin.com
- Проверка открытости портов 80 и 443 для ip адреса домена
nmap -p80,443 artem.aleksashkin.com
- Проверка кода ответа для домена 200 или 301 для http
curl -I http://artem.aleksashkin.com
- Проверка сертификата для 443 https - валидность / как скоро истечет
curl --insecure -vvI https://artem.aleksashkin.com openssl s_client -connect artem.aleksashkin.com:443 </dev/null 2>/dev/null | openssl x509 -inform pem -text
- Проверка кода ответа для 443 https = 200 не пустой
curl -I https://artem.aleksashkin.com
- Проверка статусного endpoint - код ответа и парсинг статуса
curl https://artem.aleksashkin.com/api/status
- Выборочная проверка endpoint's
curl https://artem.aleksashkin.com/api/status curl https://artem.aleksashkin.com/api/version ...
Zabbix
Check that node is online
zabbix_get -s 172.17.0.1 -p 10050 -k agent.ping
Must be 1, if zabbix_get [18]: Check access restrictions in Zabbix agent configuration - change Server config
Agent
PidFile=/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix-agent/zabbix_agentd.log LogFileSize=0 DebugLevel=0 Server=172.16.0.0/12,192.168.0.0/16 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=172.17.0.1:10051 Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
Grafana
By Service
Nginx
- https://ealebed.github.io/posts/2016/%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D0%BC-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD-nginx-status-%D0%B2-munin/
- https://nginx.org/ru/docs/http/ngx_http_stub_status_module.html
- https://github.com/perusio/nginx-munin
- https://www.zabbix.com/integrations/nginx
MySQL
BIND9
- https://ixnfo.com/monitoring-bind9-v-zabbix.html
- https://github.com/Pesticles/Zabbix-Bind9-Statistics-Collection