Alertmanager docker 容器拒绝连接

Posted

技术标签:

【中文标题】Alertmanager docker 容器拒绝连接【英文标题】:Alertmanager docker container refuses connections 【发布时间】:2021-10-07 15:38:54 【问题描述】:

我有一个 docker-compose 文件,其中包含一个 django 应用、Prometheus 监控容器和 Alertmanager 容器。

所有构建正常,应用程序正在运行,Prometheus 正在监控,但是当它要触发警报时,警报不会到达 Alertmanager 容器并显示以下错误消息:

prometheus_1    | level=error ts=2021-08-02T08:58:16.018Z caller=notifier.go:527 component=notifier alertmanager=http://0.0.0.0:9093/api/v2/alerts count=1 msg="Error sending alert" err="Post \"http://0.0.0.0:9093/api/v2/alerts\": dial tc
p 0.0.0.0:9093: connect: connection refused"

Alertmanager 也像这样拒绝 telnet 测试连接

klex@DESKTOP-PVC5EP:~$ telnet 0.0.0.0 9093
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is '^]'.
Connection closed by foreign host.

docker-compose 文件是:

version: "3"

services:
  web:
    container_name: smsgate
    build: .
    command: sh -c "python manage.py migrate &&
      python manage.py collectstatic --no-input && 
      python manage.py runserver 0.0.0.0:15001"
    volumes:
      - .:/smsgate:rw
      - static_volume:/home/app/smsgate/static
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "15001:15001"
    env_file:
      - .env.prod
    image: smsgate
    restart: "always"
    networks:
      - promnet

  prometheus:
    image: prom/prometheus
    volumes:
    - ./prometheus/:/etc/prometheus/
    depends_on:
      - alertmanager
    ports:
      - "9090:9090"
    networks:
      - promnet

  alertmanager:
    image: prom/alertmanager
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager/:/etc/alertmanager/
    restart: "always"
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'
    networks:
      - promnet

volumes:
  static_volume:
  alertmanager_volume:
  prometheus_volume:

networks:
  promnet:
    driver: bridge

而prometheus.yml配置文件是

global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - "0.0.0.0:9093"
rule_files:
  - alert.rules.yml

scrape_configs:
  - job_name: monitoring
    metrics_path: /metrics
    static_configs:
      - targets:
          - smsgate:15001

很有可能是网络?配置问题,因为服务似乎不接受任何连接。

Prometheus 和 Alertmanager GUI 界面可以通过浏览器访问 http://127.0.0.1:9090/http://127.0.0.1:9093/分别

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

尝试使用 服务名称 而不是 0.0.0.0。将警报块配置中的最后一行更改为:

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - "alertmanager:9093"

鉴于他们在同一个网络上,它应该可以正常工作

更新

我首先误解了这个问题。道歉。请检查上面的更新块☝?

【讨论】:

试过没有成功。这个块是关于 App>Prometheus 通信,它工作正常。 道歉大卫,我错过了这里的重点。我已经编辑了我的答案,希望现在更好了?

以上是关于Alertmanager docker 容器拒绝连接的主要内容,如果未能解决你的问题,请参考以下文章

连接到 docker-compose mysql 容器会拒绝访问,但运行相同映像的 docker 不会

Dockerizing springboot应用程序(在容器中)未连接到rabbitmq(在容器中):连接被拒绝

Mariadb docker容器无法使用Python连接到主机上的MySQL服务器(111连接被拒绝)

尝试从Docker容器内部连接到DB时,“连接被拒绝”

无法从Intellij连接到在docker容器中运行的mySql - “指定的数据库用户/密码组合被拒绝”

使用go webservice在docker中连接到mysql时连接被拒绝