我正在尝试使用Hyperledger Fabric v1.4网络配置Prometheus和Grafana,以分析对等和链码mertics。遵循此documentation之后,我已将对等容器的端口9443
映射到主机的端口9443
。我还将对等体provider
中prometheus
部分下的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
时,我也会获得所有指标。我在这里做错了。普罗米修斯指标如何在其界面而不是对等方的界面上显示?
答案 0 :(得分:2)
您的prometheus容器未在主机网络上运行。它在自己的网桥(由docker-compose创建的网桥)上运行。因此,对等端的scrape配置应指向对等容器的IP。
推荐的解决方法:
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: 连接被拒绝
解决方案:在prometheus.yml
上,您需要验证
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