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)를 집어 넣는다.
댓글 없음:
댓글 쓰기