1. Các phiên bản cài đặt
- filebeat-7.4.0-linux-x86_64.tar.gz
- elasticsearch-7.4.0-linux-x86_64.tar.gz
- kibana-7.4.0-linux-x86_64.tar.gz
- logstash-7.4.0.tar.gz
- kafka_2.12-2.3.0.tgz
2. Tác dụng của các thành phần
- Filebeat: Công cụ chuyển tiếp nhật ký, theo dõi và đọc các tệp nhật ký được chỉ định.
- Elasticsearch: Cơ sở dữ liệu phân tán dựa trên JSON, thiết kế để mở rộng ngang, độ tin cậy cao và dễ quản lý.
- Kibana: Giao diện người dùng đồ họa cho phép hiển thị dữ liệu dưới dạng biểu đồ và cung cấp giao diện quản lý cho Elastic Stack.
- Logstash: Ứng dụng xử lý dữ liệu thời gian thực, chuyển đổi và gửi dữ liệu từ nguồn đến đích.
- Kafka: Hệ thống thông điệp phân phối có khả năng xử lý lượng lớn dữ liệu.
3. Cài đặt và cấu hình Filebeat
# Giải nén gói Filebeat và đặt vào thư mục mong muốn
tar -xzf filebeat-7.4.0-linux-x86_64.tar.gz -C /opt/app
mv filebeat-7.4.0 filebeat
# Sửa filebeat.yml
- type: log
enabled: true
paths:
- /opt/applog/ldp/daily.log # Đường dẫn đến tệp nhật ký
fields:
log_topic: "test-ldp" # Tên topic
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
# Cấu hình output đến Kafka
output.kafka:
hosts: ["xxx.xxx.xxx.xxx:9092"]
topic: '%{[fields][log_topic]}'
# Khởi động Filebeat
cd /opt/app/filebeat
nohup ./filebeat -e -c filebeat.yml > /opt/applog/filebeat.log &
# Nếu gặp lỗi kết nối, thêm IP và hostname của máy Kafka vào /etc/hosts
vi /etc/hosts
# Thêm dòng sau vào cuối file
xxx.xxx.xxx.xxx vm-vmwxxx-app
4. Cài đặt và cấu hình Kafka
- Giải nén và đặt vào thư mục mong muốn
tar -xzf kafka_2.12-2.3.0.tgz -C /DATA/elk
mv kafka_2.12-2.3.0 kafka
# Sửa file server.properties
cd /DATA/elk/kafka/config
vi server.properties
broker.id=0
port=9092
log.dirs=/DATA/logs/kafka
zookeeper.connect=xxx.xxx.xxx.xxx:2181
- Cấu hình Zookeeper
cd /DATA/elk/kafka/config
vi zookeeper.properties
dataDir=/DATA/logs/zk_data
dataLogDir=/DATA/logs/zk_log
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
- Viết script khởi động và dừng
# Khởi động
#!/bin/bash
/DATA/elk/kafka/bin/zookeeper-server-start.sh /DATA/elk/kafka/config/zookeeper.properties &
sleep 3
/DATA/elk/kafka/bin/kafka-server-start.sh /DATA/elk/kafka/config/server.properties &
# Dừng
#!/bin/bash
/DATA/elk/kafka/bin/kafka-server-stop.sh /DATA/elk/kafka/config/server.properties &
sleep 3
/DATA/elk/kafka/bin/zookeeper-server-stop.sh /DATA/elk/kafka/config/zookeeper.properties &
Khởi tạo và kiểm tra topic:
cd /DATA/elk/kafka/bin
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic ldp-test
./kafka-topics.sh --list --zookeeper localhost:2181
./kafka-topics.sh --delete --zookeeper localhost:2181 --topic ldp-test
Kiểm tra giao tiếp giữa producer và consumer:
- Producer:
./kafka-console-producer.sh --broker-list localhost:9092 --topic ldp-test - Consumer:
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic ldp-test --from-beginning
5. Cài đặt và cấu hình Logstash
Giải nén và chỉnh sửa file cấu hình
cd config/
mkdir conf.d
cd conf.d
touch ldp-pipeline.conf
vi ldp-pipeline.conf
input {
kafka {
bootstrap_servers => "xxx.xxx.xxx.xxx:9092"
topics => "test-ldp"
group_id => "ldp-group"
client_id => "ldp-client"
codec => "json"
id => "test-ldp"
}
}
output {
elasticsearch {
hosts => ["xxx.xxx.xxx.xxx:9200"]
index => "test-ldp-index-%{+YYYY.MM.dd}"
}
}
Sửa file logstash.yml
node.name: xxx.xxx.xxx.xxx
path.data: /DATA/elk/logstash/data
http.host: xxx.xxx.xxx.xxx
http.port: 9600
log.level: info
path.logs: /DATA/logs/logstash
Sửa file pipelines.yml
- pipeline.id: test-ldp
path.config: "/DATA/elk/logstash/config/conf.d/ldp-pipeline.conf"
pipeline.workers: 1
pipeline.batch.size: 125
pipeline.batch.delay: 50
queue.type: memory
6. Cài đặt Elasticsearch
Giải nén và cấu hình
cd /DATA/elk/elasticsearch/config
vi elasticsearch.yml
path.logs: /DATA/logs/es
network.host: xxx.xxx.xxx.xxx
cluster.initial_master_nodes: ["node-1"]
Khởi động Elasticsearch
nohup ./elasticsearch &
Nếu gặp lỗi, hãy điều chỉnh các giới hạn hệ thống:
# Điều chỉnh giới hạn file descriptor
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
# Kiểm tra hiệu lực
ulimit -Hn
ulimit -Sn
ulimit -Hu
ulimit -Su
# Điều chỉnh số luồng tối đa
vim /etc/security/limits.d/20-nproc.conf
chenyn soft nproc 4096
# Điều chỉnh vm.max_map_count
vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
Khởi động Logstash và kiểm tra dữ liệu
nohup ./logstash &
Kiểm tra dữ liệu trong Elasticsearch:
curl 'xxx.xxx.xxx.xxx:9200/_cat/indices?v'
curl -XGET 'xxx.xxx.xxx.xxx:9200/test-ldp-index/_search?pretty'
7. Cài đặt Kibana
Giải nén và cấu hình
cd config
vi kibana.yml
server.host: "xxx.xxx.xxx.xxx"
elasticsearch.hosts: ["http://esip:9200"]
Khởi động Kibana
cd /DATA/elk/kibana/bin
./kibana &
Tạo và xem dữ liệu trong Kibana.