1. ELK part 6 - Tìm hiểu về logstash.
Tìm hiểu về logstash.
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
Ở bài trước mình đã giới thiệu cách dùng kafka làm cache cho ELK stack, ở bài này mình sẽ giới thiệu về filebeat, một thành phần agent dùng để thu thập và đẩy các sự kiện về logstash để logstash phân tích. Vậy chúng ta cùng xem cách thức mà beats thu thập các sự kiện và đẩy về thành phần logstash như thế nào nhé.
Beats là những data shipper mã nguồn mở mà ta sẽ cài đặt như các agent trên các server mà chúng ta cần thu thập các sự kiện để gửi các kiểu dữ liệu khác nhau tới Elasticsearch. Beats có thể gửi dữ liệu trực tiếp tới Elasticsearch hay tới Logstash.
Beats là một platform trong đó có các project nhỏ sinh ra thực hiện trên từng loại dữ liệu nhất định.
ELK cần sử dụng các “beat” để làm shipper giúp gửi các loại dữ liệu từ client tới Server.
Các beat index pattern cần được cài đặt trên cả ELK server và các client. Trên ELK server, các beat sẽ kết hợp với các thành phần để lọc dữ liệu, đánh chỉ mục, hiển thị.
Khi khởi động filebeat, nó sẽ khởi chạy một hay nhiều prospector, sẽ tìm kiếm các đường dẫn của tập tin tin mà ta đã khai báo. Với mỗi môt tập tin log mà prospector tìm thấy được, Filebeat sẽ khởi chạy một harvester. Mỗi một harvester đọc một tập tin log, và gửi các bản tin log này khi có dữ liệu mới tới spooler. Spooler là nơi tổng hợp các sự kiện và gửi dữ liệu đã tổng hợp được tới output mà ta đã cấu hình trên Filebeat.
Cấu trúc bên trong filebeat:
Yêu cầu : Đã cài đặt ELK.
Các lệnh bên dưới thực hiện trên Ubuntu 14.04 với quyền root.
Trên client Ubuntu chúng ta thực hiện cài đặt GPG keys từ Elastic và thêm Elastic repo:
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elastic.repo << EOF
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Cài đặt filebeat phiên bản 6.2.4
:
yum install filebeat-6.2.4 -y
Enable và start filebeat:
chkconfig --add filebeat
service filebeat start
Backup file cấu hình của filebeat:
cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.orig
rm -rf /etc/filebeat/filebeat.yml
touch /etc/filebeat/filebeat.yml
Tạo thư mục lưu trữ debug từ filebeat:
mkdir /var/log/filebeat
Thêm vào /etc/filebeat/filebeat.yml
cấu hình như sau:
filebeat:
prospectors:
-
paths:
- /var/log/*.log
encoding: utf-8
input_type: log
fields:
level: debug
document_type: syslog
registry_file: /var/lib/filebeat/registry
output:
logstash:
# Thông số hosts => là địa chỉ máy chủ ELK
hosts: ["IP-ELK:5044"]
worker: 1
bulk_max_size: 2048
logging:
to_syslog: false
to_files: true
files:
path: /var/log/filebeat
name: filebeat
rotateeverybytes: 1048576000 # = 1GB
keepfiles: 7
selectors: ["*"]
level: info
Trên client CentOS thực hiện thêm repo Elastic:
cat > /etc/yum.repos.d/elastic.repo << EOF
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Cài đặt filebeat
:
yum install filebeat-6.2.4 -y
Backup file cấu hình của filebeat:
cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.orig
rm -rf /etc/filebeat/filebeat.yml
touch /etc/filebeat/filebeat.yml
Thêm vào /etc/filebeat/filebeat.yml
cấu hình như sau:
cat > /etc/filebeat/filebeat.yml << EOF
filebeat:
prospectors:
- paths:
- /var/log/*.log
encoding: utf-8
input_type: log
fields:
level: debug
document_type: type
registry_file: /var/lib/filebeat/registry
output:
logstash:
# Ip của máy chủ ELK
hosts: ["IP-ELK:5044"]
worker: 2
bulk_max_size: 2048
logging:
to_syslog: false
to_files: true
files:
path: /var/log/filebeat
name: filebeat
rotateeverybytes: 1048576000 # = 1GB
keepfiles: 7
selectors: ["*"]
level: info
EOF
Khởi động lại filebeat
:
systemctl start filebeat
systemctl enable filebeat
Tạo file config của logstash để thiết lập input và output:
touch /etc/logstash/conf.d/02-logstash.conf
Thêm vào file cấu hình /etc/logstash/conf.d/02-logstash.conf
nội dung sau :
input {
beats {
port => 5044
ssl => false
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}
Sau đó restart lại logstash:
systemctl stop logstash
systemctl start logstash
Truy cập vào kibana với port 5601
theo đường dẫn:
IP-ELK:5601
Vào mục Management
sau đó chọn Create Index
:
Điền vào ô Define index pattern
dòng sau rồi nhấn Next step
:
Kiểm tra lại thông tin log được đẩy về ở phần Discover
:
Như vậy ở bài này mình đã tổng quan về beats và filebeat là gì, cách hoạt động của chúng và sử dụng logstash để cấu hình input và output, trong bài sau những sẽ đi sâu hơn về logstash để mọi người hiểu được rõ hơn cơ chế hoạt động của logstash và cách logstash sẽ filter log như thế nào.
Thực hiện bởi cloud365.vn
Chuỗi bài giới thiệu về giải pháp ELK
Tìm hiểu về logstash.
Tìm hiểu về filebeat.
Cài đặt ELK sử dụng kafka làm cache
Tài liệu về ELK stack
Tài liệu về ELK stack
Tài liệu về ELK stack