java - 使用 Marathon/Mesos 的 Prometheus 动态端口服务发现

标签 java go prometheus mesos marathon

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

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

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

我知道 Marathon 将容器中的环境变量 $PORT0 定义为主机端口,但是我不知道如何从 Prometheus SD 配置访问它,也不知道如何访问Marathon 动态配置的其他字段,如 Endpoints。有没有人有什么建议?我不能/不想分配静态 hostPort,因为我的容器比集群中的物理节点多,容器编排的意义就在于此。

最佳答案

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

关于java - 使用 Marathon/Mesos 的 Prometheus 动态端口服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53890083/

相关文章:

java - 使用 beans.xml 文件进行 CDI bean 配置

java - 摆脱 java.util.Iterator

go - 无法识别同步中的错误。一旦使用

python - Golang 相当于 Python 的 NotImplementedException

kubernetes - 监视持久卷性能

java - 单击过滤后的 RecyclerView 项目时显示错误数据

java - View 被推到水平约束布局之外

go - 在类型切换中使用 strconv.FormatFloat() 时遇到问题

prometheus - 设置 PromQL 值的格式

普罗米修斯样本太旧或离 future 太远