模版示例
Prometheus 支持在告警的注释和标签中使用模板,以及在提供的控制台页面中使用模板。模板能够执行针对本地数据库的查询、遍历数据、使用条件语句、格式化数据等操作。Prometheus 的模板语言基于 Go 模板系统。
简单的告警字段模板
告警字段模板将在每轮规则迭代时对触发(fire)的每个告警执行一次,因此请保持查询和模板的轻量化。如果需要更复杂的告警模板,则推荐使用控制台进行操作。
简单遍历
下面显示了一组实例及其状态:
特殊的.
变量包含每次循环迭代中的当前样本值。
显示单个值
Go 和 Go 的模板语言都是强类型语言,因此必须检查是否返回了样本以避免执行错误。例如,在抓取和规则评估尚未运行或主机处于离线状态时,这种情况都可能会发生。
自带的prom_query_drilldown
模板能够处理此问题,可以对结果进行格式化,并链接到表达式浏览器。
使用控制台 URL 参数
如果以 console.html?instance=hostname
访问,则 .Params.instance
将评估为 hostname
。
高级遍历
在这里,我们遍历所有网络设备并显示每个设备的网络流量。
由于range
动作没有指定变量,现在的循环变量是.
,.Params.instance
在循环内不再可用。
定义可重用的模板
Prometheus 支持定义可以重复使用的模板。当与控制台模板功能结合时,能够实现跨控制台共享模板,十分强大。
模板最多只能接受一个参数。可以使用args
函数来包装多个参数。
该文档基于 Prometheus 官方文档翻译而成。