다음 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
조건문 뒤에 넣으면 됩니다 .