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 ...
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.
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