跳到主要内容

数据写入协议

Prometheus Remote Write、OpenTSDB、Datadog、Falcon:端点、报文、标签处理。

夜莺接收数据的能力叫 Pushgw,在 Center 进程里(也可以拆成独立的 n9e-pushgw)。 它不长期存数据——收下来之后按 [[Pushgw.Writers]] 的配置转发给一个或多个时序库, 内置时序库开着的话也会写一份。

不用非得走这条路:你已有的 Prometheus 继续抓、夜莺只查询,同样能配告警。 两种接法的差别见在可观测体系中的位置。

端点​

都在 Center 的 17000 端口上:

协议端点谁在用
Prometheus Remote WritePOST /prometheus/v1/writeCategraf、Prometheus、VictoriaMetrics agent、Grafana Agent
OpenTSDBPOST /opentsdb/put老的 OpenTSDB 采集链路
Open-FalconPOST /openfalcon/push从 Open-Falcon 迁过来的采集器
DatadogPOST /datadog/api/v1/seriesDatadog Agent
采集器心跳POST /v1/n9e/heartbeatCategraf(设备列表靠它)

Datadog Agent 还会打这几个端点,夜莺都接住了:/datadog/api/v1/check_run、 /datadog/api/v1/metadata、/datadog/intake/。

认证​

写入端点受 [HTTP.APIForAgent] 控制,默认开着、不要求认证。 要加 basic auth:

[HTTP.APIForAgent]
Enable = true
[HTTP.APIForAgent.BasicAuth]
user001 = "<你自己的密码>"

注意配置文件里自带的那组示例凭据是公开信息,别直接用。

采集器侧对应地填上用户名密码,比如 Categraf 的 [[writers]] basic_auth_user / basic_auth_pass。

标签怎么处理​

  • Remote Write 报文里 series 自带的标签原样保留;
  • Categraf 的 [global.labels] 会作为额外标签附在每条 series 上;
  • hostname(或 agent_hostname)决定设备列表里的机器标识, 也就是后面规则和事件里的 ident;
  • Pushgw 可以按配置丢弃指定的指标,见 [Pushgw] 段的 DropSample 相关配置。

转发给谁​

[[Pushgw.Writers]]
Url = "http://victoriametrics:8428/api/v1/write"

# 可以配多个,同时写多份
[[Pushgw.Writers]]
Url = "http://prometheus:9090/api/v1/write"

转发给 Prometheus 的话,Prometheus 启动参数要加 --web.enable-remote-write-receiver(老版本是 --enable-feature=remote-write-receiver), 否则 /api/v1/write 根本没在监听,夜莺转发时会收到 404。

内置时序库和外部时序库可以同时写,这就是迁移窗口, 见外部时序库与双写迁移。

相关​