มาเล่น Logstash, ElasticSearch และ Kibana กัน

เนื่องจากมีผู้รู้แนะนำให้ลองเล่น Logstash. ElasticSearch และ Kibana เมื่อช่วงปลายปี 2013 มาวันนี้เพิ่งจะได้มาล่องเล่นดู เรื่องการจัดการ log ไฟล์ หลายคนอาจเคยได้ยิน syslog-ng หรืออะไรนองนั้น ซึ่งการเก็บ log ส่วนใหญ่เก็บลงไฟล์ เก็บไว้อย่างนั้นไม่ได้เอามาใช้ประโยชน์อะไร มันก็น่าเสียดาย เพราะ log เหล่านี้สามารถนำมาวิเคราะห์แบบ real time ได้ หากพบปัญหาที่ตรวจพบได้จาก log ก็สามารถแก้ไขได้ทันท่วงที Logstash และ ElasticSearh ต้องใช้ Java ดังนั้นติดตั้ง Java กันก่อน
apt-get install openjdk-7-jdk
จากนั้นดาวน์โหลด logstash และติดตั้งลงในเครื่อง
curl -O https://download.elasticsearch.org/logstash/logstash/logstash-1.4.1.tar.gz
tar zxvf logstash-1.4.1.tar.gz
cd logstash-1.4.1
ทดสอบการทำงานดูสักหน่อย
bin/logstash -e 'input { stdin { } } output { stdout {} }'
คุณจะพบว่า logstash ให้คุณพิมพ์อะไรลงไปก็ได้ จากนั้นก็จะ return log ออกมาดังภาพ

ติดตั้ง elasticsearch เราจะเอา log ที่ได้ไปเก็บไว้ในนี้
curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz
tar zxvf elasticsearch-1.1.1.tar.gz
cd elasticsearch-1.1.1
./bin/elasticsearch
ทดสอบการทำงานดูสักหน่อย
bin/logstash -e 'input { stdin { } } output { elasticsearch { host => localhost } }'
logstash จะให้คุณพิมพ์อะไรสักอย่างลงไป จากนั้นให้คุณใช้ curl ลองดูใน ES ว่าเก็บข้อมูลจาก logstash จริงหรือไม่
curl 'http://localhost:9200/_search?pretty'
จะได้ผลลัพท์ดังนี้

ทีนี้มาลอง ส่ง log ของ Apache ไปเก็บไว้ใน ES กันบ้าง ให้เขียน config ไฟล์ ดังนี้
input {
file {
path => "/var/log/apache2/access.log"
start_position => beginning
}
}
filter {
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
host => localhost
}
stdout { codec => rubydebug }
}
จากนั้นใช้คำสั่ง
bin/logstash -f logstash-apache.conf
รอสักครู่ logstash จะอ่านไฟล์ log แล้วส่งข้อมูลไปยัง ES ให้เรื่อยๆ ครับ ข้อมูลที่เก็บใน ES จะเป็นข้อมูลแบบ json ถ้าต้องการ Query ก็สามารถ Query ผ่าน ES ได้ แต่เราจะมาใช้ เครื่องมืออีกตัวหนึ่งเพื่อให้ชีวิตง่ายขึ้น คือ Kibana
curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz
tar zxvf kibana-3.1.0.tar.gz
cd kibana-3.1.0/
แก้ไขไฟล์ config.js กำหนด ES Server ให้ถูกต้อง จากนั้นคัดลอกไฟล์ไปยัง Document Root ของ Web Server ที่เราใช้งานอยู่ จากนั้นเปิดเบราเซอร์ขึ้นมา เราจะได้หน้าจอดังนี้

ถ้ายังคิดอะไรไม่ออก คลิกไปที่ Link ที่เขียนว่า Logstash Dashboard คุณจะได้หน้าจอ Dashboard สำเร็จรูปมา 1 หน้าจอ

จากนี้คุณก็สามารถปรับแต่ง Dashboard ตามใจคุณได้แล้ว


 

Leave a Reply