Prometheus支持在警報的注釋和標(biāo)簽以及服務(wù)的控制臺頁面中進行模板化帅容。 模板能夠針對本地數(shù)據(jù)庫運行查詢扒秸,迭代數(shù)據(jù)盐捷,使用條件孽江,格式化數(shù)據(jù)等.Prometheus模板語言基于Go模板系統(tǒng)。
一宣鄙、數(shù)據(jù)結(jié)構(gòu)題
處理時間序列數(shù)據(jù)的主要數(shù)據(jù)結(jié)構(gòu)是樣本袍镀,定義如下:
type sample struct {
Labels map[string]string
Value float64
}
樣本的度量標(biāo)準(zhǔn)名稱在Labels
映射中的特殊__name__
標(biāo)簽中進行編碼。
[]sample
表示樣本列表框冀。
Go中的interface{}
類似于C中的void指針流椒。
二、函數(shù)
除了Go模板提供的默認(rèn)功能外明也,Prometheus還提供了更輕松處理模板中查詢結(jié)果的功能宣虾。
如果在管道中使用函數(shù),則管道值將作為最后一個參數(shù)傳遞温数。
2.1 查詢
名字 | 參數(shù) | 返回值 | 解析 |
---|---|---|---|
query | query string | []sample | 查詢數(shù)據(jù)庫绣硝,不支持返回范圍向量。 |
first | []sample | sample | 索引等于0 |
label | label, sample | string | 相當(dāng)于index sample.Labels標(biāo)簽
|
value | sample | float64 | 相當(dāng)于 sample.Value
|
sortByLabel | label, []samples | []sample | 按給定標(biāo)簽對樣品進行排序撑刺。 是穩(wěn)定排序鹉胖。 |
first
,label
和value
旨在使查詢結(jié)果易于在管道中使用够傍。
2.2 數(shù)字
名字 | 參數(shù) | 返回 | 解析 |
---|---|---|---|
humanize | number | string | 使用度量標(biāo)準(zhǔn)前綴將數(shù)字轉(zhuǎn)換為更易讀的格式甫菠。 |
humanize1024 | number | string | 像humanize 一樣,但使用1024作為基礎(chǔ)而不是1000冕屯。 |
humanizeDuration | number | string | 將持續(xù)時間(以秒為單位)轉(zhuǎn)換為更易讀的格式寂诱。 |
humanizeTimestamp | number | string | 將Unix時間戳以秒為單位轉(zhuǎn)換為更易讀的格式。 |
Humanizing
功能旨在為人類消費產(chǎn)生合理的輸出安聘,并且不保證在Prometheus版本之間返回相同的結(jié)果痰洒。
2.3 字符串
名字 | 參數(shù) | 返回 | 解析 |
---|---|---|---|
title | string | string |
strings.Title , 大寫每個單詞的第一個字符瓢棒。 |
toUpper | string | string |
strings.ToUpper , 將所有字符轉(zhuǎn)換為大寫。 |
toLower | string | string |
strings.ToLower , 將所有字符轉(zhuǎn)換為小寫丘喻。 |
match | pattern, text | boolean |
regexp.MatchString 測試未錨定的正則表達式匹配脯宿。 |
reReplaceAll | pattern, replacement, text | string |
Regexp.ReplaceAllString Regexp替換,未經(jīng)修復(fù)泉粉。 |
graphLink | expr | string | 返回表達式的表達式瀏覽器中圖表視圖的路徑连霉。 |
tableLink | expr | string | 返回表達式的表達式瀏覽器中表格(“Console”)視圖的路徑。 |
2.4 其他
名字 | 參數(shù) | 返回 | 解析 |
---|---|---|---|
args | []interface{} | map[string]interface{} | 這會將對象列表轉(zhuǎn)換為具有鍵arg0 搀继,arg1 等的映射窘面。這旨在允許將多個參數(shù)傳遞給模板翠语。 |
tmpl | string, []interface{} | nothing | 與內(nèi)置模板一樣叽躯,但允許非文字作為模板名稱。 請注意肌括,結(jié)果被認(rèn)為是安全的点骑,不會自動轉(zhuǎn)義。 僅適用于游戲機谍夭。 |
safeHtml | string | string | 將字符串標(biāo)記為不需要自動轉(zhuǎn)義的HTML黑滴。 |
三、模板類型的區(qū)別
每種類型的模板都提供可用于參數(shù)化模板的不同信息紧索,并具有一些其他差異袁辈。
3.1 報警字段模板
.Value
和.Labels
包含警報值和標(biāo)簽。 為方便起見珠漂,它們也作為$value
和$labels
變量公開晚缩。
3.2 控制臺模板
控制臺暴露在/consoles/
上,并且來自-web.console.templates
標(biāo)志指向的目錄媳危。
控制臺模板使用html/template呈現(xiàn)荞彼,提供自動轉(zhuǎn)義功能。 要繞過自動轉(zhuǎn)義待笑,請使用safe*
功能鸣皂。,
URL參數(shù)在.Params
中以地圖形式提供暮蹂。 要使用相同的名稱訪問多個URL參數(shù)寞缝,.RawParams
是每個參數(shù)的列表值的映射仰泻。 URL路徑在.Path
中可用荆陆,不包括/consoles/
前綴。
控制臺還可以訪問在-web.console.libraries
標(biāo)志指向的目錄中的* .lib
文件中找到的{{define"templateName"}}...{{end}}
定義的所有模板我纪。 由于這是一個共享命名空間慎宾,請注意避免與其他用戶發(fā)生沖突丐吓。 以prom
,_prom
和__
開頭的模板名稱保留供Prometheus使用趟据,上面列出的函數(shù)也是如此券犁。
四、鏈接
Prometheus官網(wǎng)地址:https://prometheus.io/
我的Github:https://github.com/Alrights/prometheus