Чем мониторить состояние приложения?

Есть серверное приложение в виде демона. Задача следить за его состоянием и видеть значения потребления некоторых ресурсов (в том числе каких-то внутренних ресурсов, значение которых можно получить только изнутри приложения). Как лучше реализовать?

Приходят в голову варианты:
1. Zabbix или подобная система мониторинга. В таком случае нужно ли писать плагин для системы или лучше воспользоваться, например, SNMP? Плагин удовлетворяет всем требованиям, кроме того что это не универсально, хотелось бы чтобы не было привязки к конкретной системе мониторинга. SNMP — сразу отпугивает аутентификация, вернее её отсутствие (я не спец в администрировании, сужу по заббиксу, там просто вводится адрес SNMP-агента и все, никаких логинов-паролей) — это не приемлемо. Еще в заббиксе заметил IPMI, но это больше для настройки платформы, для мониторинга приложения наверное будет смотреться странно. JXM не подходит — не Java.
2. Мониторинг через веб. Проблем нет, кроме как в том, что это бесполезно. Да, можно будет посмотреть на меняющиеся циферки и красивые графики, но нужна нормальная система мониторинга, что-то унифицированное, поддерживающее автоматизацию и интегрированное с другими субъектами мониторинга.
3. Написать свою софтинку. Та же проблема что и в пункте 2.
4. Ну я не знаю. Может использовать какой-то сторонний сервис?

Меня бы больше всего устроил вариант с реализацией какого-нибудь стандартного протокола (например SNMP).

Что думаете по этому поводу? Если однозначный ответ дать сложно, то я был бы признателен, если бы вы оценили/сравнили существующие решения. И вообще, как эту проблему решают? (Ну не может же быть, чтобы весь мониторинг ограничивался только мониторингом апача/nginx/mysql?!)
  • Вопрос задан
  • 3841 просмотр
Решения вопроса 1
mgyk
@mgyk
Заббикс умеет выполнять любые команды в агенте. Вы можете добавить какой-нибудь простой CLI интерфейс к вашей системы, чтобы bin/status отдавал просто текстовые данные или искал по какому-то параметру.
У меня реализованно так, что приложения хранят свои статусы и основные показатели в Redis, а Zabbix читает оттуда. Получается, что со стороны заббикса, нужно знать только ключ, со стороны приложений редис и так везде используется
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rozhik
Конечно выбор Заббикс (или коммерческие системы мониторинга).
Не 2 по тому, что для мониторинга не редко нужно повышать уровень доступа (некоторые моменты можно узнать только руту, или кому-то из группы ХХХ). Через вэб такое делать… опасно.
Не 3. По тому что зачем писать то, что написано давно, и используется активно.
Не 4. По тому, что не все Вы сможете отдавать в наружу. Да и не доверяю я этим проксиагентам.

SNMP — сразу отпугивает аутентификация, вернее её отсутствие — всё хорошо с аутентификацией zabbix snmpv3 authpriv. Даже шифрование есть. Но кроме SNMP, к забиксу можно прикрутить любой транспорт или плагин. У меня к примеру он спрашивает о состояни баз и фронтов через WEB. В энтерпрайзах почти всегда мониторинг идет через SNMP. Есть даже железки, которые сериальный порт обворачивают в SNMP ;)
Короче почитайте в группах. Забиксовое комюнити умеет мониторить почти всё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы