opnSense: monit. базовый мониторинг.

Небольшая заметка, как на opnSense настроить простейший мониторинг сайтов.

Базовое окно настроек:

мы настраиваем:
* polling — время интервала опроса. В моем случае монит делает проверки раз в минуту.
* delay — задержка при старте. Чтобы не нагружать систему проверками при старте, проверки откладываются на некоторое время. В моем случае отложено на 1 минуту.
* далее настройки почтового сервера. Того, который будет рассылать почту. Если на opnSense стоит postfix или другой MTA, то можно оставить 127.0.0.1. В моем случае у меня есть open relay сервер в локалке, и мне нужно указать только адрес сервера. В вашем случае может понадобиться указать логин/пароль от почтового сервиса.

Далее настройка почты для оповещения:

Тут все очевидно. Когда добавляете адрес — то можно только его и вписать. После чего будут приходить оповещения о событиях.

Далее настроим сами проверки (хотя предлагается настроить сервисы):

Нажимаем + и заполняем:

Поля:
* name — очевидно. Но, тк сортировка в UI идет по алвавиту, то имеет смысл называть либо с порядковым номером ( 00-xyz, 01-abc), либо как в примере, записывать адреса в обратном порядке. Тогда все будет «сгруппировано» и удобно.
* condition — самое не очевидное поле, тк 1 — не понятно, что же на самом деле тут писать. 2 — как видно, пример взят не из документации. Но, он рабочий!
* action — все ясно понятно. что делать, если триггер сработал. Тк мы хотим получать оповещения — мы ставим alert.

И расшифровка condition:

FAILED (url https://redmine.example.com/login and content == 'Redmine' and timeout 5 seconds)

Что тут сказано: проверять https, redmine.example.com и локейшн /login. Так же проверяем наличие на странице слова Remine (можно использовать regexp’ы, но для базы норм). И даем до 5 секунд на получение результата.
И тут сразу становится понятно, почему condition не очевиден: почему failed? имхо, если бы требовали писать if, and и тд — то было бы понятнее. Но, чуть позже станет ясно как и что вписывать.

И теперь остается создать проверку сервиса — и там же будет указан адрес сервера:

Нажимаем плюс, и вводим:

По полям…
* name — ясно понятно. Логика такая же, как и в других полях — сортировка по алфавиту, поэтому я избрал путь обратной записи, чтобы домены были рядом.
* type — для наших проверок подходит два типа: process и remote host.
Для remote host доступны и некоторые другие проверки, но логично таки разделять сервера. Например, если у вас удаленный сервер содержит несколько сайтов, то вполне логично использовать 1 сервер, и несколько проверок на этот сервер. А если у вас все крутится внутри сети, и opnsense использует nginx для проксирования — то вполне логично использовать type process.
* address — адрес сервера. Можно IP вписать.
* start и stop — используются для команд запуска и остановки. В нашем случае не указываем.
* tests — как раз перечисляем все тесты, созданные на предыдущем шаге. + можно добавить предустановленный ping — тогда можно отлавливать скорость ответа или доступность сервера как такового.
* depends — указывает на зависимость от другой проверки. Те если основная проверка не работает, то тест будет пропущен… тк нет смысла прогонять тест, если нет интернета, например.

Далее сохраняем, и проверяем в статусе что проверки заработали. Так же не забываем протестировать, что проверки работают правильно. Попробуйте остановить веб сервер на проверяемом сервере, например.