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.php500을 반환합니다.

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

관련 정보