得到错误“获取http:// localhost:9443 / metrics:拨打tcp 127.0.0.1:9443:connect:连接被拒绝”

时间:2019-01-28 07:41:39

标签: docker hyperledger-fabric prometheus

我正在尝试使用Hyperledger Fabric v1.4网络配置Prometheus和Grafana,以分析对等和链码mertics。遵循此documentation之后,我已将对等容器的端口9443映射到主机的端口9443。我还将对等体providerprometheus部分下的metrics项更改为core.yml。我已经通过以下方式在docker-compose.yml中配置了普罗米修斯和格拉芬娜。

  prometheus:
    image: prom/prometheus:v2.6.1
    container_name: prometheus
    volumes:
    - ./prometheus/:/etc/prometheus/
    - prometheus_data:/prometheus
    command:
    - '--config.file=/etc/prometheus/prometheus.yml'
    - '--storage.tsdb.path=/prometheus'
    - '--web.console.libraries=/etc/prometheus/console_libraries'
    - '--web.console.templates=/etc/prometheus/consoles'
    - '--storage.tsdb.retention=200h'
    - '--web.enable-lifecycle'
    restart: unless-stopped
    ports:
    - 9090:9090
    networks:
    - basic
    labels:
    org.label-schema.group: "monitoring"

  grafana:
    image: grafana/grafana:5.4.3
    container_name: grafana
    volumes:
    - grafana_data:/var/lib/grafana
    - ./grafana/datasources:/etc/grafana/datasources
    - ./grafana/dashboards:/etc/grafana/dashboards
    - ./grafana/setup.sh:/setup.sh
    entrypoint: /setup.sh
    environment:
    - GF_SECURITY_ADMIN_USER={ADMIN_USER}
    - GF_SECURITY_ADMIN_PASSWORD={ADMIN_PASS}
    - GF_USERS_ALLOW_SIGN_UP=false
    restart: unless-stopped
    ports:
    - 3000:3000
    networks:
    - basic
    labels:
    org.label-schema.group: "monitoring"

当我在远程centos机器上curl 0.0.0.0:9443/metrics时,会得到所有指标列表。但是,当我使用上述配置运行Prometheus时,它将引发错误Get http://localhost:9443/metrics: dial tcp 127.0.0.1:9443: connect: connection refused。这就是我的prometheus.yml的样子。

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 10s
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'peer_metrics'
    scrape_interval: 10s
    static_configs:
      - targets: ['localhost:9443']

即使在浏览器中访问端点http://localhost:9443/metrics时,我也会获得所有指标。我在这里做错了。普罗米修斯指标如何在其界面而不是对等方的界面上显示?

4 个答案:

答案 0 :(得分:2)

您的prometheus容器未在主机网络上运行。它在自己的网桥(由docker-compose创建的网桥)上运行。因此,对等端的scrape配置应指向对等容器的IP。

推荐的解决方法:

  • 在与光纤网络相同的网络中运行prometheus和grafana。 在docker-compose for prometheus stack中,您可以像这样引用它:
networks:
  default:
    external:
      name: <your-hyperledger-network>

(使用docker network ls查找网络名称)

然后,您可以在抓取配置中使用http://<peer_container_name>:9443

答案 1 :(得分:1)

localhost代替docker.for.mac.localhost可能会解决此问题。

答案 2 :(得分:1)

问题:在Prometheus上,您添加了用于抓取的服务,但在http://localhost:9090/targets上,端点状态为 Down 出现错误:

获取http:// localhost:9091 / metrics:拨打tcp 127.0.0.1:9091:connect: 连接被拒绝

enter image description here

解决方案:在prometheus.yml上,您需要验证

  1. 抓取指向正确端点的详细信息。
  2. yml缩进是正确的。
  3. 使用curl -v http://<serviceip>:<port>/metrics应该在终端中以纯文本形式提示指标。

注意:如果您指向另一个Docker容器中的某个服务,则您的本地主机可能不是表示为本地主机,而是表示为servicename(服务名显示在docker ps中)或docker.host.internal(运行docker容器的内部ip)。

对于此示例:我将使用2个docker容器prometheus和“ myService”。

sudo docker ps

CONTAINER ID        IMAGE                     CREATED                        PORTS                    NAMES
abc123        prom/prometheus:latest        2 hours ago               0.0.0.0:9090->9090/tcp         prometheus
def456        myService/myService:latest         2 hours ago               0.0.0.0:9091->9091/tcp         myService

然后编辑文件prometheus.yml(并重新运行prometheus)

- job_name: myService
  scrape_interval: 15s
  scrape_timeout: 10s
  metrics_path: /metrics
  static_configs:
    - targets: // Presenting you 3 options
      - localhost:9091 // simple localhost 
      - docker.host.internal:9091 // the localhost of agent that runs the docker container
      - myService:9091 // docker container name (worked in my case)
      
        

答案 3 :(得分:0)

好吧,我记得我通过下载Windows的Prometheus节点导出器解决了这个问题。

查看此链接https://medium.com/@facundofarias/setting-up-a-prometheus-exporter-on-windows-b3e45f1235a5