26
monit простой мониторинг

monit — простой мониторинг

Embed Size (px)

Citation preview

monitпростой мониторинг

www.princexml.com
Prince - Non-commercial License
This document was created with Prince, a great way of getting web content onto paper.

Задача▪ Следить за состоянием процессов

▪ Поднимать упавшие

▪ Опускать сбоящие

▪ Перезапускать зависшие

Задача▪ Предпринимать любые действия по гибко

заданным событиям

▪ Уведомлять администраторов и вести журналы

Решение▪ Nagios?

▪ Zabbix?

▪ OpenView?

▪ Дорого и сложно

Решение▪ djb daemontools?

▪ Apple launchd?

▪ Sun SMF?

▪ Ubuntu Upstart?

▪ Непортируемо и напутано

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"

Файловые системы▪ Свободное место

▪ Использование inode-ов

Файловые системы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

Система▪ Средняя загрузка за 1, 5, 15 минут

▪ Загрузка процессора

• user, system

▪ Загрузка памяти

Система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

Действия▪ уведомление

▪ запуск, остановка, перезапуск

▪ исполнение любого скрипта или программы

• под любыми пользователем и группой

▪ включение, выключение мониторинга

Действияthen alertthen stopthen restartthen exec 'true' as uid 1 gid 1then unmonitor

Уведомления▪ полностью настраиваемый формат

▪ легко автоматически обрабатывать

▪ буфер любого размера на случай временногоотказа почты

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, чем написатькостыль

mmonit.com/monit/