monit — простой мониторинг
TRANSCRIPT
monitпростой мониторинг
Задача▪ Следить за состоянием процессов
▪ Поднимать упавшие
▪ Опускать сбоящие
▪ Перезапускать зависшие
Задача▪ Предпринимать любые действия по гибко
заданным событиям
▪ Уведомлять администраторов и вести журналы
monit▪ Это один (1) небольшой процесс
▪ Это один (1) конфиг-файл
▪ Полноценный мониторинг
▪ Настраиваемые уведомления по SMTP
▪ Автоматическое восстановление сервисов
▪ Удобный доступ из консоли
▪ Встроенный веб-интерфейс
▪ Журналирование в syslog или отдельный log-файл
Процессы▪ Существование, по pid-файлу
▪ Изменения PID
▪ Изменения PPID
▪ Количество потомков
▪ Загрузка процессора (с потомками)
▪ Загрузка памяти (с потомками и без)
Процессыif 2 restarts within 3 cycles then timeoutif totalmem > 100 Mb then alertif children > 255 for 5 cycles then stopif cpu usage > 95% for 3 cycles then restart
Сервисы▪ Удалённые и локальные
▪ Проверка по протоколам
• http, ftp, imap, mysql, pgsql, smtp, ntp, pop, dns,
ssh, …
▪ Поддержка SSL/TLS с проверкой подписи
• https, ftps, imaps, pops, …
▪ UDP, TCP, ICMP, Unix domain sockets
▪ Произвольно заданный текстовый протокол
Сервисыif failed url
http://bill:[email protected]:81/?queryand content == 'my.*regex' then alert
if failed icmp type echo count 5with timeout 15 secondsthen alert
if failed port 80 proto http then alertif failed port 443 type TCPSSL proto http
then alertif failed host cave.persia.ir port 4040
send "Open, Sesame!\r\n"expect "Please enter the cave\r\n"
then restart
Файлы и папки▪ Контрольная сумма md5 или sha1
▪ Время изменения (mtime)
▪ Размер
▪ Содержимое (regex)
▪ Флаги
▪ Разрешения
▪ Пользователь, группа
Файлы и папкиif changed checksum then exec "echo 123"if failed checksum andexpect the sum 8f7f419955cefa0b33a2ba316cba3659then alert
if changed timestamp then exec 'apache.sh restart'if size > 50 MB then exec 'logrotate'if match 'Houston, we have a problem' then alertcheck file su with path /bin/su
if changed size then exec "ifconfig fxp0 down"
Файловые системыcheck device rootfs with path /dev/hda1if space usage > 80% 5 times within 15 cycles
then alertelse if passed for 10 cycles then alert
if space usage > 90% for 5 cycles thenexec '/try/to/free/the/space'
if space usage > 99% then exec 'kill -9 1'
Удалённые файлы▪ Доступ по HTTP
▪ Проверка контрольной суммы md5 или sha1
if failed port 80 protocol httpand request "/page.html"with checksum 350d6c0157a04c84012475bd87609db4then alert
Системаif loadavg (1min) > 4 then alertif loadavg (5min) > 2 then alertif memory usage > 75% then alertif cpu usage (user) > 70% then alertif cpu usage (system) > 30% then alertif cpu usage (wait) > 20% then alert
Действия▪ уведомление
▪ запуск, остановка, перезапуск
▪ исполнение любого скрипта или программы
• под любыми пользователем и группой
▪ включение, выключение мониторинга
Уведомления▪ полностью настраиваемый формат
▪ легко автоматически обрабатывать
▪ буфер любого размера на случай временногоотказа почты
CLI-интерфейсmonit summary
The monit daemon 4.10.1 uptime: 10h 53mProcess 'vpnc' runningSystem 'pollux.cenkes.org' running
monit statusmonit reloadmonit validatemonit restart apachemonit restart all
Недостатки▪ Однотредовый, синхронный
▪ Нет произвольных проверок (скриптами)
▪ Плохо расширяем
• Кто портирует на Perl?
▪ Не рассчитан near-realtime проверки
Преимущества▪ Предельная простота
▪ Быстрый и маленький процесс
▪ Чаще удобней запустить monit, чем написатькостыль