Prometheus

55479
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

HTTP 服务发现


Prometheus 提供了一个通用的 HTTP 服务发现(HTTP service discovery,即 HTTP SD),允许通过 HTTP 端点发现 Target。

HTTP 服务发现是 Prometheus 服务发现机制的补充功能,是基于文件的服务发现(file-based service discovery,即文件 SD)的一个替代方案。

文件 SD 和 HTTP SD 的比较

以下是我们的两种通用服务发现实现之间的比较表。

文件 SDHTTP SD
基于事件是,通过 inotify
更新频率立即,依赖 inotify遵循 refresh_interval
格式YAML 或 JSONJSON
传输方式本地文件HTTP/HTTPS
安全性基于文件的安全性TLS、基本认证、授权头、OAuth2

HTTP SD 端点的要求

如果你实现了一个 HTTP SD 端点,请注意以下几点要求。

响应是以原始内容被消费的,未修改。在每个刷新间隔(默认:1 分钟)内,Prometheus 将执行一个 GET 请求到 HTTP SD 端点。GET 请求包含一个X-Prometheus-Refresh-Interval-SecondsHTTP 头部,其中包含了刷新间隔。

SD 端点必须以 HTTP 200 响应回答,并带有 HTTP 头部Content-Type: application/json。响应必须是 UTF-8 格式的。如果没有任何 target 被传输,SD 端点也必须发出 HTTP 200 响应,并附带空列表[]。Target 列表是无序的。

Prometheus 缓存目标列表。如果在获取更新的 target 列表时发生错误,Prometheus 会继续使用当前的 Target 列表。Target 列表不会在重启后保存。prometheus_sd_http_failures_total计数器追踪服务发现刷新失败的次数。

整个 Target 列表必须在每次抓取时返回,不支持增量更新。Prometheus 实例不会发送其主机名,因此 SD 端点无法知道收到的 SD 请求是否是在 Prometheus 实例在重启后的第一个请求。

HTTP SD 的 URL 不被视为密文。认证和任何 API 密钥应通过适当的认证机制传输。Prometheus 支持 TLS 认证、基本认证、OAuth2 和授权头。

HTTP SD 格式

[
{
"targets": [ "<host>", ... ],
"labels": {
"<labelname>": "<labelvalue>", ...
}
},
...
]

示例:

[
{
"targets": ["10.0.10.2:9100", "10.0.10.3:9100", "10.0.10.4:9100", "10.0.10.5:9100"],
"labels": {
"__meta_datacenter": "london",
"__meta_prometheus_job": "node"
}
},
{
"targets": ["10.0.40.2:9100", "10.0.40.3:9100"],
"labels": {
"__meta_datacenter": "london",
"__meta_prometheus_job": "alertmanager"
}
},
{
"targets": ["10.0.40.2:9093", "10.0.40.3:9093"],
"labels": {
"__meta_datacenter": "newyork",
"__meta_prometheus_job": "alertmanager"
}
}
]

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32