สำหรับรายละเอียดของ GROK patterns อ่านได้ที่ https://github.com/elastic/logstash/blob/v1.4.0/patterns/grok-patterns
คุณสามารถทดสอบ pattern ที่คุณสร้างขึ้นกับข้อความจริง ได้ที่ https://grokdebug.herokuapp.com/
ตัวอย่างของการตั้งค่า Logstash เป็นตามด้านล่าง
input {
beats {
ssl => false
host => "0.0.0.0"
port => 5044
}
}
filter {
grok {
match => {
"message" => [
"\[%{TIMESTAMP_ISO8601:timestamp}\] %{WORD:log_type}.%{LOGLEVEL:log_level}: %{DATA:request_id} %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:response_code} %{NUMBER:duration} %{GREEDYDATA:message}",
"\[%{TIMESTAMP_ISO8601:timestamp}\] %{WORD:log_type}.%{LOGLEVEL:log_level}: %{DATA:request_id} %{GREEDYDATA:message}"
]
}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
จากตัวอย่าง...ในส่วนของ input ระบุให้รอรับข้อความที่ port 5044 ด้วย beat protocol (กรณีนี้ เราใช้ filebeat ในการส่งข้อความ input)
ในส่วนของ filter ระบุให้ใช้ grok เพื่อเปรียบเทียบและตัดข้อความ log โดยรูปแบบของ pattern คือ %{GROK_PATTERN:VARIABLE_NAME}.
ในส่วนของ output ระบุให้ส่ง output ไปยัง elasticsearch ที่ 127.0.0.1:9200 ด้วย index ที่ระบุ
No comments:
Post a Comment