티스토리 뷰
Logstash를 이용한 서비스 로그 수집
www.elastic.co/guide/en/logstash/current/input-plugins.html
Logstash는 다양한 input plugin 제공
file 및 log4j 로 어플리케이션 로그를 수집했던 경험
1. file plugin
logstash-docker.yml 작성
metricbeat를 이용한 Logstash 모니터링이 최신
monitoring 은 옵션
version: '3'
services:
file-logstash:
image: docker.elastic.co/logstash/logstash:${VERSION}
container_name: file-logstash
environment:
- node.name=file-logstash
- xpack.monitoring.enabled=true
- xpack.monitoring.elasticsearch.hosts="모니터링 데이터를 보낼 host"
- xpack.monitoring.elasticsearch.username=logstash_system
- xpack.monitoring.elasticsearch.password=logstash
ports:
- 9600:9600
- 9700:9700
- 5044:5044
volumes:
- /home/centos/elasticsearch/logstash.conf:/usr/share/logstash/config/logstash.conf
command: logstash -f /usr/share/logstash/config/logstash.conf
logstash.conf 작성
팀 마다 각각의 로그를 사용중이여서 관리하기가 어려웠음
로그 패턴 생성 : grokconstructor.appspot.com/do/match
index lifecycle management (ILM)으로 로그 인덱스를 관리
- mutate : add_field, remove_field 필드 조작
- date : match, target 날짜 변환
- split : 리스트 분리
input {
file {
path => [ "log 파일 경로1" ]
codec => multiline {
pattern => "^%{TIME} "
negate => true
what => "previous"
}
start_position => "end"
tags => ["service1"]
}
file {
path => [ "log 파일 경로2" ]
codec => multiline {
pattern => "^\[%{TIMESTAMP_ISO8601} [0-9]*\] "
negate => true
what => "previous"
}
start_position => "end"
tags => ["service2"]
}
}
filter {
grok {
match => {
message => [
"%{TIME:log_time} \[%{LOGLEVEL:level}\s*\] \[%{DATA:thread_name}\] \[%{DATA:class_name}\] %{GREEDYDATA}"
, "%{TIME:log_time} %{LOGLEVEL:level}\s* \[%{DATA:class_name}\] %{GREEDYDATA}"
, "%{TIMESTAMP_ISO8601:log_time} *%{LOGLEVEL:level}* \[%{DATA:thread_name}\] %{GREEDYDATA}"
]}
}
}
output {
if "service1" in [tags] {
elasticsearch {
hosts => [elasticsearch 주소들]
ilm_rollover_alias => "service1"
ilm_pattern => "{now/M{yyyy.MM}}-000001"
user => 'logstash_writer'
password => 'writer!2'
}
}
if "service2" in [tags] {
elasticsearch {
hosts => [elasticsearch 주소들]
ilm_rollover_alias => "service2"
ilm_pattern => "{now/M{yyyy.MM}}-000001"
user => 'logstash_writer'
password => 'writer!2'
}
}
}
logstash-docker.yml 실행
docker-compose -f logstash-docker.yml up
'Elastic Stack' 카테고리의 다른 글
Index 란? (0) | 2021.01.13 |
---|---|
Elasticsearch + Docker + TLS (1) | 2021.01.11 |
댓글