Как вы справляетесь с конфигами Nagios / Capistrano при использовании EC2?

11

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

Как не отставать от конфигураций Nagios для такой динамичной среды? Когда речь идет об управляемом оборудовании, файлы конфигурации предсказуемы. В этом случае необходимо добавить Nagios, Capistrano и кучу других файлов конфигурации. Capistrano необходимо знать, где развернуть новую сборку для сервера приложений. Nagios необходимо знать, чтобы удалить существующий экземпляр или добавить новый экземпляр для мониторинга. Nagios также необходимо знать, был ли узел намеренно отключен или хост отключен из-за ошибки.

Как это сделать с замечательным миром VPS / динамических экземпляров?

образный
источник

Ответы:

9

Мы используем инструмент управления конфигурацией (в нашем случае Chef), который записывает конфигурацию Nagios из информации об узле.

CJC
источник
1
Конечно, использование Puppet / Chef само собой разумеющееся. Но хитрость заключается в том, как сделать конфигурацию для каждого узла управляемой (например, не нужно реплицировать списки узлов в конфигурации Puppet сервера Nagios) и при этом заставить сервер Nagios отслеживать добавленные / удаленные / измененные узлы. Я касаюсь этого момента в своем ответе ниже.
Амос Шапира
3

Написал свой собственный небольшой набор php-скриптов, которые записывают конфигурации nagios в файл. Nagios прост, потому что это просто текстовый файл, поэтому все, что вам нужно сделать, это создать шаблон для каждого типа сервера. Затем при запуске сервера добавьте файл, используя шаблон. Единственные данные, которые изменяются в файле - это ip и имя хоста.

Для более статичных серверов я создал скрипт, который запускается ec2-describe-instancesи создает файл для каждого возвращаемого экземпляра. Каждый экземпляр помечен тегом: Purpose = XXXX, поэтому я знаю, какой шаблон применить.

Для наших групп автоматического масштабирования мы настроили уведомление, используя as-put-notification-configurationкоманду, которая отправляет сообщение в очередь SQS. PHP-скрипт выполняется crontab. Когда скрипт выполняется, он проверяет очередь на наличие новых серверов. Всякий раз, когда он находит новый сервер, он создает новый файл. То же самое происходит, когда сервер удаляется. Возможно, проще использовать Chef или что-то еще, если вы уже используете его, но если вы этого не сделаете, вы можете написать простой php-сервис, как мой, через несколько дней.

bwight
источник
1

Мы используем Opsview , который является еще одной оболочкой nagios + database + rest-api. Я не знаю, является ли это лучшим решением для всех (или даже для нас), но оно позволяет нам динамически настраивать сервер Nagios через простой REST API с узла (или другого административного узла), когда он подходит, и удалять его из конфигурация, когда это сделано. Я использую определения шаблонов хостов как часть манифеста Puppet сервера Opsview (/ Nagios), а отслеживаемые хосты просто регистрируются на нем и присоединяются к нужному шаблону хоста как часть их манифеста Puppet.

Puppet Stored Configuration - это более «универсальный» подход, который должен работать практически со всем, что угодно, даже с оригинальным Nagios и его статическими файлами. Это позволяет вам создавать сценарии для настройки любого инструмента, который вам нравится, на основе информации, которую собирает кукла его манифест.

Я бы посоветовал, чтобы в криминалистических целях вы не удаляли конфигурацию узла полностью, когда он отключен, а пытались заархивировать его и информацию мониторинга, собранную о нем, пока он был запущен.

Амос Шапира
источник
1

Пара способов.

  • Использование предварительно настроенных шаблонов Amazon EC2.

  • Использование манифестов кукол с изменяющимися шаблонами.

  • Настройте VPN между вашей сетью nagios и вашей виртуальной машиной Amazon. Тогда все виртуальные машины Amazon будут иметь статический IP-адрес, вы даже можете настроить DNS на них. У нас есть nagios, работающий и контролирующий все наши экземпляры Amazon. Нам даже не нужен эластичный IP. Мы используем openvpn для нашего VPN.

  • Постройте Nagios, который слушает внешнюю команду и обновляет ее конфигурацию соответственно. В конечном итоге машины могут регистрироваться, отменять регистрацию, приостанавливать работу и возобновлять свои действия на Nagios.

Чакри
источник
0

У меня нет серебряной пули для решения этой проблемы с нагиосом. Но для capistrano есть capify-ec2 , расширение для capistrano, которое решает списки ролей сервера, используя возможности тегов amazon.

теист
источник