我有一个Spring应用程序,它在本地的9000端口上运行(而不是在容器中)。该应用程序配置了Prometheus千分尺作动器,其全部统计数据可通过URL localhost:9000/致动器/prometheus获得。
我使用以下命令在Docker容器中运行Prometheus:
docker run --name spring_boot_prometheus -p 9090:9090 -p 9000:9000 -v /Users/xyz/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheusprometheus.yml
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: 'users-app'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:9000']命令docker ps返回以下内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1568ec9e8353 prom/prometheus "/bin/prometheus --c…" 10 seconds ago Up 9 seconds 0.0.0.0:9000->9000/tcp, 0.0.0.0:9090->9090/tcp spring_boot_prometheusUI表示prometheus无法连接到spring引导端点,但它是可用的。如果我单击端点,它将我重定向到1568ec9e8353:9000而不是localhost:9000

我怎样才能解决这个问题?
感谢你的帮助!
发布于 2018-10-13 14:25:54
在prometheus.yml,中,而不是localhost:9000中,输入容器的特定名称:spring_boot_prometheus:9000。
Docker最佳实践是使用容器名称而不是容器IP地址。
发布于 2018-09-17 21:28:08
对于prometheus码头集装箱,“localhost”的意思是本地的。所以普罗米修斯试图在集装箱内连接到9000端口。这不管用。
此外,在prometheus容器中,据我从您的帖子中所知,它不会在端口9000上运行服务。
如果两个应用程序都位于码头容器中,则为:
目标容器在您的码头安装中有自己的IP地址。典型的172.17.y.z.
一个简单的码头网络是必要的,在此之后,您可以运行两个容器:
$ docker network create mynet
$ docker run --name foo --net mynet img
$ docker run --name bar --net mynet img在此发现:forums.docker.com
如果您的机器上运行的服务(9000)没有停靠::
这不是一个标准用例。
阅读这里如何设置它。
您必须获得物理计算机的IP地址。例如,192.168.0.10。这就是普罗米修斯的目标。
https://stackoverflow.com/questions/52375789
复制相似问题