elktail 기능 요약
1. Elktail은 ELK(elasticsearch, logstash, kibana) 로그를 쿼리하고 tail 기능을 사용하는 CLI 기반 유틸리티 입니다. Kibana의 웹 인터페이스를 사용하여 로그를 검색하고 분석하는 것이 항상 유용한 것은 아닙니다. 원하고자 하는 작업별로 tail -f 와 같이
kibana에서 일반적으로 보는 로그를 보고 지금 무슨 일이 일어나고 있는지 보고 싶을 때가 있습니다. Elktail을 사용하면 그 이상의 작업을 수행할 수 있습니다.
명령줄에서 오류 및 특정 이벤트를 검색합니다. 검색 결과를 표준 유닉스 도구 중 하나로 연결합니다. 스크립트에서 사용하십시오. 출력을 파일로 리디렉션하여 es/kibana 등에서 로그를 효과적으로 다운로드 합니다.
2. 리눅스 CLI 기반에서 Lucene Query 및 tail 기능 조합으로 오류나 쿼리에 기반한 특정 이벤트를 검출할수 있습니다.
엘라스틱 환경에서 주로 키바나 인터페이스를 이용하여 로그 검색등 다양한 작업이 가능하나 하기와 같은 환경에서 유용하게 사용할수 있습니다.
- 실시간으로 CLI 환경 에서 간단한 명령어로 로그 검색이 필요할때 (curl 명령등으로 elastic api 연결로도 가능).
- 엘라스틱 검색 결과를 파일로 바로 저장하고 싶을경우.
- CLI 명령행으로 특정 기간 및 특정 index 로그 출력이 필요할때.
- x-pack 모니터링 대안으로 스크립트 기반으로 유용하게 사용 가능.
설치 방법은 구글에서 검색하면 많은 자료가 있으므로 이 포스팅에서는 언급하지 않겠습니다.
elktail 기본 Queries Example
– elktail ‘Keyword” (특정 단어 검색)
– elktail event_id:8008 (특정 필드의 특정 단어 검색)
– elktail -f ‘%@timestamp %log’ (시간 및 Log field 출력)
– elktail –url “http://xxxx.sample.com:9200” (elasticsearch java port 접속)
– elktail host:xxx.xxx AND level:error ( AND 연산 가능 OR도 사용 가능)
– elktail -i “winlogbeat-[0-9].*” host:XXX105.xx.com (특정 index 지정하여 검색)
– elktail -a 2022-10-15T08:22 -b 2022-10-15T18:30 (특정 시간대 지정하여 로그 검색 -a: after -b: before )
– 이외에도 다양한 옵션이 있음 elktail –help 를 이용하면 자세하게 볼수 있습니다.
Example
x월 x일 00시 부터 ~ x월 x일 09시 15분 사이의 / windows event 6006 1074 6008 5120 (hyper-v 클러스터) 이벤트를 / 시간, 호스트명, Event ID, Message 형식으로 표기하여 출력 됩니다.
Logs UTC 기준
활용 사례
서버 모니터링 용도로 사용
서비스 운영중인 윈도우 호스트 서버 종료 & 비정상 종료 모니터링 알람 설정하기
윈도우 호스트 서버 (중요 event ID만) winlogbeat -> elastic 저장 -> 특정 Event ID -> Script 감시 (elktail) ->
-> mail, slack alerting (notification)
elastic 은 timestamp 가 UTC 기준으로 저장됨 ( 그런 이유로 export TZ=UTC )
– Notification Mail , Slack (다른 push App 으로 알람 가능)
* mail 알람 예시
* slack 알람 예시
장비 이상유무 모니터링 과정
Storage or Switch(Network) -> Linux rsyslog -> Filebeat -> Logstash -> Elastic indexing -> 특정 keyword Check -> Script 감시 (elktail) -> Alerting
위와 같이 모니터링이 필요한 인프라 시스템의 로그를 Elastic 스택에 저장을 하고 elktail 오픈소스를 접목하여 사용하면 간단하게 모니터링을 구성할수 있습니다. 보안 관점에서도 보안 위협 이벤트에 대해 탐지 룰을 추가 할수도 있습니다. 엘라스틱의 위처 기능이나 모니터링 알람기능은 유료버전에서 사용할수 있습니다. 비용을 들이지 않고 이와 같은 방법으로 모니터링이나 알람을 구성해서 사용해도 됩니다.
elktail 사용 및 활용
elktail 사용하기
1. elktail 은 ELK(elasticsearch+logstash+kibana) 기반 로그에 대한 명령줄 (Command Line) 유틸리티.
2. CLI 기반에서 Lucene Query 및 tail 기능으로 오류 및 특정 이벤트를 검색 할수 있음.
kibana 웹 인터페이스를 사용하여 로그 검색이 가능하나 가끔 아래와 같은 상황에서 유용하게 사용할수 있음.
– 실시간으로 CLI 에서 로그 분석을 원할때 – 검색 결과를 파일로 직접 Redirection 하고 싶을때 – CLI 명령행으로 특정 기간 및 특정 index 로그를 출력할때 * curl + json 으로 가능하나 좀더 간결한 문법을 원할때 – 개인적으로는 X-Pack (모니터링 알람기능 등등) 대안으로 사용중 |
1) 설치
구글링 (필자는 binary file 직접 download https://github.com/knes1/elktail/releases )
GO 언어 패키지가 설치 되어 있어야함
2) 기본 Queries 사용법
– elktail keyword (특정 단어 검색)
– elktail event_id:6006 (특정 필드의 특정 단어 검색)
– elktail -f ‘%@timestamp %log’ (시간 및 log 필드 만 출력)
– elktail –url “http://xxxx.example.com:9200” (elasticsearch java port 접속)
– elktail host:xxx.xxx AND level:error ( AND 연산 가능 OR도 사용가능)
– elktail -i “winlogbeat-[0-9].*” host:AA01.xx.com (특정 index 지정하여 검색)
– elktail -a 2017-06-05T01:15 -b 2017-06-05T10:15 (특정 시간대 지정하여 로그 검색 -a: after -b: before )
– 이외에도 다양한 옵션이 있음 elktail –help 참고
– 사용 예
* 6월 5일 00시 부터 ~ 6월 5일 10시 15분 사이의 / windows event 6006 1074 6008 5120 (hyper-v 클러스터) 이벤트를 / 시간, 호스트이름, 이벤트 ID, message 형식으로 출력
UTC 기준시로 출력됨
3) 활용
A. 서버군 모니터링
윈도우 호스트 서버 종료 및 비정상 종료 모니터링 하기
윈도우 호스트 서버 (중요 event ID만) winlogbeat -> elastic 저장 -> 특정 Event ID -> Script 감시 (elktail) -> mail, slack alerting (notification)
* elastic 은 timestamp 가 UTC 기준으로 저장됨 ( 그런 이유로 export TZ=UTC )
– Notification Mail , Slack (다른 push App 으로 알람 가능)
* mail alert
* slack alert
B. 장비 모니터링
스토리지,스위치등 -> 리눅스 rsyslog -> filebeat -> logstash -> elastic 저장 -> 특정 키워드 발생시 -> Script 감시 (elktail) -> alerting
모니터링할 인프라 시스템 들의 LOG를 -> elastic 에 저장만 제대로 한다면 위와 같은 방법으로
elktail 도구를 활용하여 간단하게 모니터링이 가능하다.