Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志

第 1 步:使用 Docker Compose 部署 Elasticsearch 和 Kibana

首先,我们需要创建一个 docker-compose.yml 文件来定义和运行 Elasticsearch 和 Kibana 服务。这种方式可以轻松管理两个容器的配置和网络。

  1. 创建 docker-compose.yml 文件

    在一个新的文件夹中,创建名为 docker-compose.yml 的文件,并填入以下内容。

    复制代码
    version: '3.8'
    services:
      elasticsearch:
        image: elasticsearch:8.18.2
        container_name: elasticsearch
        environment:
          - "discovery.type=single-node"
          - "xpack.security.enabled=false" # 重要:为简化部署,此处禁用安全功能。生产环境请勿使用!
          - "ES_JAVA_OPTS=-Xms1g -Xmx1g"   # 根据您的服务器资源调整内存
        volumes:
          - es_data:/usr/share/elasticsearch/data
        ports:
          - "9200:9200"
          - "9300:9300"
        networks:
          - elastic_net
    
      kibana:
        image: kibana:8.18.2
        container_name: kibana
        environment:
          - "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" # 指向 Elasticsearch 容器
        ports:
          - "5601:5601"
        depends_on:
          - elasticsearch
        networks:
          - elastic_net
    
    volumes:
      es_data:
        driver: local
    
    networks:
      elastic_net:
        driver: bridge

    配置说明:

    • xpack.security.enabled=false: 我们禁用了 Elasticsearch 的安全功能(如用户认证)。这极大地简化了配置过程,但强烈不建议在生产环境中使用

    • discovery.type=single-node: 将 Elasticsearch 配置为单节点模式。

    • volumes: 创建一个名为 es_data 的数据卷,用于持久化存储 Elasticsearch 的数据,防止容器删除后数据丢失。

    • networks: 创建了一个名为 elastic_net 的桥接网络,以确保 Kibana 和 Elasticsearch 可以相互通信。

  2. 启动服务

    在包含 docker-compose.yml 文件的目录中,打开终端并运行以下命令:

    复制代码
    docker-compose up -d
  3. 验证服务状态

    等待几分钟,让服务完全启动。然后通过以下命令检查容器是否正常运行:

    复制代码
    docker-compose ps

    您应该能看到 elasticsearchkibana 两个容器都处于 Up 状态。

    您也可以通过浏览器或 curl 命令来验证服务是否可访问:

    • Elasticsearch : 打开终端,运行 curl http://localhost:9200。如果返回一个包含版本信息的 JSON 对象,则表示 Elasticsearch 运行正常。
    • Kibana : 打开浏览器,访问 http://localhost:5601。如果看到 Kibana 的欢迎界面,则表示 Kibana 运行正常。

第 2 步:安装并配置 Filebeat

现在,我们需要在您已经安装了 NGINX 的服务器上安装和配置 Filebeat。

  1. 安装 Filebeat

    filebeat-8.18.2-x86_64.rpm 包上传到您的 NGINX 服务器,并使用以下命令进行安装:

    复制代码
    rpm -vi filebeat-8.18.2-x86_64.rpm

    安装完成后,Filebeat 的配置文件位于 /etc/filebeat/ 目录下。

  2. 启用 NGINX 模块

    Filebeat 提供了预置的模块来简化常见服务的日志采集,包括 NGINX。运行以下命令启用 NGINX 模块:

    复制代码
    filebeat modules enable nginx

    此命令会在 /etc/filebeat/modules.d/ 目录下创建一个 nginx.yml 配置文件(如果它不存在的话)。

  3. 配置 filebeat.yml

    编辑主配置文件 /etc/filebeat/filebeat.yml。您需要修改 output.elasticsearchsetup.kibana 部分,使其指向我们刚刚用 Docker 部署的服务。

    复制代码
    nano /etc/filebeat/filebeat.yml

    找到并修改以下关键部分(文件中的其他默认配置可以暂时保持不变):

    复制代码
    # ============================== Outputs ===============================
    
    # ---------------------------- Elasticsearch Output ----------------------------
    output.elasticsearch:
      # Array of hosts to connect to.
      # 重要:请将 'your_server_ip' 替换为您服务器的实际 IP 地址。
      # 不要使用 localhost 或 127.0.0.1,因为 Filebeat 运行在主机上,而 ES 在 Docker 容器中。
      hosts: ["your_server_ip:9200"]
    
      # 如果您在上面 docker-compose.yml 中开启了安全功能,则需要配置用户名和密码
      # username: "elastic"
      # password: "your_password"
    
    # ============================== Kibana ==================================
    
    # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
    # This requires a Kibana endpoint configuration.
    setup.kibana:
    
      # Kibana Host
      # 重要:请将 'your_server_ip' 替换为您服务器的实际 IP 地址。
      host: "your_server_ip:5601"

    关键点:

    • hosts: 必须填写您服务器的公网或内网IP地址 ,而不是 localhost,因为 Filebeat 进程需要从主机访问 Docker 容器暴露的端口。

    • setup.kibana.host: 同上,也需要填写您服务器的 IP 地址。

  4. 检查 NGINX 模块配置

    打开 /etc/filebeat/modules.d/nginx.yml 文件,确保它监控的日志路径是正确的。默认配置如下:

    复制代码
    - module: nginx
      access:
        enabled: true
        var.paths: ["/var/log/nginx/access.log*"] # 检查您的 NGINX access 日志路径是否匹配
      error:
        enabled: true
        var.paths: ["/var/log/nginx/error.log*"]  # 检查您的 NGINX error 日志路径是否匹配

    如果您的 NGINX 日志文件存放在其他位置,请务必修改 var.paths 的值。

第 3 步:启动 Filebeat 并加载资源

在启动 Filebeat 之前,我们需要运行 setup 命令。这个命令会自动连接到 Kibana 和 Elasticsearch,并加载预置的 NGINX 仪表板、索引模式等资源。

  1. 加载 Filebeat 资源

    运行以下命令。对日志格式进行简单的模板分解,此过程可能需要一两分钟。

    复制代码
    filebeat setup -e

    如果看到类似 Dashboards loaded. 的信息,说明资源已成功加载到 Kibana。

  2. 启动并启用 Filebeat 服务

    现在可以启动 Filebeat 服务,并设置为开机自启。

    复制代码
    # 启动 Filebeat
    systemctl start filebeat
    
    # 设置为开机自启
    systemctl enable filebeat
  3. 检查 Filebeat 状态

    运行以下命令确保 Filebeat 服务正在运行且没有错误:

    复制代码
    systemctl status filebeat

    您也可以查看 Filebeat 的日志来排查问题:journalctl -u filebeat -f

第 4 步:在 Kibana 中查看 NGINX 日志

现在,所有服务都已配置并运行,是时候在 Kibana 中查看成果了。

  1. 访问 Kibana

    再次打开浏览器,访问 http://your_server_ip:5601

  1. 打开 Discover(发现)页面

    • 点击左上角的菜单图标(三条横线)。

    • 在 "Analytics" 分类下,点击 "Discover"。

  2. 选择索引模式

    • 在 Discover 页面的左上角,您应该会看到一个下拉菜单。

    • filebeat setup 命令已经为您创建了名为 filebeat-* 的索引模式。如果未被选中,请从下拉列表中选择它。

  1. 查询日志

    一旦选择了正确的索引模式,您应该能看到从 NGINX 推送过来的日志数据流。

    • 您可以在顶部的查询栏(KQL)中输入查询语句来过滤日志,例如 nginx.access.response_code : 404 来查找所有 404 错误。

    • 左侧的字段列表可以让您快速筛选和分析数据。

  2. 查看 NGINX 仪表板

    Filebeat 最强大的功能之一就是预置的仪表板。

    • 点击左上角的菜单图标。

    • 在 "Analytics" 分类下,点击 "Dashboard"。

    • 在搜索框中输入 "nginx",您应该能看到类似于 [Filebeat NGINX] Access and error logs ECS 的仪表板。

    • 点击打开它,您将看到一个包含各种图表和统计信息的可视化界面,全面展示了 NGINX 的访问情况和错误。

至此,已成功搭建了一套完整的日志采集分析系统。

相关推荐
Ghost Face...8 分钟前
Docker实战:从安装到多容器编排指南
运维·docker·容器
此生只爱蛋33 分钟前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617939 分钟前
Linux 基础
linux·运维·arm开发
废春啊1 小时前
前端工程化
运维·服务器·前端
我只会发热1 小时前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
爱潜水的小L1 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
zhuzewennamoamtf1 小时前
Linux I2C设备驱动
linux·运维·服务器
TSAI1 小时前
Docker Swarm 集群部署 Eureka 服务注册中心:高可用微服务架构的基石
spring cloud·docker
不惑_1 小时前
Windows 安装 Docker 和 Docker Compose 完整教程
windows·docker·容器
梅尔文.古2 小时前
RaspberryPi-如何启用看门狗
linux·运维·服务器