Quản lý log với Logstash, Elasticsearch, Kibana

journe-devops-des-dashboards-pour-tous-avec-elasticsearch-logstash-et-kibana-5-638.jpg

Quản lý log với Logstash, Elasticsearch, Kibana

1. Giới thiệu

Với những hệ thống lớn việc quản lý log và phân loại log bằng việc xem file log của server để xác định thông tin của log, phân loại log là khá khó khăn. Cần thiết phải có một công cụ quản lý log một cách tốt hơn, sớm phát hiện những lỗi phát sinh của server hoặc kiểm tra các thông tin về log. Hiện nay cũng có khá nhiều công cụ để quản lý log khác nhau. Qua tìm hiểu thì bộ công cụ Logstash, Elasticsearch, Kibana có nhiều ưu điểm như phần mềm mã nguồn mở hoàn toàn miễn phí, cung cấp dịch vụ quản lý log rất tốt và dễ sử dụng. Dưới đây tôi sẽ giới thiệu về bộ công cụ này.

Logstash: Đây là một công cụ sử dụng để thu thập, xử lý log được viết bằng java. Nhiệm vụ chính của logstash là thu thập log sau đó chuyển vào Elastichsearch. Mỗi dòng log của logstash được lưu trữ đưới dạng json.

Elasticsearch: sử dụng cơ sở dữ liệu NoSQL dựa trên nền tảng của Apache Lucene engine. Dùng để lưu trữ dữ liệu và cung cấp interface cho phép truy vấn đến cơ sở dữ liệu.

Kibana: Đây là giao diện sử dụng dành cho người dùng trên môi trường web. Kibana sẽ sử dụng Elashtichsearch để tìm kiếm các dữ liệu phù hợp với yêu cầu của người dùng.

2. Cài đặt

2.1 Cài đặt java

Logstash được viết bằng java nên cần có một Java Virtual Machine để hoạt động. Vì vậy trước tiên bạn cần cài đặt Java, nên cài phiên bản mới nhất của java hiện nay Java8

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

2.2 Cài đặt Logstash

sudo wget http://download.elastic.co/logstash/logstash/packages/debian/logstash_1.5.3-1_all.deb
sudo dpkg -i logstash_1.5.3-1_all.deb
sudo update-rc.d logstash defaults 95 10
sudo /etc/init.d/logstash restart

2.3 Cài đặt Elasticsearch

sudo wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb
sudo dpkg -i elasticsearch-1.7.1.deb
sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch restart

2.4 Cài Kibana

Cài đặt Kibana

cd /opt
sudo wget https://download.elasticsearch.org/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
sudo tar xvfz kibana-4.1.1-linux-x64.tar.gz
sudo ln -s kibana-4.1.1-linux-x64 kibana

Khởi động Kibana tự động

cd /etc/init.d
sudo wget https://raw.githubusercontent.com/akabdog/scripts/master/kibana4_init
sudo chmod 755 kibana4_init
sudo update-rc.d kibana4_init defaults 95 10
sudo /etc/init.d/kibana4_init restart

Như vậy bạn đã xong việc cài đặt bộ công cụ này.

Chú ý: Kibana mặc định hoạt động ở cổng 5601 http://localhost:5601

2.5 Kiểm tra hoạt động của logstash, Elasticsearch, Kibana

Bạn chạy lệnh sau để khởi động logstash. Theo config này logstash sẽ nhận input là stdin (dữ liệu nhập từ màn hình) và dữ liệu được xuất ra Elasticsearch ở địa chỉ localhost

sudo -u logstash /opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { host => localhost } }'

3. Sử dụng Logstash, Elasticsearch, Kibana với Rails

Để sử dụng Logstash, Elasticsearch, Kibana hiệu quả thì log của Rails cũng cần được lưu trữ dưới dạng Json. Một số gem hỗ trợ việc lưu trữ log dưới dạng Json cho Rails, trong đó gem logstash-logger khá tiện lợi, dễ dùng và được đánh giá cao. Việc cài đặt và sử dụng logstash-logger bạn có thể tham khảo ở https://github.com/dwbutler/logstash-logger

Dưới đây là ví dụ một số log được lưu trữ bởi logstash-logger

{"test":1,"@timestamp":"2015-09-19T09:54:09.309+07:00","@version":"1","severity":"INFO","host":"somehost"}
{"test":2,"@timestamp":"2015-09-19T09:54:09.309+07:00","@version":"1","severity":"ERROR","host":"somehost"}
{"test":3,"@timestamp":"2015-09-19T09:54:09.309+07:00","@version":"1","severity":"DEBUG","host":"somehost"}

Sau đó bạn chạy logstash và config cho logstash đọc thông tin log thì file log của server như sau

example.config

input {
  file {
    type => "rails logs"
    path => "#path_your_log_file"
    codec =>   json {
      charset => "UTF-8"
    }
  }
}
output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    embedded => true
  }
}

Sau đó bạn khởi động logstash và sử dụng file config này để cấu hình cho logstash

sudo -u logstash /opt/logstash/bin/logstash -f example.config

Khởi động lại elasticsearch

sudo /etc/init.d/elasticsearch restart

Sau đó bạn vào địa chỉ localhost:5601 và có thể thấy các log đã được hiển thị lên. Bạn có thể tìm kiếm các log, hoặc tạo biểu đồ cho log. Như vậy việc cài đặt và sử dụng bộ công cụ Logstash, Elashticsearch, Kibana đã hoàn tất.

Screenshot from 2015-09-26 23:09:49.png

Bạn có thể tham khảo thêm một số hướng dẫn sử dụng Kibana chi tiết cho việc tìm kiếm, tạo biểu đồ, tạo báo cáo tại các link sau:

https://www.elastic.co/guide/en/beats/packetbeat/current/_kibana_query_and_filter.html https://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations