【问题标题】:how to add the plugin fluent-plugin-opensearch to docker如何将插件 fluent-plugin-opensearch 添加到 docker
【发布时间】:2022-06-18 18:13:58
【问题描述】:

我正在尝试将日志从 fluentd(使用 docker 安装)发送到 opensearch。

在配置文件中,@type opensearch 使用插件 fluent-plugin-opensearch,我将其作为 Ruby gem 安装在本地。

我收到以下错误:

2022-04-22 15:47:10 +0000 [error]: config error file="/fluentd/etc/fluentd.conf" error_class=Fluent::NotFoundPluginError error="Unknown output plugin 'opensearch'. Run 'gem search -rd fluent-plugin' to find plugins"

作为解决方案,我发现我需要将插件添加到fluentd docker 容器中,但我找不到这样做的方法。

任何将插件添加到 docker 或此解决方案的替代方案的方法将不胜感激。

【问题讨论】:

  • 您可能需要创建一个包含所有依赖项的自定义 Dockerfile,然后构建它。示例:github.com/CloudWebManage/cwm-worker-logger/blob/main/…
  • @Azeem 我创建了自定义 dockerfile 并将其制成图像。但我不确定如何使用它。因为插件需要与 fluentd 在同一个容器中。我们不能在同一个容器中有多个图像
  • 好。多张图片是什么意思?该插件将成为新创建的图像的一部分,以 fluentd 作为其基本图像。你能否分享更多关于你是如何做到这一点的细节?
  • 您应该使用新创建的图像。请添加您的 Dockerfile、您用于构建它的命令,并在您的问题中运行它。
  • @Azeem 由于我无法弄清楚,我正在使用 docker compose 并遵循此文档:docs.fluentd.org/container-deployment/docker-compose 也许这也是您的意思。

标签: docker fluentd opensearch


【解决方案1】:

cmets 已经给出了提示,您需要构建自己的 Docker 映像。根据您可用的基础架构,您可以构建映像,将其存储在某个注册表中,然后在您的 compose 文件中使用它,或者在您使用 docker 的机器上构建它。

Dockerfile

这两种方法的共同点是您需要一个 Dockerfile。我使用 Calyptias Docker 镜像作为基础,但您可以使用任何您喜欢的 fluentd 镜像。我的 docker 文件如下所示:

FROM ghcr.io/calyptia/fluentd:v1.14.6-debian-1.0

USER root

RUN gem install fluent-plugin-opensearch
RUN fluent-gem install fluent-plugin-rewrite-tag-filter fluent-plugin-multi-format-parser

USER fluent
ENTRYPOINT ["tini",  "--", "/bin/entrypoint.sh"]
CMD ["fluentd"]

如您所见,它安装了更多插件,但第一行 RUN 对您来说很重要。

选项 1

如果您有可用的容器注册表,则可以使用 CI/CD 管道或简单地在本地构建映像并将其推送到那里。然后,您可以引用此自定义图像,而不是您今天使用的任何其他 fluentd 图像:

fluentd:
    image: registry.your-domain.xyz/public-projects/fluentd-opensearch:<tag|latest>
    container_name: fluentd
    ports:
      - ...
    restart: unless-stopped
    volumes:
      - ...

根据您的需要调整配置。

选项 2

您也可以让docker-compose 为您在本地构建容器。为此,在您存储docker-compose.yml 的同一文件夹中创建一个目录fluentd,并将Dockerfile 放在那里。

fluentd:
        build: ./fluentd
        container_name: fluentd
        ports:
          - ...
        restart: unless-stopped
        volumes:
          - ...

您可以引用本地构建目录,而不是从某个注册表中引用映像。这应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多