基于docker-compose搭建EFK(Elasticsearch+fluentd+kibana)的日志平台
文章目录
- 前言
- 一、EFK是什么(来自百度AI)?
- 二、版本选择
- 三、es+kibana部署
- 3.1 docker-compose安装、docker安装
- 3.2 docker安装
- 3.3 路径准备
- 3.4 es.yaml准备
- 3.5 运行服务
- 四、fluent的安装
- 4.1 安装包下载
- 4.2 安装
- 4.3 增加k8s日志配置为例
- 其他
- 五、登陆kibana查看采集结果,配置index
- 总结
前言
手上的项目需要搭建一个日志平台收集业务和k8s的日志,看了下大家都用EFK,就自己试着搭建一下。
一、EFK是什么(来自百度AI)?
EFK是一套由Elasticsearch、Filebeat和Kibana组成的开源日志收集与分析系统,用于高效存储、检索和可视化日志数据。
核心组件与功能
-
Elasticsearch。
分布式搜索和分析引擎,负责日志的存储、索引和实时检索,支持全文与结构化查询。
特点包括高扩展性、近实时数据处理和强大的聚合分析能力。 -
Filebeat。
轻量级日志采集工具,替代传统Logstash,资源占用更低,专用于收集和转发日志至Elasticsearch或Logstash。 -
Kibana。
数据可视化平台,提供交互式图表、仪表盘和搜索界面,便于用户直观分析日志数据。
二、版本选择
手上的项目有多套生产环境,但是主要是centos7.9和ubuntu2204。最终确定使用fluent 4.5.2-1,这是centos7上的最后一个版本,在ubuntu2204上也支持。
同时选择配套的es8.8.0
- ES版本:8.8.0
- kibana版本:8.8.0
- fluent版本:4.5.2-1
- docekr-compose版本:1.29.2
- fluent-plugin-elasticsearch版本:5,.3.0
三、es+kibana部署
3.1 docker-compose安装、docker安装
docker-compose的部署参考链接: https://blog.csdn.net/baidu_35848778/article/details/142636644
3.2 docker安装
centos链接: https://blog.csdn.net/baidu_35848778/article/details/142630050
ubuntu
ubuntu链接: https://blog.csdn.net/baidu_35848778/article/details/126833898
3.3 路径准备
mkdir -p /data/monitor/01-es-data
mkdir -p /data/monitor/02-es-data
mkdir -p /data/monitor/03-es-data
chmod 755 -R /data/monitor/01-es-data
chmod 755 -R /data/monitor/02-es-data
chmod 755 -R /data/monitor/03-es-data
3.4 es.yaml准备
version: "3.7"services:es01:image: docker.1ms.run/elasticsearch:8.8.0container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- TAKE_FILE_OWNERSHIP=true- xpack.security.enabled=false- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- /data/monitor/01-es-data:/usr/share/elasticsearch/dataports:- 9200:9200networks:- es-networkes02:image: docker.1ms.run/elasticsearch:8.8.0container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- TAKE_FILE_OWNERSHIP=true- xpack.security.enabled=false- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- /data/monitor/02-es-data:/usr/share/elasticsearch/datanetworks:- es-networkes03:image: docker.1ms.run/elasticsearch:8.8.0container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- TAKE_FILE_OWNERSHIP=true- xpack.security.enabled=false- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- /data/monitor/03-es-data:/usr/share/elasticsearch/datanetworks:- es-networkkibana:image: docker.1ms.run/kibana:8.8.0container_name: kibanaenvironment:- SERVER_NAME=kibana- ELASTICSEARCH_HOSTS=http://es01:9200- XPACK_MONITORING_ENABLED=true- I18N_LOCALE=zh-CN ports:- 5601:5601networks:- es-networkdepends_on:- es01networks:es-network:driver: bridge
3.5 运行服务
docker-compose -f ./es.yaml up -d
docker-compose -f ./es.yaml ps
四、fluent的安装
4.1 安装包下载
下载地址:https://www.fluentd.org/download/fluent_package
有时候能打开,有时候打不开 应该还是国内网络的限制,但是下面的wget命令没有问题
# rpm
wget http://packages.treasuredata.com.s3.amazonaws.com/4/redhat/7/x86_64/td-agent-4.5.2-1.el7.x86_64.rpm
# deb
wget https://s3.amazonaws.com/packages.treasuredata.com/4/ubuntu/jammy/pool/contrib/t/td-agent/td-agent_4.5.2-1_amd64.deb
4.2 安装
使用本地安装方式安装即可
# centos
yum localinstall ./td-agent-4.5.2-1.el7.x86_64.rpm
# ubuntu
apt install ./td-agent_4.5.2-1_amd64.deb
修改service用户到root
/usr/lib/systemd/system/td-agent.service
[Service]
User=root
Group=root
启动服务
systemctl enable td-agent
systemctl daemon-reload
systemctl restart td-agent
4.3 增加k8s日志配置为例
我这里只是简单的收集一下,那种比较高级的收集和筛选后续有机会的话再搞
/etc/td-agent/td-agent.conf
# kube
# kube-apiserver
<source>@type tailpath /var/log/containers/kube-apiserver*.logpos_file /var/log/td-agent/pos/k8s/kube-apiserver.log.postag kube-apiserverformat jsontime_format %Y-%m-%dT%H:%M:%S.%NZ
</source># kube-controller
<source>@type tailpath /var/log/containers/kube-controller*.logpos_file /var/log/td-agent/pos/k8s/kube-controller.log.postag kube-controllerformat jsontime_format %Y-%m-%dT%H:%M:%S.%NZ
</source># kube-scheduler
<source>@type tailpath /var/log/containers/kube-scheduler*.logpos_file /var/log/td-agent/pos/k8s/kube-scheduler.log.postag kube-schedulerformat jsontime_format %Y-%m-%dT%H:%M:%S.%NZ
</source><match **>@type elasticsearchhost xxx.xxx.xxx.xx(IP)port 9200type_name _doclogstash_format truelogstash_prefix xxxx-${tag}
其他
查看支持的es版本,版本信息不一致的话,日志推不上去
# 查看支持的es版本
td-agent-gem list elasticsearch
五、登陆kibana查看采集结果,配置index
访问数据视图界面,配置数据视图
http://IP:5601/app/management/kibana/dataViews
discover页面查看日志
总结
简单搭建,后续有需求再搞细节,这里用的是没有证书的,按照自己的场景配置证书就可以了。