基于docker-compose搭建EFK(Elasticsearch+fluentd+kibana)的日志平台

发布于:2025-09-02 ⋅ 阅读:(23) ⋅ 点赞:(0)


前言

手上的项目需要搭建一个日志平台收集业务和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.0
    container_name: es01
    environment:
      - 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: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /data/monitor/01-es-data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - es-network

  es02:
    image: docker.1ms.run/elasticsearch:8.8.0
    container_name: es02
    environment:
      - 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: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /data/monitor/02-es-data:/usr/share/elasticsearch/data
    networks:
      - es-network

  es03:
    image: docker.1ms.run/elasticsearch:8.8.0
    container_name: es03
    environment:
      - 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: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /data/monitor/03-es-data:/usr/share/elasticsearch/data
    networks:
      - es-network

  kibana:
    image: docker.1ms.run/kibana:8.8.0
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_HOSTS=http://es01:9200
      - XPACK_MONITORING_ENABLED=true
      - I18N_LOCALE=zh-CN 
    ports:
      - 5601:5601
    networks:
      - es-network
    depends_on:
      - es01

networks:
  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 tail
  path /var/log/containers/kube-apiserver*.log
  pos_file /var/log/td-agent/pos/k8s/kube-apiserver.log.pos
  tag kube-apiserver
  format json
  time_format %Y-%m-%dT%H:%M:%S.%NZ
</source>

# kube-controller
<source>
  @type tail
  path /var/log/containers/kube-controller*.log
  pos_file /var/log/td-agent/pos/k8s/kube-controller.log.pos
  tag kube-controller
  format json
  time_format %Y-%m-%dT%H:%M:%S.%NZ
</source>

# kube-scheduler
<source>
  @type tail
  path /var/log/containers/kube-scheduler*.log
  pos_file /var/log/td-agent/pos/k8s/kube-scheduler.log.pos
  tag kube-scheduler
  format json
  time_format %Y-%m-%dT%H:%M:%S.%NZ
</source>

<match **>
  @type elasticsearch
  host xxx.xxx.xxx.xx(IP)
  port 9200
  type_name _doc
  logstash_format true
  logstash_prefix xxxx-${tag}

其他

查看支持的es版本,版本信息不一致的话,日志推不上去

# 查看支持的es版本
td-agent-gem list elasticsearch

在这里插入图片描述

五、登陆kibana查看采集结果,配置index

访问数据视图界面,配置数据视图
http://IP:5601/app/management/kibana/dataViews
在这里插入图片描述
discover页面查看日志
在这里插入图片描述

总结

简单搭建,后续有需求再搞细节,这里用的是没有证书的,按照自己的场景配置证书就可以了。


网站公告

今日签到

点亮在社区的每一天
去签到