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 도구를 활용하여 간단하게 모니터링이 가능하다.