我有以下Dockerfile:
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
与普罗米修斯。yml:
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
metrics_path: /metrics
scrape_interval: 15s
static_configs:
- targets: ['localhost:9090']
- job_name: 'auth-service'
scrape_interval: 15s
metrics_path: /actuator/prometheus
static_configs:
- targets: ['localhost:8080']
并使用以下命令运行它:
docker build -t prometheus .
docker run -d -p 9090:9090 --rm prometheus
prometheus的状态up
身份验证服务的状态为关闭(Get"http://localhost:8080/actuator/prometheus"拨号tcp 127.0.0.1:8080:连接:拒绝连接(
我如何解决身份验证服务的问题,因为从本地机器我可以从该地址获得度量http://localhost:8080/actuator/prometheus:
v.balun@macbook-vbalun Trainter-Prometheus % curl -X GET
http://localhost:8080/actuator/prometheus
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the
Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space",} 4194304.0
jvm_memory_committed_bytes{area="heap",id="G1 Old Gen",} 3.145728E7
jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 3.0982144E7
jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 2555904.0
jvm_memory_committed_bytes{area="heap",id="G1 Eden Space",} 2.7262976E7
jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 4325376.0
jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 6291456.0
您遇到的问题似乎与prometheus无关,似乎是在docker网络级别。
在你的prometheus
容器里,你在说:
static_configs:
- targets: ['localhost:8080']
但请记住,localhost
现在不是您的物理主机(当您在Docker外部本地运行它时(,它现在在容器内,并且在同一容器内,很可能您没有运行服务。。。
根据提供的信息,我建议您如下:
- 请先尝试
localhost
使用您的真实IP,这取决于您为容器使用的网络配置,这就足够了 - 您可以使用
localhost
来代替auth-service
的ip地址,这是docker提供的地址,您可以运行docker inspect...
来获取它 - 如果#1和#2不工作,并且
auth-service
在同一物理主机内的另一个容器中运行,那么您可以使用桥接网络来实现容器之间的通信,更多详细信息请点击此处:https://docs.docker.com/network/bridge/👆一旦两个容器都在同一网络中运行,您就可以使用容器名称来引用它,而不是localhost
,类似于:
static_configs:
- targets: ['auth-service:8080']