以下rsyslog配置用于监控apache访问文件。
# Apache access file:
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
#$InputFileSeverity info //This is commented because I wanted to set this based on condition.
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == "apache-access" then {
if ($msg contains " 500 ") then $InputFileSeverity 'error';
action(type="ommysql" server="127.0.0.1" serverport="3306" db="Syslog" uid="rsyslog" pwd="somepasswd")
stop
}
这是使用 php 代码进行测试的header("HTTP/1.1 500 Internal Server Error")
并使用curl -I localhost/phpinfo.php
它返回 500。
然而,rsyslog 将其记录为Severity NOTICE
.它记录的设施是LOCAL0
。
我希望将严重性更改为消息中Error
是否有500
未按预期工作,并记录为“通知”。
谢谢。
答案1
设法弄清楚了。
# Apache access file:
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
#$InputFileSeverity crit
$InputFilePersistStateInterval 20000
if $programname == "apache-access" then {
#if ($msg contains " 500 ") then $InputFileSeverity error
if ($msg contains " 500 ") then $InputFileSeverity info
action(type="ommysql" server="127.0.0.1" serverport="3306" db="Syslog" uid="rsyslog" pwd="somepasswd")
stop
}
$InputRunFileMonitor
把 放在$InputRunFileMonitor
条件语句后面,就可以了。