У меня есть сервер Ubuntu, который собирает входящие SNMP-ловушки. В настоящее время эти ловушки обрабатываются и регистрируются с использованием сценария PHP.
файл /etc/snmp/snmptrapd.conf
traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php
Этот скрипт довольно длинный и содержит много операций с базой данных. Обычно сервер получает тысячи прерываний в день, и поэтому этот сценарий отнимает слишком много процессорного времени. Насколько я понимаю, это связано с высокой стоимостью запуска php-скрипта каждый раз, когда ловушка получена.
Я получил запрос переписать это, и я думал о запуске этого скрипта в качестве демона. Я могу создать демон Ubuntu. У меня вопрос, как я могу передать trap-обработчик этому демону, используя snmptrapd.conf
файл?
Заранее спасибо.
Одно из предложений — использовать поддержку mysql, встроенную в 5.5 snmptrapd. Таким образом, вы можете использовать mysql в качестве очереди и массово обрабатывать ловушки.
подробности об этом на странице snmptrapd: http://www.net-snmp.org/wiki/index.php/Snmptrapd
Если не используется mysql, другой вариант — использовать именованный канал.
Делай mkfifo snmptrapd.log
Теперь измените snmptrapd для записи в этот журнал. Это не файл, но выглядит как один. Затем вы пишете другого демона, чтобы наблюдать за именованным каналом на наличие новых данных.
Вероятно, вы можете использовать php-fpm / php-fcgi, чтобы минимизировать стоимость запуска PHP-скрипта.
Хотя вам, вероятно, нужно написать сценарий оболочки-оболочки для пересылки запроса из snmptrapd в протокол fcgi.
Но сначала я бы порекомендовал проверить скрипт PHP. Стоимость запуска PHP не так высока, что несколько запросов в минуту должны значительно увеличить загрузку процессора.