В данной статье будет описан механизм мониторинга сервера. Суть мониторинга заключается в простом пробросе выходной информации на tcp-сервер, который ее в последствии и обработает:
- [remote server] — IP или доменное имя TCP сервера для обработки информации
- [port] — порт сервера
Каталог для хранения bash-скриптов находиться по адресу /var/lib/big-brother
Примечание: если нет такого каталога, то нужно его создать.
Мониторинг чтения-записи диска
sudo su cd /var/lib/big-brother touch iotop-monitor.sh chmod 777 iotop-monitor.sh
В созданный файл iotop-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Мониторинг чтения-записи диска echo "$(iostat -d -k -z)" > /dev/tcp/[remote server]/[port]
Далее создаем новый сервис iotop-monitor.service:
[Unit] Description=Мониторинг чтения-записи диска After=network-online.target [Service] User=root Restart=on-failure ExecStart=/var/lib/big-brother/iotop-monitor.sh [Install] WantedBy=multi-user.target
Запускаем его:
systemctl enable iotop-monitor.service systemctl start iotop-monitor.service
Добавляем в crontab:
sudo su crontab -e */10 * * * * systemctl restart iotop-monitor
Мониторинг основных показателей сервера
sudo su cd /var/lib/big-brother touch top-monitor.sh chmod 777 top-monitor.sh
В созданный файл top-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Проверка состояния сети top -bi > /dev/tcp/[remote server]/[port]
Далее создаем новый сервис top-monitor.service:
[Unit] Description=Мониторинг показателей сервера After=network-online.target [Service] User=root Restart=on-failure ExecStart=/var/lib/big-brother/top-monitor.sh [Install] WantedBy=multi-user.target
Запускаем его:
systemctl enable top-monitor.service systemctl start top-monitor.service
Добавляем в crontab:
sudo su crontab -e */10 * * * * systemctl restart top-monitor
Мониторинг сети
Устанавливаем приложение:
apt install vnstat
sudo su cd /var/lib/big-brother touch net-monitor.sh chmod 777 net-monitor.sh
В созданный файл net-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Проверка состояния сети vnstat -d > /dev/tcp/[remote server]/[port]
Добавляем в crontab:
sudo su crontab -e * * * * * /var/lib/big-brother/net-monitor.sh
sudo su cd /var/lib/big-brother touch vnstat-monitor.sh chmod 777 vnstat-monitor.sh
В созданный файл vnstat-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Проверка состояния сети vnstat -l -i eth0 > /dev/tcp/[remote server]/[port]
Далее создаем новый сервис vnstat-monitor.service:
[Unit] Description=Мониторинг состояния сети - трафик After=network-online.target [Service] User=root Restart=on-failure ExecStart=/var/lib/big-brother/vnstat-monitor.sh [Install] WantedBy=multi-user.target
Запускаем его:
systemctl enable vnstat-monitor.service systemctl start vnstat-monitor.service
Добавляем в crontab:
sudo su crontab -e */10 * * * * systemctl restart vnstat-monitor
Мониторинг дискового пространства
sudo su cd /var/lib/big-brother touch df-monitor.sh chmod 777 df-monitor.sh
В созданный файл df-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Проверка свободного места на сервере df -k > /dev/tcp/[remote server]/[port]
Далее добавляем обработчик в crontab:
* * * * * /var/lib/big-brother/df-monitor.sh
Мониторинг транзакций PostgreSQL 10
sudo su - postgres cd /var/lib/big-brother touch psql-monitor.sh chmod 777 psql-monitor.sh
В созданный файл psql-monitor.sh вставляем bash-скрипт ниже:
#!/bin/bash #author: Aleksandr Krasnov #description: Проверка количество транзакция и подключений к БД exec 3>/dev/tcp/[remote server]/[port] psql -U postgres -d postgres -c "SELECT datname, xact_commit, now(), numbackends FROM pg_stat_database" >&3
Далее добавляем обработчик в crontab:
* * * * * /var/lib/big-brother/psql-monitor.sh
* — обработчик выполняется каждую минуту.
Автоматическое «обслуживание»
#!/bin/bash echo "запуск обслуживания" psql -U postgres -d big-brother -c "select dbo.sf_remove_outdated();" psql -U postgres -d big-brother -c "VACUUM FULL VERBOSE ANALYZE"; echo "Завершено"
Добавление в crontab:
0 0 * * * /var/lib/postgresql/big-brother.sh
Источники: