Zabbix可以查询Prometheus行格式标准的度量数据。
收集 Prometheus 数据需要如下两步:
https://<prometheus host>/metrics
预定步骤
为 Prometheus 选项的依赖监控项,用于从主HTTP监控项收集的度量中查询所需数据。有两个 Prometheus 预处理的预定步骤
配置选项:
如果您配置了HTTP主监控项, 你需要创建一个使用 Prometheus 预定步骤
配置的依赖监控项,配置步骤如下:
参数 描 | 样例 | |
---|---|---|
Pattern | 要定义所需的数据的正则规则,可以使用类似于Prometheus查询语言的语法规则 (参见对照表), 例如.: wmi_os_physical_memory_free_by<metric name> - 被选定的 metric 名称 cpu {__name__="<metric name>"} - 被选定的 metric 名称 cpu {__name__=~"<regex>"} - 匹配被选定 metric 名称的正则表达式 cpu_usage {<label name>="<label value>",...} - 被选定的 label 名称 wmi {<label name>=~"<regex>",...} - 匹配被选定 label 名称的正则表达式 wmi_os_ti{__name__=~".*"}==<value> - 被选定的 metric 值 或以上两者的结合: <metric name>{<label1 name>="<label1 value>",<label2 name>=~"<regex>",...}==<value> Label 值可以是UTF-8字符的任意序列,但反斜杠、双引号和换行符必须转义为 \\ , \" 和 \n ; 其他字符不必转义 。 |
es usage_system{cpu="cpu-total"} usage_system{cpu=~".*"} system{cpu="cpu-total",host=~".*"} service_state{name="dhcp"}==1 ezone{timezone=~".*"}==1 |
Output | 定义 Label 名称(可选)。在这种情况下,将返回与 Label名称对应的值。 此字段仅适用于 Prometheus 正则 选项。 |
可以使用低级(low-level)发现处理Prometheus数据,此时需要配置预处理步骤 选项为 Prometheus 转 JSON 将Prometheus数据转换为JSON格式数据。
详细参见 使用 Prometheus 数据发现.
下表列出了PromQL和Zabbix Prometheus预处理查询语法之间的差异。
PromQL 语法 Z | bbix Prometheus 预处理语法 | |
---|---|---|
差异 | ||
查询目标 Pro | etheus 服务器 Promet | eus 格式的纯文本 |
返回 瞬 | 向量(Instant vector) Metri | 或 label 值 (Prometheus 正则) 每条度量数据的 JSON 列表(Prometheus 转 JSON) |
Label 匹配运算符 **=* | , !=, =~, !~ **=* | , =~ |
Label 或 Metric 名称匹配的Regular 表达式 RE2 | PCRE | |
比较运算符 参见 [ | 表](https://prometheus.io/docs/prometheus/latest/querying/operators/#comparison-binary-operators) 只有 **==* | (等于) 支持值过滤 |
相似 | ||
按 metric 名称等于字符串进行选定 <metric | ame> or {__name__="<metric name>"} <metric | ame> or {__name__="<metric name>"} |
按 metric 名称匹配正则表达式进行选定 {__name__ | ~"<regex>"} {__name__ | ~"<regex>"} |
按<label name>的值等于字符串进行选定 {<label | ame>="<label value>",...} {<label | ame>="<label value>",...} |
按<label name>的值匹配正则表达式进行选定 {<label na | e>=~"<regex>",...} {<label na | e>=~"<regex>",...} |
按值等于字符串进行选定 {__name |
_=~".*"} == <value> {__name |
_=~".*"} == <value> |