Получение оповещений от удаленного экземпляра Icinga/Nagios
У меня есть сервер Icinga (который в основном является форком Nagios) на одном из сайтов моих клиентов. Я получаю доступ к серверу через ssh
и не имеют доступа к другим портам.
Так как на этом сайте может быть несколько вещей, я предпочитаю проверять сайт хотя бы ежедневно. Поэтому я запускаю следующую команду:
ssh -L 8080:localhost:80 user@remote.host
и проверьте веб-интерфейс Icinga в моем браузере по адресу:
http://localhost:8080
Довольно стандартный.
Проблема в том, что, если бы у меня было больше таких клиентов, подключение к каждому из этих серверов было бы болезненным. Наиболее приемлемым решением было бы настроить почтовые оповещения на этих хостах, к сожалению, эти машины не имеют доступа в Интернет, и ssh, через который я к ним обращаюсь, является единственным контактом с ними.
Есть ли способ собрать информацию из этих экземпляров через ssh? Допустим, Icinga сбрасывает текущие предупреждения в файл, и я scp
этот файл в мой локальный экземпляр? Или любое другое решение?
Я был бы очень признателен за возможность приходить на работу и видеть какие-либо оповещения в каком-то месте (локальная панель инструментов, почта, что угодно).
РЕДАКТИРОВАТЬ Удаленный сайт должен иметь свою собственную настройку Icinga, так что любой в этой сети может проверить оповещения в нем. Кроме того, я хотел бы иметь на своем месте локальный экземпляр, который бы агрегировал эти удаленные экземпляры и отображал только предупреждения от них. Таким образом, я мог бы настроить его так, чтобы он отправлял электронную почту по оповещениям (отправленным из моего локального экземпляра Icinga)
3 ответа
Объедините SSH-туннелирование, предложенное slm, с одной из различных надстроек, предоставляющих статус nagios/icinga через XML/JSON/SOAP/ что угодно.
Затем вам нужно написать (найти?) Сценарий, который может очистить состояние от всех этих различных локальных:8080, локальных:8081 и т. Д., Возможно, используя check_multi или эквивалентный.
Он будет несколько хрупким, но с тщательно определенными зависимостями и инструментом, позволяющим держать эти туннели открытыми, он может работать.
Для начала вы можете назначить каждому сайту определенный порт 8080, 8081 и т. Д., А затем использовать что-то вроде autossh для поддержки соединений. Тогда вы будете подключены, и вам просто нужно перейти с 8080 на 8081, чтобы проверить каждый сайт, который вы подключили к спроектированному локальному порту.
Этот тип подхода может быть расширен таким образом, чтобы вместо того, чтобы смотреть на локальный порт каждого сайта, вместо этого можно было бы выполнить проверку скриптом. В зависимости от того, что находится на сайте Icinga каждого сайта, вы можете периодически проверять его на своем собственном сайте Nagios/Icinga, который был настроен для проверки различных вещей, которые вы проверяли вручную.
Очень сложно предоставить больше информации без каких-либо подробностей.
Обычно решением было бы установить распределенную установку Nagios с NSCA. Однако, поскольку вы говорите, что у вас нет доступа к Интернету с этих хостов, а SSH - это все, что вы можете сделать, вам придется проявить немного больше творчества. Вероятно, лучше всего поддерживать сеансы SSH, как вы сейчас, но с удаленной переадресацией портов (-R вместо -L), чтобы обеспечить сокет для NSCA для отправки результатов в централизованный Nagios. Вы также можете иметь удаленный Nagios записывать результаты в файл, использовать SSH для извлечения этого файла и воспроизведения его на центральном сервере Nagios. Так или иначе. Затем вы можете посмотреть на веб-интерфейс в центральной Nagios и увидеть результаты для всех ваших сайтов. (Вам необходимо выполнить некоторое управление конфигурацией; все точки мониторинга, которые вы определили для каждого хоста, должны быть зеркально отражены на центральном сервере.)