我尝试配置Prometheus和Grafana与我的Hyperledger结构v1.4网络,以分析对等体和链码元。我已经Map对等体容器的端口9443
到我的主机的端口9443
后,遵循此文档。我还更改了provider
条目metrics
节下的prometheus
在core.yml
的对等体。我'我已经在docker-compose.yml
中以如下方式配置了prometheus和grafana。
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
时,我会得到所有的指标。我在这里做错了什么?为什么Prometheus指标会显示在它的界面上,而不是对等端的界面上?
7条答案
按热度按时间izkcnapc1#
由于目标不在prometheus容器内运行,因此无法通过localhost访问它们,您需要通过主机私有IP或通过将
localhost
替换为docker.for.mac.localhost
或host.docker.internal
来访问它们。crcmnpdw2#
http://localhost:9090/targets
上,端点状态为Down,并出现错误:获取http://localhost:9091/metrics:拨打传输控制协议127.0.0.1:9091:连接:连接被拒绝
prometheus.yml
上,您需要验证1.刮擦指向右端点的细节。
1.使用
curl -v http://<serviceip>:<port>/metrics
应该在终端中以明文形式提示度量。servicename
(docker ps
中显示的服务名称)或docker.host.internal
(运行Docker容器的内部IP)。然后编辑文件
prometheus.yml
(并重新运行prometheus)myss37ts3#
你的prometheus container没有运行在主机网络上。它运行在自己的桥上(由docker-compose创建的桥)。因此,对等体的scrape配置应该指向对等体container的IP。
建议的解决方法:
(use
docker network ls
查找网络名称)然后,您可以在scrape配置中使用
http://<peer_container_name>:9443
nhhxz33t4#
此解决方案不适用于docker swarm。它适用于旨在运行在覆盖网络上的独立容器(多容器)。*
相同的错误,我们得到当使用覆盖网络,这里是解决方案(静态非动态)
此配置不起作用:
即使http://docker.for.mac.localhost:9100/可用,但prometheus找不到node-exporter,这个也不起作用,所以下面这个也不起作用:
但是,只要使用它的容器ID,我们就可以通过它的端口号访问该服务。
因此,我们有
7f1da9796af3 prom/node-exporter
ID,可以将yml
文件更新为:不工作
工作
更新
我自己对这种硬编码的解决方案并不满意,所以在其他一些搜索之后,找到了一种更可靠的方法,使用
--network-alias NAME
,在overlay网络中,该容器将通过该名称进行路由。其中名称
node_exporter
是使用run
子命令创建的别名。例如简而言之,它说在覆盖云网络上,你可以使用
node_exporter:<PORT>
到达节点导出器。f3temu5u5#
好吧,我记得我通过下载普罗米修斯节点导出器的Windows解决了这个问题.
查看此链接https://medium.com/@facundofarias/setting-up-a-prometheus-exporter-on-windows-b3e45f1235a5
vpfxa7rd6#
静态配置:
z8dt9xmd7#
我意识到我得到这个错误是因为Kubeprostack pod(如AKS中的prometheus)也在运行。当我将AKS的“部署”和“守护进程集”部分中与Kubeprostack相关的pod缩小到1时,问题解决了,我能够成功连接到Grafana Prometheus。因为prometheus和Kubeprostack都在尝试工作。当只剩下prometheus pod时,问题解决了。
Post-procedure status image