在 Docker 上运行 Filebeat

编辑

Filebeat 的 Docker 镜像可从 Elastic Docker 镜像仓库获取。基础镜像为 centos:7

所有已发布的 Docker 镜像和标签列表可在 www.docker.elastic.co 获取。

这些镜像根据 Elastic 许可证免费使用。它们包含开源和免费的商业功能,以及对付费商业功能的访问。开始 30 天试用 以试用所有付费的商业功能。有关 Elastic 许可证级别的信息,请参阅 订阅 页面。

拉取镜像

编辑

获取 Docker 版 Filebeat 就像对 Elastic Docker 镜像仓库发出 docker pull 命令一样简单。

docker pull docker.elastic.co/beats/filebeat:8.16.0

或者,您可以下载其他仅包含 Apache 2.0 许可证下可用功能的 Docker 镜像。要下载这些镜像,请访问 www.docker.elastic.co

可选:验证镜像

编辑

您可以使用 Cosign 应用程序 验证 Filebeat Docker 镜像签名。

wget https://artifacts.elastic.co/cosign.pub
cosign verify --key cosign.pub docker.elastic.co/beats/filebeat:8.16.0

cosign 命令以 JSON 格式打印检查结果和签名有效负载。

Verification for docker.elastic.co/beats/filebeat:8.16.0 --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - The signatures were verified against the specified public key

运行 Filebeat 设置

编辑

使用 setup 命令运行 Filebeat 将创建索引模式并加载可视化、仪表板和机器学习作业。运行以下命令:

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

替换您的 Kibana 和 Elasticsearch 主机和端口。

如果您在 Elastic Cloud 中使用托管的 Elasticsearch 服务,请使用以下语法将 -E output.elasticsearch.hosts 行替换为 Cloud ID 和 elastic 密码:

-E cloud.id=<Cloud ID from Elasticsearch Service> \
-E cloud.auth=elastic:<elastic password>

在只读文件系统上运行 Filebeat

编辑

如果您想在只读文件系统上的 Docker 容器中运行 Filebeat,可以通过指定 --read-only 选项来实现。Filebeat 需要一个有状态目录来存储应用程序数据,因此使用 --read-only 选项,您还需要使用 --mount 选项指定该数据可以存储到的路径。

例如:

docker run --rm \
  --mount type=bind,source=$(pwd)/data,destination=/usr/share/filebeat/data \
  --read-only \
  docker.elastic.co/beats/filebeat:8.16.0

在 Docker 上配置 Filebeat

编辑

Docker 镜像提供了多种配置 Filebeat 的方法。传统方法是通过卷挂载提供配置文件,但也可以创建包含您配置的自定义镜像。

示例配置文件

编辑

下载此示例配置文件作为起点:

curl -L -O https://raw.githubusercontent.com/elastic/beats/8.16/deploy/docker/filebeat.docker.yml

卷挂载配置

编辑

在 Docker 上配置 Filebeat 的一种方法是通过卷挂载提供 filebeat.docker.yml。使用 docker run,卷挂载可以这样指定:

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" \
  --volume="registry:/usr/share/filebeat/data:rw" \
  docker.elastic.co/beats/filebeat:8.16.0 filebeat -e --strict.perms=false \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]  

替换您的 Elasticsearch 主机和端口。

如果您在 Elastic Cloud 中使用托管的 Elasticsearch 服务,请使用前面显示的语法将 -E output.elasticsearch.hosts 行替换为 Cloud ID 和 elastic 密码。

自定义您的配置

编辑

您之前下载的 filebeat.docker.yml 文件配置为根据应用于容器的 Docker 标签部署 Beats 模块。有关更多详细信息,请参阅 基于提示的自动发现。将标签添加到您的应用程序 Docker 容器,并在部署时由 Beats 自动发现功能获取它们。以下是在具有标签的 Apache HTTP Server 容器中配置 Filebeat 和 Metricbeat 模块的 Apache HTTP Server 的示例命令:

docker run \
  --label co.elastic.logs/module=apache2 \
  --label co.elastic.logs/fileset.stdout=access \
  --label co.elastic.logs/fileset.stderr=error \
  --label co.elastic.metrics/module=apache \
  --label co.elastic.metrics/metricsets=status \
  --label co.elastic.metrics/hosts='${data.host}:${data.port}' \
  --detach=true \
  --name my-apache-app \
  -p 8080:80 \
  httpd:2.4

自定义镜像配置

编辑

可以将您的 Filebeat 配置嵌入到自定义镜像中。以下是一个实现此目的的 Dockerfile 示例:

FROM docker.elastic.co/beats/filebeat:8.16.0
COPY --chown=root:filebeat filebeat.yml /usr/share/filebeat/filebeat.yml