systemd 로그를 전용 로그 서버로 보내려면 어떻게 해야 합니까?

systemd 로그를 전용 로그 서버로 보내려면 어떻게 해야 합니까?

과거에는 syslog-ng 또는 rsyslog를 사용하여 시스템 로그를 네트워크의 다른 곳에 있는 전용 로그 서버로 보냈습니다. 그러나 systemd를 사용하면 이전에 /var/log/secure 또는 /var/log/auth.log(배포판에 따라 다름)에 저장되었던 sudo 명령과 같은 항목이 이제 로그에 저장됩니다.

ForwardToSyslog=yes/etc/systemd/journald.conf에 이전 방식으로 돌아갈 수 있는 옵션이 있다는 것을 알고 있지만 이는 우아하지 않은 회귀처럼 보입니다. systemd에는 Logrhythm, ELK 또는 유사한 중앙 로깅 서버로 로그를 보내는 방법이 내장되어 있습니까? 아니면 ForwardToSyslog=yes이를 수행하는 올바른 방법이 있습니까?

답변1

systemd가 그런 것 같습니다아니요메시지를 syslog 서버로 전달하는 방법이 내장되어 있습니다.Red Hat 공식 추천imjournal모듈은 /etc/rsyslog.conf에서 다음을 설정하여 rsyslog가 로그를 읽고 중앙 로깅 서버로 전달할 수 있도록 하는 데 사용됩니다.

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on")

이러한 옵션에 대한 사용법 세부 정보를 제공합니다.

  • 그리고메시지 수에서는 로그 데이터를 저장해야 하는 빈도를 지정할 수 있습니다. 이는 지정된 메시지 수에 도달할 때마다 발생합니다.

  • 바꾸다상태 파일의 경로입니다. 이 파일은 마지막으로 처리된 저널 항목을 추적합니다.

  • 그리고두번째에서는 속도 제한 간격의 길이를 설정합니다. 이 간격 내에서 처리되는 메시지 수는 Burst_number에 지정된 값을 초과할 수 없습니다. 기본 설정은 600초마다 메시지 20,000개입니다. Rsyslog는 지정된 시간 범위 내에서 가장 큰 버스트 이후에 발생하는 메시지를 삭제합니다.

  • 그리고이전 메시지 무시로그의 현재 메시지를 무시하고 상태 파일이 지정되지 않은 경우 사용되는 새 메시지만 가져올 수 있습니다. 기본 설정은 꺼져 있습니다. 이 설정이 꺼져 있고 상태 파일이 없으면 이전 rsyslog 세션에서 처리된 경우에도 로그의 모든 메시지가 처리됩니다.

답변2

나는 이전에 imjournald를 읽지 않았지만 James Shewey의 답변을 읽은 후에 이것이 정말 간단하다고 생각합니다.

규칙 세트를 사용하면 원하는 모든 것을 얻을 수 있습니다.

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on"
    ruleset="journald"  #bind this action to the ruleset "journald"
    )

#declare ruleset "journald"

ruleset(
 name="journald"              
 queue.type="FixedArray"       
 queue.spoolDirectory="/var/run/rsyslog/queues" 
 queue.filename="stats_ruleset"
 queue.lowwatermark="20000"     
 queue.maxdiskspace="100m"        
 queue.size="5000000"             
 queue.dequeuebatchsize="1000"  
 queue.saveonshutdown="on"      
) {

# add here actions you want to perform

action(
  name="impstats_to_es"
  type="omelasticsearch"
  server="127.0.0.1"
  serverport="9200"
  template="stats"
  searchIndex="impstats"
  searchType="impstats"
  bulkmode="on"
  action.resumeretrycount="-1"
)

}

관련 정보