ส่วนประกอบของได้ข้อมูลมาแสดงผลบน 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
ติดตั้ง Elasticsearch ด้วยคำสั่ง
wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
echo 'deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main' | sudo tee /etc/apt/sources.list.d/elasticsearch.list
sudo apt-get update
sudo apt-get -y install elasticsearch=1.1.1
ตั้งค่า Elasticsearch โดยการแก้ไขไฟล์ elasticsearch.yml ด้วยคำสั่ง
sudo nano /etc/elasticsearch/elasticsearch.yml
เพิ่มเนื้อหาดังนี้
script.disable_dynamic: true
และนำเครื่องหมาย # ออกจาก
network.host: localhost
สั่งให้และตั่งค่าให้ Elasticsearch ทำงานทุกครั้งที่เปิดเครื่องด้วยคำสั่ง
sudo service elasticsearch restart
sudo update-rc.d elasticsearch defaults 95 10
ติดตั้ง Kibana ด้วยคำสั่ง
cd ~; wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.tar.gz
tar xvf kibana-3.0.1.tar.gz
ตั่งค่า port การเชื่อมต่อของ Kibana โดยการแก้ไขไฟล์ config.js ด้วยคำสั่ง
sudo nano ~/kibana-3.0.1/config.js
ทำการแก้ไขจาก Port 9200 เป็น 80 โดยการแก้ไขเนื้อหาไฟล์ดังนี้
elasticsearch: "http://"+window.location.hostname+":80",
ทำการย้ายไฟล์ของ kibana ทั้งหมดไปไว้ใน /var/www ด้วยคำสั่ง
sudo mkdir -p /var/www/kibana3
sudo cp -R ~/kibana-3.0.1/* /var/www/kibana3/
ติดตั้ง Nginx ด้วยคำสั่ง
sudo apt-get install nginx
cd ~; wget https://gist.githubusercontent.com/thisismitch/2205786838a6a5d61f55/raw/f91e06198a7c455925f6e3099e3ea7c186d0b263/nginx.conf
ตั้งค่า Nginx โดยการแก้ไขไฟล์ nginx.conf ด้วยคำสั่ง
nano nginx.conf
แก้ไขเนื้อหาไฟล์ดังนี้
server_name FQDN; root /var/www/kibana3;
คัดลอกไฟล์ nginx.conf ไปไว้ใน /etc/nginx/sites-available/default ด้วยคำสั่ง
sudo cp nginx.conf /etc/nginx/sites-available/default
ติดตั้ง apache2-utils เพื่อใช้งาน htpasswd สร้างรหัสผ่าน ด้วยคำสั่ง
sudo apt-get install apache2-utils
สร้างรหัสผ่านด้วยคำสั่ง
sudo htpasswd -c /etc/nginx/conf.d/kibana.myhost.org.htpasswd user
โดยทำการเปลี่ยนค่า user เป็นชื่อที่ต้องการเช่น
sudo htpasswd -c /etc/nginx/conf.d/kibana.myhost.org.htpasswd tomson
Restart Nginx ด้วยคำสั่ง
sudo service nginx restart
ติดตั้ง Logstash ด้วยคำสั่ง
echo 'deb http://packages.elasticsearch.org/logstash/1.4/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash.list
sudo apt-get update
sudo apt-get install logstash=1.4.2-1-2c0f5a1
ตั้งค่า Logstash โดยการสร้างและแก้ไขไฟล์ 01-lumberjack-input.conf ด้วยคำสั่ง
sudo nano /etc/logstash/conf.d/01-lumberjack-input.conf
โดยทำการเพิ่มเนื้อหาดังนี้
input { lumberjack { port => 5000 type => "logs" ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
ตั้งค่ารูปแบบข้อมูลของ syslog โดยการสร้างและแก้ไขไฟล์ 10-syslog.conf ด้วยคำสั่ง
sudo nano /etc/logstash/conf.d/10-syslog.conf
โดยทำการเพิ่มเนื้อหาดังนี้
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } syslog_pri { } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
สร้างและตั้งค่าไฟล์ 30-lumberjack-output.conf ด้วยคำสั่ง
sudo vi /etc/logstash/conf.d/30-lumberjack-output.conf
โดยทำการเพิ่มเนื้อหาดังนี้
output { elasticsearch { host => localhost } stdout { codec => rubydebug } }
Restart Logstash ด้วยคำสั่ง
sudo service logstash restart
ติดตั้ง Logstash Forwarder ในเครื่อง Logstash Client ด้วยขั้นตอนต่อไปนี้
สร้าง SSL Certificates ด้วยคำสั่ง
sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private
cd /etc/pki/tls; sudo openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
ติดตั้ง Logstash Forwarder ด้วยคำสั่ง
echo 'deb http://packages.elasticsearch.org/logstashforwarder/debian stable main' | sudo tee /etc/apt/sources.list.d/logstashforwarder.list
sudo apt-get update
sudo apt-get install logstash-forwarder
cd /etc/init.d/; sudo wget https://raw.github.com/elasticsearch/logstash-forwarder/master/logstash-forwarder.init -O logstash-forwarder
sudo chmod +x logstash-forwarder
sudo update-rc.d logstash-forwarder defaults
คัดลอกไฟล์ SSL Certificate จาก /tmp มาที่ /etc/pki/tls/certs/ ด้วยคำสั่ง
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
ตั้งค่า Logstash Forwarder โดยการสร้างและแก้ไขไฟล์ logstash-forwarder ด้วยคำสั่ง
sudo nano /etc/logstash-forwarder
โดยการเพิ่มเนื้อหาดังนี้
{ "network": { "servers": [ "logstash_server_private_IP:5000" ], "timeout": 15, "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt" }, "files": [ { "paths": [ "/var/log/syslog", "/var/log/auth.log" ], "fields": { "type": "syslog" } } ] }
Restart Logstash Forwarder ด้วยคำสั่ง
sudo service logstash-forwarder restart
กลับมาที่ Logstash Server ทำการคัดลอกไฟล์ SSL Certificate และ Logstash Forwarder มาจากเครื่อง Logstash Clientด้วยคำสั่ง
scp /etc/pki/tls/certs/logstash-forwarder.crt user@server_private_ip:/tmp
โดยทำการเปลี่ยนค่า user@server_private_ip เป็นบัญชีผ็ใช้และหมายเลข IP Address ของเครื่อง Server ที่ได้ลง Logstash ไว้ ตัวอย่างเช่น
scp /etc/pki/tls/certs/logstash-forwarder.crt tomson@172.21.14.11:/tmp
วิธีการเช้าใช้งานเปิดเว็บเบราเซอร์แล้วไปที่
http://server_ip/
เช่น
http://172.21.14.88/
ก็จะพบกับหน้าแรกของ Kibana