Hôm nay mình sẽ thử dùng ELK stack để monitor log hệ thống được deploy bằng pm2.
Đầu tiên ELK stack gồm có các thành phần như sau:
Sau khi đã cài các phần của ELK stack, cần config các bước như sau(bỏ qua các config security ):
Bước 1: Config Filebeat nhận file log của pm2 và đẩy qua logstash:
Sửa config Filebeat ở file: /etc/filebeat/filebeat.yml
- type: filestream id: pm2-log enabled: true paths: - ~/.pm2/logs/[pm2_id].log output.logstash: hosts: ["localhost:5044"]
Filebeat sẽ đọc file log theo path ~/.pm2/logs/[pm2_id].log
sau đó sẽ đẩy log qua logstash ở port 5044
Bước 2: Config Logstash nhận log filebeat và lưu log vào elasticsearch
Tạo một file config bất kỳ(first-pipeline.conf
) ở folder Logstash
input { beats { port => "5044" } } # filter { # # } output { elasticsearch { hosts => [ "localhost:9200" ] } }
Logstash sẽ nhận log từ filebeat ở port 5044 và lưu log xuống elasticsearch. Có thể config filter
để parse log nếu cần.
Logstash hỗ trợ các filter plugin sau.
Bước 3: Tạo index pattern kibana
Logstash sẽ tạo một index ở Elasticsearch và có Alias là logstash.
Vào Stack Management trong Kibana web tạo index pattern với alias logstash.
Sau đó vào Analytics > Discover chọn filter logstash. Toàn bộ log pm2 sẽ được hiển thị ở đây, có thể dùng KQL để filter log.