将 SNMP 陷阱数据包传递给 Ubuntu 上的 php 守护程序
Pass SNMP trap packet to a php daemon on Ubuntu
我有一个 Ubuntu 服务器正在收集传入的 SNMP 陷阱。目前,这些陷阱是使用 PHP 脚本处理和记录的。
文件/etc/snmp/snmptrapd.conf
traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php
这个脚本比较长,包含了很多数据库操作。通常服务器每天会收到数千个陷阱,因此该脚本占用了太多 CPU 时间。我的理解是,这是由于每次收到陷阱时 php 脚本的高启动成本。
我收到重写此脚本的请求,我正在考虑 运行 此脚本作为守护程序。我可以创建一个 Ubuntu 守护程序。我的问题是如何使用 snmptrapd.conf
文件将陷阱处理程序传递给此守护程序?
提前致谢。
一个建议是使用 mysql 内置于 snmptrapd 5.5 中的支持。这样您就可以将 mysql 用作队列并批量处理陷阱。
详细信息在 snmptrapd 页面上:http://www.net-snmp.org/wiki/index.php/Snmptrapd
如果不使用 mysql 另一种选择是使用命名管道。
执行 mkfifo snmptrapd.log
现在更改 snmptrapd 以写入此日志。它不是一个文件,但它看起来像一个。然后您编写另一个守护进程来监视命名管道中的新数据。
您或许可以使用 php-fpm / php-fcgi 来最小化 PHP 脚本启动成本。
不过,您可能需要编写一些包装器 shell 脚本来将请求从 snmptrapd 转发到 fcgi 协议。
但首先我建议检查 PHP 脚本。 PHP 启动成本并没有那么高,每分钟很少的请求应该显着增加 CPU 使用率。
我有一个 Ubuntu 服务器正在收集传入的 SNMP 陷阱。目前,这些陷阱是使用 PHP 脚本处理和记录的。
文件/etc/snmp/snmptrapd.conf
traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php
这个脚本比较长,包含了很多数据库操作。通常服务器每天会收到数千个陷阱,因此该脚本占用了太多 CPU 时间。我的理解是,这是由于每次收到陷阱时 php 脚本的高启动成本。
我收到重写此脚本的请求,我正在考虑 运行 此脚本作为守护程序。我可以创建一个 Ubuntu 守护程序。我的问题是如何使用 snmptrapd.conf
文件将陷阱处理程序传递给此守护程序?
提前致谢。
一个建议是使用 mysql 内置于 snmptrapd 5.5 中的支持。这样您就可以将 mysql 用作队列并批量处理陷阱。
详细信息在 snmptrapd 页面上:http://www.net-snmp.org/wiki/index.php/Snmptrapd
如果不使用 mysql 另一种选择是使用命名管道。
执行 mkfifo snmptrapd.log 现在更改 snmptrapd 以写入此日志。它不是一个文件,但它看起来像一个。然后您编写另一个守护进程来监视命名管道中的新数据。
您或许可以使用 php-fpm / php-fcgi 来最小化 PHP 脚本启动成本。
不过,您可能需要编写一些包装器 shell 脚本来将请求从 snmptrapd 转发到 fcgi 协议。
但首先我建议检查 PHP 脚本。 PHP 启动成本并没有那么高,每分钟很少的请求应该显着增加 CPU 使用率。