监控PHP fatal errors错误日志发送邮件

最近自己搞的小项目php报错几天后才被人发现,看来来个监控十分重要了。需要自动监控error_log一有新错误发送邮件通知下技术员,发现SEC -simple event correlator这个强大稳定的工具可以满足我的需要。

SEC是一个Perl脚本(〜11k行代码!),当有致命错误时,SEC会向您发送通知。可以使用正则表达式来查找需要发送的内容。所以您可以将其用于更复杂的设置,如应用程序日志或Web服务器访问日志~~~

  1. 安装 EPEL 资源
    sudo yum install epel-release
    
  2. 安装SEC
    yum install sec
    
  3. 配置SEC
    vim /etc/sec/php.conf  
    
    type=Single
    ptype=RegExp
    pattern=^\[.+\] PHP Fatal error.+$
    desc=PHP error
    action=add nginx-php-errors $0
    
    type=Calendar
    time=* * * * *
    desc=Mail web errors
    context=nginx-php-errors
    action=report nginx-php-errors /bin/mail -s "example.com PHP errors" admin@example.com; delete nginx-php-errors;
    
  4. 启动配置
    vim /etc/sysconfig/sec
    
    SEC_ARGS[0]="-detach --conf=/etc/sec/php.conf --input=/var/log/php-fpm/example.com-error.log -log=/var/log/sec -intevents -pid=/var/run/sec.pid --debug=6"
    
    #加载多配置
    SEC_ARGS[1]="-detach --conf=/etc/sec/php2.conf --input=/var/log/php-fpm/example2.com-error.log -log=/var/log/sec -intevents -pid=/var/run/sec2.pid --debug=6"
    
  5. 启动
    service sec start
    #自启动
    chkconfig sec on
    

参考

Sending alerts for PHP fatal errors

发表评论

电子邮件地址不会被公开。 必填项已用*标注