728x90
반응형
Logstash는 데이터 수집, 변환 및 전송을 위한 강력한 오픈 소스 도구입니다. Logstash 설정 파일을 작성하는 방법을 다양한 예시와 주석을 포함하여 설명해 드리겠습니다.
1. 기본 구조
# Logstash 설정 파일의 기본 구조는 입력, 필터, 출력 섹션으로 나눠집니다.
# 각 섹션은 중괄호로 둘러싸여 있으며, 각각의 플러그인 설정을 포함합니다.
input {
# 입력 플러그인 설정
}
filter {
# 필터 플러그인 설정
}
output {
# 출력 플러그인 설정
}
2. 파일 입력과 Elasticsearch 출력
# 파일 입력 설정
input {
file {
path => "/path/to/your/logfile.log"
start_position => "beginning"
}
}
# 필터 설정 (예: grok 필터로 로그 데이터 구문 분석)
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
}
# Elasticsearch 출력 설정
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "your_index_name"
}
}
3. TCP 입력과 stdout 출력
# TCP 입력 설정
input {
tcp {
port => 5000
codec => "json_lines" # 데이터 형식을 JSON으로 가정
}
}
# 필터 설정 (필터 없음)
# 파일 출력 설정
output {
file {
path => "/path/to/output.log"
}
}
4. JSON 파싱과 CSV 출력
input {
stdin {}
}
filter {
json {
source => "message"
}
csv {
separator => ","
columns => ["column1", "column2"]
}
}
output {
file {
path => "/path/to/output.csv"
}
}
5. 주석과 설명
설정 파일에 주석을 추가하여 설정을 설명하실 수 있습니다. 주석은 #로 시작합니다.
input {
# 파일 입력 플러그인 설정
file {
path => "/path/to/your/logfile.log"
start_position => "beginning"
}
}
filter {
# JSON 파싱 필터 설정
json {
source => "message"
}
}
output {
# Elasticsearch 출력 플러그인 설정
elasticsearch {
hosts => ["http://localhost:9200"]
index => "your_index_name"
}
}
6. HTTP 입력과 Kafka 출력
# HTTP 입력 설정
input {
http {
port => 8080
}
}
# 필터 설정 (필터 없음)
# Kafka 출력 설정
output {
kafka {
codec => json
topic_id => "your_topic_name"
bootstrap_servers => "localhost:9092"
}
}
7. Beats 입력과 stdout 출력
# Filebeat으로부터 로그 데이터를 입력 받는 설정
input {
beats {
port => 5044 # Filebeat가 데이터를 전송하는 포트 (Filebeat 설정에 맞춰야 함)
}
}
# 필터 설정 (필터가 필요한 경우 추가)
filter {
# 예: 로그 메시지를 구문 분석하는 grok 필터
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
}
# 로컬 파일로 출력하는 설정
output {
file {
path => "/path/to/output.log" # 로그를 저장할 로컬 파일 경로
codec => line { format => "%{message}" } # 로그 레코드 형식
}
}
8. Schedule stdout 출력
input {
stdin { }
}
filter {
# 필터 설정 추가 가능
}
output {
stdout { codec => rubydebug }
}
# 스케쥴 형식을 사용하여 주기적으로 작업을 실행하는 설정
schedule {
# "cron" 형식을 사용하여 주기를 지정
cron => "* * * * *"
# 아래의 명령어를 실행
command => "/path/to/your/script.sh"
}
input {
stdin {
# 스케쥴을 사용하여 메시지를 10초마다 받습니다.
codec => "line"
schedule => "*/10 * * * * *"
}
}
output {
stdout {
codec => rubydebug
}
}
9. API 호출에 대한 예제
input {
# 입력 플러그인 설정 (예: 파일 입력)
file {
path => "/path/to/your/logfile.log"
}
}
filter {
# 필터 설정 (필요에 따라 추가)
}
output {
http {
http_method => "post" # HTTP 요청 메서드 (예: POST)
url => "https://api.example.com/your-api-endpoint" # 대상 API 엔드포인트 URL
format => "json" # 요청 형식 (예: JSON)
message => '{"key1": "%{field1}", "key2": "%{field2}"}' # 전송할 데이터 포맷
}
}
input {
http_poller {
urls => {
api_data => {
method => get # HTTP GET 요청
url => "https://api.example.com/your-api-endpoint"
}
}
request_timeout => 60
schedule => { "every" => "1m" } # 1분마다 API 호출
codec => "json" # API 응답 데이터 형식 (예: JSON)
}
}
filter {
# 필터 설정 (필요에 따라 추가)
}
output {
stdout { codec => rubydebug } # 응답 데이터를 콘솔에 출력 (테스트 목적)
# 다른 출력 플러그인을 사용하여 응답 데이터를 원하는 형식으로 처리할 수 있음
}
input {
# HTTP 입력 플러그인을 사용하여 API에서 데이터 가져오기
http {
url => "https://api.example.com/data" # API 엔드포인트 URL
codec => "json" # 응답 데이터가 JSON 형식인 경우
schedule => { "every" => "30s" } # 주기적으로 API 호출
}
}
filter {
# 필터링 및 데이터 가공 작업 (필요한 경우 추가)
}
output {
# API 호출에서 수신한 데이터를 Elasticsearch 또는 다른 목적지로 전송 (예: Elasticsearch)
elasticsearch {
hosts => ["http://localhost:9200"]
index => "api_data"
}
}
728x90
반응형
LIST
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] beat 별 간단한 설정 및 실행 방법(filebeat, packetbeat, metricbeat, winlogbeat, heartbeat, auditbeat) (1) | 2023.10.13 |
---|---|
[Elasticsearch] Kibana 에서 다양한 필터 예제 (1) | 2023.10.09 |
[Elasticsearch] filebeat 명령어에 대한 다양한 예제 (1) | 2023.10.05 |
[Elasticsearch] grok 의 사용방법 (1) | 2023.10.04 |
[Elasticsearch] Logstash 에서 JAVA Heapdump 해결 방법 (2) | 2023.05.17 |