วันจันทร์ที่ 2 มิถุนายน พ.ศ. 2557

มาเล่น 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 ตามใจคุณได้แล้ว






ไม่มีความคิดเห็น:

แสดงความคิดเห็น