首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx无法连接EFK堆栈中的fluentd

Nginx无法连接EFK堆栈中的fluentd
EN

Stack Overflow用户
提问于 2022-06-08 15:10:52
回答 2查看 97关注 0票数 1

我正在设置一个由nginx、redis、mysql、myapp组成的应用程序堆栈。Nginx代理请求我的应用程序。我希望将日志从nginx发送到EFK堆栈,但是在启动nginx服务时会发生错误:

代码语言:javascript
复制
Error response from daemon: dial tcp 127.0.0.1:24224: connect: connection refused

docker-compose.yml用于用myapp进行堆栈

代码语言:javascript
复制
version: "3.8"
services:
  
  nginx:
    image: nginx:alpine
    deploy:
      mode: replicated
      replicas: 2
      labels:
        - traefik.enable=true
        - traefik.http.routers.node1.rule=Host(`${NODE1}`)
        - traefik.http.routers.node1.service=nginx
        - traefik.http.routers.node2.rule=Host(`${NODE2}`)
        - traefik.http.routers.node2.service=nginx
        - traefik.http.routers.node3.rule=Host(`${NODE3}`)
        - traefik.http.routers.node3.service=nginx
        - traefik.http.services.nginx.loadbalancer.server.port=80
      placement:
        constraints:
          - node.role == manager
    logging:
      driver: fluentd
      options:
        fluentd-address: localhost:24224
        tag: nginx-
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    ports: 
      - 80:80
    depends_on: 
      - myapp
    networks:
      - traefik-public
...

所有堆栈都位于相同的traefik-公共网络中,如果您从任何容器中生成ping fluentd,则流畅响应。

部分efk.yml

代码语言:javascript
复制
version: "3.7"
services:

  fluentd:
    image: registry.rebrainme.com/docker_users_repos/3912/dkr-30-voting/fluentd
    deploy:
      mode: global
    volumes:
      - /mnt/fluent.conf:/fluentd/etc/fluent.conf
    ports:
      - "24224:24224"
      - "24224:24224/udp"
    depends_on:
      - elasticsearch
      - kibana
    networks:
      - traefik-public
...

fluent.conf

代码语言:javascript
复制
<source>
  @type forward
  port 24224
  bind localhost
</source>

<match *.**>
  @type copy

  <store>
    @type elasticsearch
    host elasticsearch
    port 9200
    logstash_format true
    logstash_prefix fluentd
    logstash_dateformat %Y%m%d
    include_tag_key true
    type_name access_log
    tag_key @log_name
    flush_interval 1s
  </store>

  <store>
    @type stdout
  </store>
</match>

我寻求帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 06:19:36

为了在efk堆栈和应用程序堆栈之间建立连接,必须将fluentd端口绑定到主机端口。

代码语言:javascript
复制
version: "3.7"
services:

  fluentd:
    image: my_fluentd_image:latest
    deploy:
      mode: global
    configs:
      - source: fluent-conf
        target: /fluentd/etc/fluent.conf
    ports:
      - target: 24224
        published: 24224
        protocol: tcp
        mode: host
    depends_on:
      - elasticsearch
      - kibana
    networks:
      - traefik-public
票数 0
EN

Stack Overflow用户

发布于 2022-06-09 12:15:32

Tldr;

因为您使用的是两个组合文件。docker-compose.ymlefk.yml没有为网络共享相同的值。

到Fix

将两个文件合并到一个单独的文件中。

到Fix (分离了2个文件)

你应该首先创建一个网络。

代码语言:javascript
复制
docker network create traefik-public

然后用以下方式更新两个撰写文件

代码语言:javascript
复制
networks: 
  default: 
    external: 
      name: traefik-public

这应该能让它发挥作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72548145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档