สำหรับรายละเอียดของ 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