Я использую Amazon EC2 для своего мобильного приложения. В зависимости от загрузки приложения в данный момент времени я могу создавать новые экземпляры, а затем снимать их, когда нагрузка ниже, чтобы сэкономить расходы.
Как не отставать от конфигураций Nagios для такой динамичной среды? Когда речь идет об управляемом оборудовании, файлы конфигурации предсказуемы. В этом случае необходимо добавить Nagios, Capistrano и кучу других файлов конфигурации. Capistrano необходимо знать, где развернуть новую сборку для сервера приложений. Nagios необходимо знать, чтобы удалить существующий экземпляр или добавить новый экземпляр для мониторинга. Nagios также необходимо знать, был ли узел намеренно отключен или хост отключен из-за ошибки.
Как это сделать с замечательным миром VPS / динамических экземпляров?
Написал свой собственный небольшой набор php-скриптов, которые записывают конфигурации nagios в файл. Nagios прост, потому что это просто текстовый файл, поэтому все, что вам нужно сделать, это создать шаблон для каждого типа сервера. Затем при запуске сервера добавьте файл, используя шаблон. Единственные данные, которые изменяются в файле - это ip и имя хоста.
Для более статичных серверов я создал скрипт, который запускается
ec2-describe-instances
и создает файл для каждого возвращаемого экземпляра. Каждый экземпляр помечен тегом: Purpose = XXXX, поэтому я знаю, какой шаблон применить.Для наших групп автоматического масштабирования мы настроили уведомление, используя
as-put-notification-configuration
команду, которая отправляет сообщение в очередь SQS. PHP-скрипт выполняется crontab. Когда скрипт выполняется, он проверяет очередь на наличие новых серверов. Всякий раз, когда он находит новый сервер, он создает новый файл. То же самое происходит, когда сервер удаляется. Возможно, проще использовать Chef или что-то еще, если вы уже используете его, но если вы этого не сделаете, вы можете написать простой php-сервис, как мой, через несколько дней.источник
Мы используем Opsview , который является еще одной оболочкой nagios + database + rest-api. Я не знаю, является ли это лучшим решением для всех (или даже для нас), но оно позволяет нам динамически настраивать сервер Nagios через простой REST API с узла (или другого административного узла), когда он подходит, и удалять его из конфигурация, когда это сделано. Я использую определения шаблонов хостов как часть манифеста Puppet сервера Opsview (/ Nagios), а отслеживаемые хосты просто регистрируются на нем и присоединяются к нужному шаблону хоста как часть их манифеста Puppet.
Puppet Stored Configuration - это более «универсальный» подход, который должен работать практически со всем, что угодно, даже с оригинальным Nagios и его статическими файлами. Это позволяет вам создавать сценарии для настройки любого инструмента, который вам нравится, на основе информации, которую собирает кукла его манифест.
Я бы посоветовал, чтобы в криминалистических целях вы не удаляли конфигурацию узла полностью, когда он отключен, а пытались заархивировать его и информацию мониторинга, собранную о нем, пока он был запущен.
источник
Пара способов.
Использование предварительно настроенных шаблонов Amazon EC2.
Использование манифестов кукол с изменяющимися шаблонами.
Настройте VPN между вашей сетью nagios и вашей виртуальной машиной Amazon. Тогда все виртуальные машины Amazon будут иметь статический IP-адрес, вы даже можете настроить DNS на них. У нас есть nagios, работающий и контролирующий все наши экземпляры Amazon. Нам даже не нужен эластичный IP. Мы используем openvpn для нашего VPN.
Постройте Nagios, который слушает внешнюю команду и обновляет ее конфигурацию соответственно. В конечном итоге машины могут регистрироваться, отменять регистрацию, приостанавливать работу и возобновлять свои действия на Nagios.
источник
У меня нет серебряной пули для решения этой проблемы с нагиосом. Но для capistrano есть capify-ec2 , расширение для capistrano, которое решает списки ролей сервера, используя возможности тегов amazon.
источник