使用Marathon / Mesos进行Prometheus动态端口服务发现

时间:2018-12-21 19:48:03

标签: java go prometheus mesos marathon

经过数天的谷歌搜索后,我一直找不到答案。我有在Marathon / Mesos中运行的服务。我有一个Prometheus集群抓取指标。我的Marathon指标端口配置如下所示:

{
  "containerPort": 8081,
  "hostPort": 0,
  "servicePort": 31301,
  "protocol": "tcp",
  "labels": {
    "metrics": "/metrics"
  }
}

仅配置了样板marathon-sd配置的Prometheus成功找到了该目标,但是随后它侦听以下指标:__address__ = [NodeIP]:31301;因此,它使用服务端口监听主机的IP,而不是动态分配的主机端口,而服务端口仅对Marathon-LB重要。

我知道Marathon将容器中的环境变量$PORT0定义为主机端口,但是我无法弄清楚如何从Prometheus SD配置中访问此变量,也无法弄清楚如何访问动态配置的其他字段像Endpoints一样由Marathon提供。有没有人有什么建议?我不能/不想分配静态hostPort,因为我的容器数量比集群中的物理节点多,这与容器编排有关。

1 个答案:

答案 0 :(得分:1)

它是known bug in Prometheus:它使用servicePort Marathon应用程序定义属性而不是hostPort。是fixed in the v2.6.0

相关问题