Logstash란?
Logstash는 로그를 수집하고 변환하는 데이터 처리 파이프라인입니다.
Logstash 설정법
기본적으로 logstash 관련 설정은 logstash.conf 파일을 통해 관리할 수 있습니다. 몇 가지 예시를 통해 logstash를 설정해봅시다.
input
- filebeat로부터 데이터 전송받을 때
input {
beats {
port => 5044 # logstash 포트
}
}
- logstash에서 직접 데이터 수집할 때
input {
file {
path => "데이터 경로"
codec => multiline { # 멀티라인(줄 바뀌어가며 기록된 로그)을 인식하기 위할 경우
pattern => "^{"
negate => true
what => "previous"
}
}
}
filter
- JSON 형식의 데이터를 전달받고, 여기서 message라는 key값이 JSON 형식을 띄고 있을 때(중첩된 JSON) 이를 파싱하는 방법
filter {
json {
source => "message"
}
mutate {
remove_field => ["message"]
}
}
예를 들어 logstash가 아래와 같은 로그를 변환한다면?
{
"level": "info",
"message": {
"status": "success",
"detail": "This is test"
}
}
위 JSON의 message key값은 파싱될 것이고, 원래 message key값은 remove 되어 최종적으로 다음과 같은 형태가 됩니다.
{
"level": "info",
"status": "success",
"detail": "This is test"
}
output
logstash에서는 보통 elasticsearch로 데이터를 전송합니다. 아래는 간단한 예시입니다.
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"] # elasticsearch 주소(도커 컨테이너로 실행한다면 엘라스틱서치 컨테이너명 그대로 사용 가능)
index => "auth-logs-%{+YYYY.MM.dd}" # 인덱스 직접 설정
}
stdout {
codec => rubydebug # 읽기 쉽게 포맷된 JSON 형태로 로그 출력
}
}
'백엔드' 카테고리의 다른 글
[ELK] Filebeat 핵심 요약 및 설정법 (0) | 2025.02.08 |
---|---|
npm에서 yarn으로 갈아타기(yarn berry) (0) | 2024.11.07 |
Kafka 카프카에 대한 이해와 간단한 실습 (0) | 2024.11.04 |
MSA 구조 구성의 핵심: 메시지 큐(Message Queue)란? - RabbitMQ, Kafka, Redis (0) | 2024.11.04 |
캐싱 전략을 이용한 백엔드 성능 향상 (0) | 2024.11.02 |