Еще один способ логирования состояния сервера

В данной статье будет описан механизм мониторинга сервера. Суть мониторинга заключается в простом пробросе выходной информации на 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

Источники:

Print Friendly, PDF & Email

Добавить комментарий