จากที่ได้กล่าวถึงมายาวนานในเรื่อง ELK และ ELK #02 ที่ได้กล่าวถึงการติดตั้ง LogStash ไว้เบื้องต้น ในบทความนี้จะมาลงลึก ถึงกระบวนการทำงานของ LogStash ซึ่งเป็นส่วนสำคัญในการเปลี่ยนข้อมูล Unstructured ให้เป็น Structured ตอนนี้ เราจะทำงานใน /etc/logstash/conf.d/ Simple input – output plugin สร้างไฟล์ 01-input-file.conf มีเนื้อหาดังนี้ input { file { path => [“/tmp/input.txt”] mode => “tail” } } ในส่วนนี้ เป็นการกำหนดว่า ให้ LogStash อ่านไฟล์ /tmp/input.txt โดยให้อ่านบรรทัดล่าสุด (ต่อจาก Checkpoint ก่อนหน้า) เข้ามา โดยถ้าไม่กำหนด mode => “tail” ระบบจะอ่านไฟล์ก็ต่อเมื่อ มีการสร้างไฟล์ใหม่เท่านั้น สร้างไฟล์ 98-output-file.conf มีเนื้อหาดังนี้ output { file { path => “/tmp/output.txt” } } ในส่วนนี้ เป็นการกำหนดว่า ให้ LogStash เขียนไฟล์ /tmp/output.txt เมื่อปรับเปลี่ยน configuration ต้องทำการ Restart Service service logstash restart ลองส่งข้อมูลเข้าไปในไฟล์ /tmp/input.txt ด้วยคำสั่ง echo “Hello World 1” >> /tmp/input.txt ดูผลลัพธ์ใน /tmp/output.txt cat /tmp/output.txt {“path”:”/tmp/input.txt”,”@version”:”1″,”message”:”Hello World 1″,”@timestamp”:”2018-09-11T03:42:33.645Z”,”host”:”elk1″} แสดงให้เห็นว่า ระบบ LogStash สามารถรับข้อมูลจากไฟล์ และส่งข้อมูลออกไปยังไฟล์ได้ Filter Plugin ก่อนอื่น Stop Service ด้วยคำสั่ง service logstash stop ในการจัดการข้อมูลก่อนบันทึก เช่นการกรอง การจัดรูปแบบ LogStash ทำงานผ่าน Filter Plugin ซึ่งมีหลายรูปแบบ (https://www.elastic.co/guide/en/logstash/current/filter-plugins.html) แต่ในที่นี้ จะใช้ grok เหมาะกับข้อมูล Unstructured อย่าง syslog เป็นต้น ซึ่งมักจะเป็น Log ที่ให้มนุษย์อ่านได้ง่าย แต่ไม่ค่อยเหมาะสำหรับให้คอมพิวเตอร์เอาไปใช้งานต่อ ซึ่ง LogStash มีไว้ให้แล้วกว่า 120 ตัว ต่อไป สร้าง 44-filter-basic.conf มีเนื้อหาดังนี้ filter { grok { match => { “message” => “%{IP:ipaddress} %{NUMBER:size}” } } } จากนั้น Start Service ด้วยคำสั่ง (รอสักครู่ด้วย) service logstash start แล้วส่งข้อมูลต่อไปนี้ต่อท้ายไฟล์ /tmp/input.txt echo “192.168.1.1 120” >> /tmp/input.txt และเมื่อดูผลใน /tmp/output.txt จะพบบรรทัดสุดท้าย {“message”:”192.168.1.1 120″,”@version”:”1″,”path”:”/tmp/input.txt”,”@timestamp”:”2018-09-11T04:56:03.662Z”,”size”:”120″,”host”:”elk1″,”ipaddress”:”192.168.1.1″} แสดงให้เห็นว่า สามารถใช้ filter นี้ แยกแยะข้อมูลเบื้องต้นได้ Example : Postfix Log ก่อนอื่น Stop Service ด้วยคำสั่ง service logstash stop เนื่องจาก Log แต่ละชนิด แต่ละซอฟต์แวร์มีความหลากหลายมาก แต่ดีที่มีผู้เชี่ยวชาญเค้าเขียน Pattern เอาไว้ให้ ให้ใช้คำสั่งต่อไปนี้ สร้างไดเรคทอรี่ /etc/logstash/patterns.d/ และ ดาวน์โหลด มาเก็บไว้