将SNMP陷阱数据包传递给Ubuntu上的php守护进程

将SNMP陷阱数据包传递给Ubuntu上的php守护进程,php,ubuntu,daemon,snmpd,Php,Ubuntu,Daemon,Snmpd,我有一个Ubuntu服务器,它正在收集传入的SNMP陷阱。目前,这些陷阱是使用PHP脚本处理和记录的 文件/etc/snmp/snmptrapd.conf traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php 这个脚本相当长,它包含许多数据库操作。通常服务器每天接收数千个陷阱,因此此脚本占用了太多的CPU时间。我的理解是,这是因为每次收到陷阱时php脚本的启动成本很高 我收到一个重新编写此脚本的请求,我正在考虑将此

我有一个Ubuntu服务器,它正在收集传入的SNMP陷阱。目前,这些陷阱是使用PHP脚本处理和记录的

文件
/etc/snmp/snmptrapd.conf

traphandle default /home/svr/00-VHOSTS/nagios/scripts/snmpTrap.php
这个脚本相当长,它包含许多数据库操作。通常服务器每天接收数千个陷阱,因此此脚本占用了太多的CPU时间。我的理解是,这是因为每次收到陷阱时php脚本的启动成本很高

我收到一个重新编写此脚本的请求,我正在考虑将此脚本作为守护进程运行。我可以创建一个Ubuntu守护进程。我的问题是如何使用
snmptrapd.conf
文件将陷阱处理程序传递给这个守护进程


提前感谢。

一个建议是使用内置于snmptrapd 5.5中的mysql支持。这样,您就可以使用mysql作为队列并批量处理陷阱

有关详细信息,请参见snmptrapd页面:

如果不使用mysql,另一个选择是使用命名管道

执行mkfifo snmptrapd.log
现在将snmptrapd更改为写入此日志。它不是一个文件,但看起来像一个。然后编写另一个守护进程来监视命名管道中的新数据。

您可能可以使用php fpm/php fcgi来最小化php脚本的启动成本

尽管如此,您可能需要编写一些包装器shell脚本来将请求从snmptrapd转发到fcgi协议


但首先我建议检查PHP脚本。PHP的启动成本并没有那么高,每分钟很少有请求会显著提高CPU使用率。

谢谢您的回答。但我使用的是PSQL。我修改了我的答案,建议使用命名管道。