我有一个Ubuntu服务器,它正在收集传入的SNMP陷阱。目前,这些陷阱是使用PHP脚本处理和记录的。
文件/etc/snmp/snmptrapd.conf
traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php这个脚本很长,包含许多数据库操作。通常,服务器每天收到数千个陷阱,因此这个脚本占用了太多的CPU时间。我的理解是,这是因为每次收到陷阱时,php脚本的启动成本都很高。
我收到了重写这个脚本的请求,我正在考虑将这个脚本作为一个守护进程运行。我可以创建一个Ubuntu守护进程。我的问题是如何使用snmptrapd.conf文件将陷阱处理程序传递给这个守护进程?
提前谢谢你。
发布于 2015-05-09 03:04:39
一个建议是使用内置于snmptrapd 5.5中的mysql支持。这样,您可以使用mysql作为队列,并批量处理陷阱。
详细信息见snmptrapd页面:http://www.net-snmp.org/wiki/index.php/Snmptrapd。
如果不使用mysql,另一个选项是使用命名管道。
现在执行mkfifo snmptrapd.log更改snmptrapd以写入此日志。它不是一个文件,但它看起来像一个。然后编写另一个守护进程来查看命名管道中的新数据。
发布于 2015-05-10 13:19:58
您可能可以使用PHP /PHP来最小化PHP脚本的启动成本。
尽管如此,您可能需要编写一些包装外壳脚本来将请求从snmptrapd转发到fcgi协议。
但首先,我建议检查PHP脚本。PHP启动成本并不是很高,每分钟很少的请求应该显著提高CPU的使用率。
https://stackoverflow.com/questions/30114168
复制相似问题