如何在 Docker 容器中运行 Filebeat

举报
kaliarch 发表于 2023/11/11 22:38:56 2023/11/11
【摘要】 在这篇博客中,我们将学习如何在容器环境中运行 Filebeat。为了快速理解 -Filebeat用于转发和集中日志数据。它重量轻,占用空间小,并且使用的资源更少。它作为代理安装在您的服务器上。它监视指定位置的日志文件。它收集日志事件并将其转发到Elasticsearch或 Logstash 进行索引。设置在此设置中,我有一个 ubuntu 主机,运行 Elasticsearch 和 Kiba...

在这篇博客中,我们将学习如何在容器环境中运行 Filebeat。为了快速理解 -

  • Filebeat用于转发和集中日志数据。
  • 它重量轻,占用空间小,并且使用的资源更少。
  • 它作为代理安装在您的服务器上。
  • 它监视指定位置的日志文件。
  • 它收集日志事件并将其转发到Elasticsearch或 Logstash 进行索引。

设置

设置

在此设置中,我有一个 ubuntu 主机,运行 Elasticsearch 和 Kibana 作为 docker 容器。我会将 Elasticsearch 和 Kibana 端口绑定到我的主机,以便我的 Filebeat 容器可以同时访问 Elasticsearch 和 Kibana。我暂时不会使用 Logstash。

我还有另一个正在运行的 ubuntu 虚拟机,我已经使用 Vagrant 配置了它。在此客户端虚拟机中,我将运行Nginx和 Filebeat 作为容器。

这个想法是,Filebeat 容器应该从客户端计算机上运行的所有容器收集所有日志,并将它们发送到主机上运行的 Elasticsearch。

您可以将 Filebeat 配置为从任意数量的容器收集日志。在这里,我将只为此演示安装一个容器。现在,让我们从演示开始。

演示

version: '2.2'

services:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
    container_name: elasticsearch
    environment:
      - node.name=elasticsearch
      - discovery.seed_hosts=elasticsearch
      - cluster.initial_master_nodes=elasticsearch
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200

  kibana:
    image: docker.elastic.co/kibana/kibana:7.9.2
    container_name: kibana
    environment:
      ELASTICSEARCH_URL: "http://elasticsearch:9200"
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

volumes:
  esdata1:
    driver: local

1. 在主机上将 Elastic Search 和 Kibana 作为 Docker 容器运行

要将 Elastic Search 和 Kibana 作为 docker 容器运行,我使用 docker-compose,如下所示 -

复制上面的 dockerfile 并使用命令运行它 - sudo docker-compose up -d

此 docker-compose 文件将启动两个容器,如以下输出所示 -

docker 撰写

您可以使用 - sudo docker ps检查正在运行的容器

码头工人

使用该命令的容器的日志可以使用 - sudo docker-compose log -f检查

我们现在必须能够从您的浏览器访问 Elastic Search 和 Kibana。

只需输入localhost:9200即可访问 Elasticsearch。你应该看到——

弹性搜索网页

同样,对于 Kibana,请在浏览器中输入localhost:5601 。

基巴纳网页

2. 在虚拟机上将 Nginx 和 Filebeat 作为 Docker 容器运行

现在,让我们先转到虚拟机并部署 nginx。输入以下命令 -

sudo docker run -d -p 8080:80 — 名称 nginx nginx

码头运行

您可以在终端上使用此命令来检查它是否已正确部署 -

卷曲本地主机:8080

这应该会得到以下响应 -

卷曲 Nginx

我们还应该能够通过浏览器访问 nginx 网页。为此,我们需要知道虚拟机的 IP。你可以像这样找到它。

ip

现在在浏览器中输入192.168.1.14:8080 。应打开以下网页 -

nginx 网页

现在,我们只需部署 Filebeat 容器即可。使用以下命令下载镜像 - sudo docker pull docker.elastic.co/beats/filebeat:7.9.2

文件节拍

3. 设置Filebeat容器

现在要运行 Filebeat 容器,我们需要设置将从 filebeat 发送的日志的 elasticsearch 主机。这个命令将做到这一点 -

sudo docker run \ 
docker.elastic.co/beats/filebeat:7.9.2 \ 
setup -E setup.kibana.host= host_ip :5601 \ 
-E output.elasticsearch.hosts=[" host_ip :9200"]

将字段host_ip替换为主机的 IP 地址并运行命令。

文件节拍

现在让我们使用下面给出的示例配置文件来设置 filebeat 

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:192.168.1.7:9200}'

我们只需要将最后一行中的elasticsearch替换为我们主机的 IP 地址,然后保存该文件,使其看起来像这样 -

最后,使用以下命令使用 Filebeat 容器挂载卷。

docker run -d \ 
  --name=filebeat \ 
  --user=root \ 
  --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \ 
  --volume ="/var/lib/docker/containers:/var/lib/docker/containers:ro" \ 
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \ 
  docker .elastic.co/beats/filebeat:7.9.2 filebeat -e --strict.perms=false

我们的设置现在已完成。现在我们可以转到 Kibana 并可视化从 Filebeat 发送的日志。

文件节拍

要在Docker容器中运行Filebeat,需要创建包含Filebeat配置文件的Docker镜像,并设置启动命令。确保配置文件中指定了正确的日志路径和输出目标。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。