ELK分布式日志采集系统
* 系统架构:
filebeat 采集各服务器日志;Logstash-docker 过滤整理日志; Elasticsearch-docker 存储和索引数据; Kibana-docker 提供可视化展示和操作。
* FileBeat简介:Filebeat是本地文件的日志数据采集器。
* Kafka简介:Kafka 是性能非常好的并且支持分布式的消息队列中间件。Producer生产者、Consumer消费、Topic订阅主题、Group消费者分组、Partition消息分区、Broker经纪人(真正的kafka服务器)。
* ELK简介:
Logstash 是一个开源数据收集引擎,可以动态地将来自不同数据源的数据(系统日志,webserver日志,错误日志,应用日志等)统一起来,并将数据标准化到你所选择的目的地,即 ElasticSearch 搜索引擎(具有存储功能)。
ElasticSearch 是一个企业级海量数据的搜索引擎,将以 filebeat、Logstash 收集、转换来的日志信息存储到 es 中,再使用 es 进行全文检索、函数分析等操作,挖掘想要的信息。
Kibana 是一个针对 Elasticsearch 的开源分析及可视化平台,用来搜索、查看交互存储在 Elasticsearch 索引中的数据,使用Kibana,可以通过各种图表进行高级数据分析及展示。
* 搭建:
#开放端口:(内网)zookeeper-2181、kafka-9092、elasticsearch-9200 9300、kibana-5601、以及 (外网)filebeat 监听TCP数据的相应所有端口
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 9200 -j ACCEPT
。。。。
# 安装 filebeat:配置的TCP端口
mkdir /home/temp
cd /home/temp
导入安装包 filebeat-7.2.0-x86_64.rpm 或直接下载:wget https://mirrors.huaweicloud.com/filebeat/7.2.0/filebeat-7.2.0-x86_64.rpm
rpm -ivh filebeat-7.2.0-x86_64.rpm
cd /etc/filebeat
# 替换配置文件
filebeat.yml
# 配置日志输出到指定路径 /etc/filebeat/logs
mkdir /etc/filebeat/logs &&
vi /usr/lib/systemd/system/filebeat.service
(1)去掉 -e 使日志停止输出到 syslog 系统日志文件,转而输出到指定目录,即: Environment="BEAT_LOG_OPTS="
(2)修改日志路径:**** -path.logs /etc/filebeat/logs
systemctl daemon-reload &&
systemctl restart filebeat &&
chkconfig --add filebeat &&
chkconfig filebeat on
# 安装 zookeeper:2181(内)
docker run -d --net=host --restart=always --name zookeeper -t zookeeper:latest
# 安装 kafka:9092(内)
docker run -d --name kafka --net=host --restart=always -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.106:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.106:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka:latest
# 安装 logstash
mkdir -p /usr/share/logstash/pipeline
logstash-test.conf
mkdir -p /usr/share/logstash/config
logstash.yml pipeline.yml
docker run -d -it --name logstash --net=host --restart=always -v /usr/share/logstash/pipeline/logstash-test.conf:/usr/share/logstash/pipeline/logstash-test.conf -v /usr/share/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /usr/share/logstash/config/pipeline.yml:/usr/share/logstash/config/pipeline.yml logstash:7.2.0
# 安装 elasticsearch:9200 9300(内)
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
mkdir -p /usr/share/elasticsearch/config
elasticsearch.yml
docker run -d -it --name elasticsearch --net=host --restart=always -v /usr/share/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.2.0
# 安装 kibana:5601(内)
mkdir -p /usr/share/kibana/config
kibana.yml
docker run -d -it --name kibana --net=host --restart=always -v /usr/share/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.2.0
service filebeat restart
* 启动顺序(即日志收集流程顺序)
Filebeat——ZooKeeper —— Kafka—— Logstash—— elasticsearch—— Kibana
* 使用
http://192.168.1.103:5601
* kafka消息监控——kafka-tools
安装包:软件安装包
使用:注意 Content Types 中配置为 String 类型
* 删除 elasticsearch 中存储的日志数据
# 在Kibana中:
POST 队列名/_delete_by_query
{
"query": {
"match_all": {}
}
}