LINUX.ORG.RU

Собственный веб интерфейс для Nagios/Naemon

 , , ,


0

1

Всем доброго времени суток!

Зашла задача мне с напарником: создать свой интерфейс для системы Naemon или Nagios. Языки: php и js. Фреймворки: laravel + vuejs.

Гуглил я очень много, и в принципе вроде бы как нашёл ответы и варианты того, как можно это сделать. Но все равно до конца не понятно как подобраться к данным, которые выдаёт нагиос. Думал взять графану и переделать ее визуализацию, но не уверен что можно ее менять там. В идеале, написать свой интерфейс, никак не связанный с другими платформами по типу графаны. Вопроса по сути 2:

  1. Реально ли в 2 человека написать свою морду для nagios?
  2. Есть ли какие-то инструменты, которые можно переоформить, дописать, переделать под свой дизайн?

Бесплатное ПО с открытым исходным кодом

  • Оба с открытым исходным кодом. Может, подходит как основа для вашего проекта

Statusengine

Фреймворки: Slim (php) и AngularJS

https://demo.statusengine.org/#!/dashboard

Github

openITCOCKPIT

Фреймворки: CakePHP (php) и AngularJS

https://demo.openitcockpit.io/#!/dashboards/index

Github

Реально ли в 2 человека написать свою морду для nagios?

  • Реально (Statusengine было разработано одним программистом в течение года)

Есть ли какие-то инструменты, которые можно переоформить, дописать, переделать под свой дизайн?

  • Конфигурацию или данные мониторинга?
ira_1337 ()
Ответ на: Бесплатное ПО с открытым исходным кодом от ira_1337

«Конфигурацию или данные мониторинга?» - ну вот как вы и описали, взять за основу и переваять. В целом, Statusengine наверное, то что надо. Я гляну как он реализован, и хочу с напарником написать на Laravel + VueJS

В целом, спасибо большое, вы дали ответ на мой вопрос. Мне осталось только разобрать один из проектов и понять каким образом они цепляются на ядро

Pasha_ua ()
Ответ на: Бесплатное ПО с открытым исходным кодом от ira_1337

Еще тогда к вам вопросик такой, буду очень благодарен за вашу консультацию. Вот Angular может использоваться в беке, и я наблюдаю что многие для написания веб морды в нагиосе используют его. Чем плохо, если я буду использовать Vuejs + php? Т.е. весь бек будет на php получается, потому что на Vue насколько я знаю нельзя писать бек

Pasha_ua ()
Ответ на: комментарий от Pasha_ua

Вот Angular может использоваться в беке

потому что на Vue насколько я знаю нельзя писать бек

А вы точно понимаете куда лезете, раз такое спрашиваете?

CryNet ★★★★ ()
Последнее исправление: CryNet (всего исправлений: 1)
Ответ на: комментарий от CryNet

Ну вот Angular или Vue будет для меня новинкой, но зная себя это не будет большим препятствием. Vue насколько я понимаю это библиотека по сути. На нем можно тоже что и на Angular?

Pasha_ua ()
Ответ на: комментарий от Pasha_ua

но зная себя это не будет большим препятствием

Это, скорее, касается Vue. В Angular больше всякого дрочева.

На нем можно тоже что и на Angular?

Ну-у-у можно сказать, что да. Про отличие отлично в wiki написано:

https://ru.vuejs.org/v2/guide/comparison.html#AngularJS-Angular-1

CryNet ★★★★ ()
Ответ на: комментарий от Pasha_ua

AngularJS != Angular

Angular имеет много компонентов для беке. AngularJS похож на jQuery (1 файл, который необходимо). По сути, это вопрос вкуса и требований, используете ли вы AngularJS или Vue.

В целом, спасибо большое, вы дали ответ на мой вопрос.

  • Пожалуйста :)
ira_1337 ()
Ответ на: комментарий от CryNet

Видел эту статью. Я по этому и выбрал Vue, понимая что там полегче будет чем Angular освоить. В целом, мне надо было понять что это реально сделать маленьким коллективом из двух человек. Времени и ресурсов достаточно, просто осталось понять как это все сконнектить правильно, и, собственно сконнектить). Хотя, Statusengine это слабенько, мы целимся на что-то типа Кокпита

Pasha_ua ()

Nagios страшный внутри и снаружи, как sendmail. Долго совсем не шевелился, сейчас что-то шевелится, но не выглядит, что хорошо. Зашел на github nagioscore взял комит пожирнее в районе 4.4.2, большая часть это переебанное форматирование - не ок.

anonymous ()
Ответ на: комментарий от ira_1337

Хорошо, кто-нибудь, может мне на одном из примеров (Icinga, NagiosXI, Кокпит) показать как происходит вывод данных на фронт? Я имею в виду, каким образом морда цепляется за данные, как она это делает?

По идее, из того что я искал, все упирается в базу данных. Я не могу понять как записывается и как берется инфа из базы данных, чтобы вывести на фронт. Как это в самом голом нагиосе я понял, но я не могу понять как это сделано в тех проектах, где есть своя веб морда. Вот это ключевая и самая главная проблема, и она же последняя, которую нужно решить.

Pasha_ua ()
Ответ на: комментарий от Pasha_ua

Для получения данных мониторинга в базу данных необходимо установить брокера.

Архитектура

Брокер для

Конфигурация мониторинга не записывается в базу данных. Её можно прочитать отдельно и при необходимости записать в базу данных.

ira_1337 ()
Ответ на: комментарий от Pasha_ua

насколько я помню у нагиоса нет «базы данных» в понимании других мониторингов, все данные добываются прямо сейчас, просмотр истории на основе парсинга логов.
но достаточно часто процесс сбрасывает состояние в файлик типа /usr/local/nagios/var/status.dat

развернутые настройки хостов/сервисов можно получить из /usr/local/nagios/var/objects.cache

bl ★★★ ()

делать именно вебморду нагиосу крайне неблагодарное занятие. если функционально чем-то не устраивает текущая морда - напилите свои расширения, разукрасьте css.
можно добавить функционала просто эксплуатируя макросы для ссылок,
типа $HOSTNOTESURL$ и тыкая их из вебморды. можно добавить «свои макросы».
возможно вы хотите визуализаций в графане, тогда поищите наверняка существует экспортёр из status.dat в прометеус. и может быть напилилите инструмент какой-то механизм упрощающий построение визуализаций, дашбордов на базе парсинга objects.cache. вот для быстрого доступа из нагиоса в графану будет удобен notes_url.

bl ★★★ ()
Ответ на: комментарий от ira_1337

«Её можно прочитать отдельно и при необходимости записать в базу данных.» - собственно, мне и нужно найти место в исинге или кокпите, и понять как они читают, записывают и выплевывают на фронт данные, чтобы сделать по аналогии так-же.

Pasha_ua ()
Ответ на: комментарий от bl

Мне нужно сделать вебморду не хуже кокпита. Помимо простого мониторинга мне нужно сделать чтобы пользователь мог это совать туда-сюда, добавлять хосты прямо в админке и тд. Собственно, как в кокпите, просто там насрано слишком сильно и нет всего что нужно.

Pasha_ua ()
Ответ на: комментарий от ira_1337

Вы меня уговариваете просто не делать морду свою, когда я прошу помочь в том чтобы ее написать)

Я ее буду писать в любом случае, мне зашла задача и мне нужно ее выполнить, вне зависимости от того что можно исполнить на кокпите или где угодно еще)

Pasha_ua ()

Вот єта штука на стороне нагисоа умеет инфу отдавать.

https://checkmk.com/cms_livestatus.html

https://www.naemon.org/documentation/usersguide/livestatus.html

А вообще, кому єтот нагиос нужен уже?

Берите icinga2. Не без приколов, но хотя б НА из коробки, SSL и мощная система шаблонов.

PunkoIvan ★★★ ()
Ответ на: комментарий от Pasha_ua

Вы меня уговариваете просто не делать морду свою, когда я прошу помочь в том чтобы ее написать)

Я не хотела вас убеждать брать кокпит. Это просто действительно много работы, пока такой продукт будет готов

Вот несколько примеров кода

Например: создать хост

Вот как это выглядит в openITCOCKPIT

Конфигурация Nagios записывается в веб-интерфейсе. После успешной проверки данные записываются в базу данных.

https://github.com/it-novum/openITCOCKPIT/blob/development/src/Controller/HostsController.php#L453-L544

Затем они экспортируются как файлы конфигурации Nagios.

https://github.com/it-novum/openITCOCKPIT/blob/bd28cee16556ec5109b4edc033a02a5398f70013/src/itnovum/openITCOCKPIT/Core/MonitoringEngine/NagiosConfigGenerator.php#L474-L755

После этого Nagios знает хоста и брокер записываетя данные мониторинга в базу

Для отображения списков статусов нужно прочитать таблицу ‘statusengine_hoststatus’.

https://github.com/it-novum/openITCOCKPIT/blob/bd28cee16556ec5109b4edc033a02a5398f70013/src/Controller/HostsController.php#L118-L269

ira_1337 ()