我在试着给普罗米修斯上的摄政王弄个春微服务。两者都是在docker上运行的。我在我的服务的Prometheus UI中得到"context deadline exceeded“。
有趣的是,当我尝试在新选项卡中打开"localhost:8081/ metrics“时,它会显示指标。
这是我的docker-compose.yml。这个问题似乎很常见,但我还没有找到适合我的解决方案。
docker-compose.yml
version: '2.1'
networks:
cadrs:
ipam:
config:
- subnet: 172.28.0.0/16
services:
prometheus:
image: prom/prometheus:0.18.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '-config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
demo:
build: "C:/Users/hmt843/Downloads/demo"
hostname: "demo"
ports:
- "8081:8081"
networks:
cadrs:
ipv4_address: 172.28.1.2
node-exporter:
image: prom/node-exporter:v0.15.0
ports:
- '9100:9100'prometheus.yml
global:
scrape_interval: 15s
external_labels:
monitor: 'my-monitor'
scrape_configs:
- job_name: 'prometheus'
target_groups:
- targets: ['localhost:9090']
- job_name: 'demo'
tls_config:
insecure_skip_verify: true
target_groups:
- targets: ['172.28.1.2:8081']
- job_name: 'node-exporter'
target_groups:
- targets: ['node-exporter:9100']发布于 2018-06-26 06:50:19
通过在应用程序的服务中指定网络部分,容器被放置在一个名为cadrs的单独docker网络中。您的普罗米修斯服务没有这样的网络定义,因此位于default网络中。容器必须至少驻留在一个公共网络中,才能相互访问。即使暴露主机端口上的容器也不会影响这一点(但您可以通过主机ip访问应用程序-不要这样做)。
如果您确实需要此网络配置,请将Prometheus添加到同一网络中,方法是将相同的网络部分添加到您的Prometheus服务中,或者引入在这两个服务中都使用的另一个网络(例如monitoring)。或者,您也可以通过向应用程序的网络部分再添加一行来指定您的应用程序位于默认网络中。
networks:
cadrs:
[...]
default:参考:https://docs.docker.com/compose/networking/#configure-the-default-network
使用此设置,您还可以将抓取配置修改回demo:8081。无论哪种方式,问问你自己,你是否真的想自己使用管理容器地址...
https://stackoverflow.com/questions/50995497
复制相似问题