次の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
条件文の後に入れてください。