Мы используем Nagios для мониторинга довольно большого количества (~ 130) серверов. Мы отслеживаем ЦП, диск, оперативную память и некоторые другие вещи на каждом сервере. Я всегда использовал SSH для запуска удаленных команд, просто потому, что он практически не требует дополнительной конфигурации на удаленном сервере, просто установите nagios-plugins, создайте пользователя nagios и добавьте ключ SSH, все из которых я автоматизировал в сценарий оболочки. На самом деле я никогда не рассматривал влияние использования SSH поверх NRPE на производительность.
Меня не слишком беспокоит нагрузка на сервер Nagios (вероятно, он перегружен для того, что он делает, он никогда не превышал 10% ЦП), но мы запускаем каждую удаленную проверку каждые 30 секунд, и каждый сервер имеет 5 разных проверок выполнено. Я предполагаю, что SSH требует больше ресурсов для каждой проверки, но есть ли большая разница? (То есть достаточно большой разницы, чтобы гарантировать переход на NRPE).
Если это поможет, мы отслеживаем сочетание физических серверов (обычно с 8, 12 или 16 физическими ядрами) и средних / больших инстансов Amazon EC2.
NRPE - это плагин nagios, его легко установить, и он управляет запросом проверки в файле конфигурации зонда. В nrpe есть только одна плохая вещь: вам нужно установить его на каждый сервер, который вы хотите отслеживать, в ОС Linux это действительно просто, просто yum / apt-get install nrpe, но на сервере Windows вам нужно установить его через .exe , а иногда вам потребуется перезагрузить сервер.
Я думаю, что SSH - не самый оптимизированный способ использования nagios. NRPE мог бы быть намного более эффективным.
Здесь, в документации nagios, есть это предложение:
«Использование SSH более безопасно, чем надстройка NRPE, но оно также увеличивает накладные расходы (ЦП) как на мониторинговые, так и на удаленные машины. Это может стать проблемой, когда вы начинаете отслеживать сотни или тысячи машин. Многие администраторы Nagios предпочитают использовать используя аддон NRPE из-за меньшей нагрузки ».
Что касается меня, я использую протокол snmp, который прост в использовании и не требует установки сторонних производителей на серверах.
Я всегда верил в преимущества SSH для администрирования (я использую push_check) перевешивает любую дополнительную нагрузку. Современные процессоры настолько быстры, что стоимость шифрования нескольких байтов довольно минимальна, поэтому все сводится к запуску двух процессов (SSH и сценарий проверки) против одного (сценарий проверки запускается NRPE).
Для проверочных скриптов, написанных на интерпретируемом языке, я ожидаю, что накладные расходы на запуск интерпретатора (Perl, Python, Bash) превысят затраты ЦП на запуск сеанса SSH. Учитывая современные процессоры, ваши машины, скорее всего, будут ограничены диском или памятью, а не ЦП.
Если ваша машина Nagios справляется - она должна устанавливать 20 SSH-соединений каждую секунду - я бы ошибся в части удобства.
Не совсем ответ на ваш вопрос, скорее аргумент, что жизнь слишком коротка, чтобы об этом беспокоиться :)
Помимо предложений, приведенных в других ответах, рассматриваете ли вы возможность включения ControlMaster
в файле .ssh / config nagios, чтобы в полной мере использовать ssh мультиплексирование?
Другими словами, ваше SSH-соединение будет «оставаться включенным», поэтому накладные расходы на его установление минимальны, поскольку это произойдет только один раз. Это по-прежнему будет гарантировать конфиденциальность с помощью шифрования и защитит вас от того, чтобы оставлять открытые TCP-порты на серверах (хотя и с брандмауэром). Кроме того, вы можете ограничить действия пользователя через ssh с помощью ограничение команд, которые он может выполнять
У меня не было ничего, кроме проблем с попыткой скомпилировать NRPE на различных ОС. SSH работает гладко и эффективно, и его гораздо проще написать скриптом.