ส่วนประกอบของได้ข้อมูลมาแสดงผลบน Kibana ประกอบด้วย

  • Logstash : ทำหน้าที่เป็น Server ในการรับ Log จากเครื่องต่างๆ ใน How- To ครั้งนี้จะเรียกเครื่องที่ลง Logstash ว่า Logstash Server
  • Elasticsearch : ทำหน้าที่เก็บข้อมูล Log
  • Kibana : ทำหน้าที่เป็นตัวแสดงผลที่สามารถค้นหาและเรียกดูรายระเอียดได้ผ่านทาง Web Interface
  • Logstash Forwarder : ทำหน้าที่เป็นตัวส่ง Log ของเครื่องต่างๆไปยัง Logstash Server ใน How-to ครั้งนี้จะเรียกเครื่องนี้ว่า Logstash Client

เตรียมเครื่องที่จะเป็น Logstash Server ด้วยขั้นตอนต่อไปนี้
เพิ่ม Repository และติดตั้ง Java 7 ด้วยคำสั่ง

sudo add-apt-repository -y ppa:webupd8team/java

sudo apt-get update

sudo apt-get -y install oracle-java7-installer


Continue reading

เว็บนี้เคยนำเสนอเรื่อง Logstash, Kinana, ElasticSearch ไปบ้างแล้ว ซึ่งอธิบายรายละเอียดในส่วนของการติดตั้งไว้อย่างดี ครั้งนี้จะมาแนะนำการใช้งานผ่าน Container กันบ้าง Logstash เป็นเครื่องมือที่ได้รับความนิยมมากขึ้น เพราะไม่เพียงแค่มีความสามารถในการดึง log จากไฟล์ filter log และการเชื่อมต่อกับ syslog-ng ได้ แต่ยังสามารถเชื่อมต่อกับ ElasticSearch ทำให้การเก็บ log บนฐานข้อมูลมีประสิทธิภาพมากขึ้น การจัดการ log ทำได้ง่ายผ่าน LogStash ได้ง่าย

สำหรับ Kibana เป็นโครงการ Visualized ข้อมูลที่มีอยู่ใน ElasticSearch ทำให้เราสามารถสร้างการประมวลผลข้อมูลจาก log ธรรมดาจาก ElasticSearch ให้กลายเป็น Grap ที่ดูเข้าใจได้ง่าย และที่สำคัญคือสามารถเขียน config เพื่อใช้ในการวิเคราะห์ข้อมูลได้ด้วย

ครั้งนี้เราจะมาใช้งาน Logstash, Kibana และ ElasticSearch ผ่าน Docker Container มีนักพัฒนาหลายรายประยุกต์ Container กับบริการเหล่านี้ แต่มี Docker Image อยู่ชุดหนึ่งเป็นจุดเริ่มต้นได้ง่ายคือ pblittle/docker-logstash ทำออกมาได้ดี และมีเอกสารอ้างอิงที่เข้าใจได้ง่าย ใน image ชุดนี้ได้รวมเอา service ทั้งหมดรวมเข้าไว้เป็นก้อนเดียว แต่การเรียกใช้งานไม่จำเป็นต้องเรียก service ภายในตัวเองทั้งหมด แต่สามารถเรียกใช้ service ภายนอกเข้ามาร่วมได้ด้วย สำหรับ logstash config สามารถ link จาก url ภายนอกได้ซึ่งทำให้ง่ายในการจัดการมากขึ้น ลองดูตัวอย่าง


Continue reading

เนื่องจากมีผู้รู้แนะนำให้ลองเล่น 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 ตามใจคุณได้แล้ว