【ELK+Kafka+filebeat分布式日志收集】分布式日志收集详解
在这个解决方案中,我们将使用ELK (Elasticsearch, Logstash, Kibana) 堆栈来收集分布式系统的日志。我们还将使用Kafka作为一个消息代理,以及Filebeat作为日志收集器。
- 安装Elasticsearch
Elasticsearch是ELK堆栈的核心,它负责存储日志并提供搜索接口。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
- 安装Kibana
Kibana是一个基于Web的工具,可以用来搜索、分析和可视化存储在Elasticsearch索引中的日志数据。
sudo apt-get install kibana
- 安装Logstash
Logstash是一个数据处理管道,它用于收集日志、转换日志格式并将其存储以Elasticsearch。
sudo apt-get install logstash
- 安装Kafka
Kafka是一个分布式流处理平台,我们将用它来缓冲传入的日志事件。
wget https://www.apache.org/dist/kafka/2.4.0/kafka_2.13-2.4.0.tgz
tar -xzf kafka_2.13-2.4.0.tgz
cd kafka_2.13-2.4.0
然后,启动Zookeeper和Kafka服务器:
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &
- 安装Filebeat
Filebeat是一个轻量级的日志收集器,我们将在每台服务器上使用它来将日志发送到Kafka。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-amd64.deb
sudo dpkg -i filebeat-7.5.1-amd64.deb
- 配置Filebeat
在Filebeat的配置文件中指定输出到Kafka。
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
output.kafka:
hosts: ["localhost:9092"]
topic: 'logs_topic'
- 配置Logstash
创建一个Logstash配置文件,以从Kafka主题中读取日志,并将其转发到Elasticsearch。
input {
kafka {
bootstrap_servers => "localhost:9092"
topics_pattern => "logs_topic"
group_id => "logstash_group"
}
}
filter {
# Only matched data are sent to Elasticsearch
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
- 启动服务
按照以下顺序启动服务:
# Start Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
# Start Kafka
bin/kafka-server-start.sh config/server.properties
# Start Elasticsearch
sudo /etc/init.d/elasticsearch start
# Start Kibana
sudo /etc/init.d/kibana start
评论已关闭