2016-08-28 3 views
1

시스템의 모든 로그를 redis 데이터베이스로 보내려고합니다. 이를 위해 은 "/etc/rsyslog.d/redis.conf"파일에 다음과 같은 구성을 가지고 있습니다.
큐 모드를 사용하여 here의 지침을 따랐습니다.
가 위의 구성은 데이터베이스하지만 모든 로그에 대한
에 대해 "키를"레디 스에 로그를 기록 같은 즉 "testqueue"남아 : ​​rsyslog 작업의 동적 키 이름

module(load="omhiredis") 

action(
    name="push_redis" 
    type="omhiredis" 
    mode="queue" 
    key="testqueue" 
)   

문제가 :
을 따르는 것은 내가 가지고있는 구성입니다. 프로그램 로그, 새 키가
프로그램의 이름과 동일하다 레디 스 만들어야합니다

Expected Output : 

내가 원하는. 그러면 모든 프로그램을 개별적으로
의 로그에서 확인할 수 있습니다.

Attempts : 

나는 다음과 같이 필터를 사용하여 시도 :

if $programname == 'logger' then { 
    action(
     name="push_redis" 
     type="omhiredis" 
     mode="queue" 
     key="logger" 
    ) 
} 

을하지만 그때 나는
하지만 허용 솔루션 수있는 모든 프로그램에 대한 필터를 작성해야합니다.

Is there any way to create a key dynamically when a program logs into redis ? 

시간을내어 질문을 읽어 주셔서 감사합니다.

답변

0

이것은 dynakey 매개 변수를 8.23 ​​https://github.com/rsyslog/rsyslog/pull/1218에 사용하여 해결되었습니다.

이론적으로 mode = "template"을 사용할 수도 있지만 메시지에 공백이 포함되어 있으면 아직 제대로 작동하지 않습니다.