Rsyslog 有条件地提高文件监控不起作用的严重性

Rsyslog 有条件地提高文件监控不起作用的严重性

以下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条件语句后面,就可以了。

相关内容