2019년 1월 27일 일요일

Logstash 필터 date

리눅스 secure 로그는 연도를 기록하지 않는다.
Nov 30 02:38:21 Sensor sshd[2264]: Accepted password for root from 192.168.56.1 port 8246 ssh2
Dec  1 03:44:36 Sensor sshd[13361]: Received disconnect from ::ffff:192.168.244.18: 11: Disconnect requested by Windows SSH Client.
Dec  1 03:45:21 Sensor sshd[2354]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec  1 03:45:27 Sensor login: pam_unix(login:session): session closed for user root
Dec  1 03:46:28 Sensor sshd[1445]: Received signal 15; terminating.
Dec  1 03:46:28 Sensor sshd[1883]: Exiting on signal 15
Dec  1 03:46:28 Sensor sshd[1883]: pam_unix(sshd:session): session closed for user root

로그스태시 연동 시 date 필터 플러그인은 이런 로그의 연도를 알아서 추정(?)하는데, 항상 로그 연동 시점의 연도가 적용된다. 작년까지 그랬음. 그런데 올해 첫 강의에서 희한한 경험을 했다. 다음은 로그스태시 연동 설정.
input {
 file {
  path => "D:/test.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

filter {
 dissect {
  mapping => { "message" => "%{timestamp->} %{+timestamp} %{+timestamp} %{hostname} %{another}" }
  }

 date {
  match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
}

output {
 elasticsearch {
  hosts => "192.168.31.247:9200"
 }
 stdout { codec => rubydebug }
}

다음은 연동 결과. 1월부터 11월까지의 로그는 2019년으로 기록되는데, 12월 로그만 2018년으로 기록됨.


몇 번을 반복해도, 엘라스틱 버전을 바꿔봐도 마찬가지. 작년엔 1 ~ 12월 로그 모두 2018년으로 기록했었는데?

엘라스틱에 문의했더니 date 플러그인이 연도 추정을 잘못한 것 같긴 한데, 연도에 영향을 줄 수 있는 설정은 따로 없으니 아예 로그에 연도 정보를 추가하라는 답변이 왔다. 그래서 시키는대로 함(..)
2019 Nov 30 02:38:21 Sensor sshd[2264]: Accepted password for root from 192.168.56.1 port 8246 ssh2
2019 Dec  1 03:44:36 Sensor sshd[13361]: Received disconnect from ::ffff:192.168.244.18: 11: Disconnect requested by Windows SSH Client.

필터 설정도 수정.
filter {
 dissect {
  mapping => { "message" => "%{timestamp} %{+timestamp->} %{+timestamp} %{+timestamp} %{hostname} %{another}" }
  }

 date {
  match => [ "timestamp", "yyyy MMM  d HH:mm:ss", "yyyy MMM dd HH:mm:ss" ]
 }
}


참고로 시간 정보가 없을 때 date 필터는 00:00:00 값을 집어 넣고, 날짜 정보가 없으면 실행 연도의 첫 날짜를(2020-01-01)를 집어 넣는다.

19.02.21.
6.6 버전에서 정상 동작함. 버그였던 모양.

20.01.30.
1월에만 발생하는 버그?

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스