Prometheus的安裝和配置
Linux環境下下載二進制分發包,解壓後就安裝完了。javascript
1. 啓動
解壓後,在解壓後的路徑內執行命令./premetheus
便可以使用默認配置啓動Prometheus應用。php
默認使用的是同目錄下的
prometheus.yml
文件java
能夠經過瀏覽器訪問http://宿主機ip:9090
測試啓動狀況。正則表達式
2. 配置
執行 prometheus
命令的時候能夠經過參數 --config.file
來指定配置文件路徑。Prometheus 服務運行過程當中若是配置文件有改動,能夠給服務進程發送 SIGHUP 信號來通知服務進程從新從磁盤加載配置。這樣無需重啓,避免了服務中斷。瀏覽器
prometheus.yml 中的配置詳解
<boolean>
: 布爾值,true 或 false<duration>
: 持續時間,格式符合正則表達式[0-9]+(ms|[smhdwy])
<labelname>
: 標籤名,格式符合正則表達式[a-zA-Z_][a-zA-Z0-9_]*
<labelvalue>
: 標籤值,能夠包含任意 unicode 字符<filename>
: 文件名,任意有效的文件路徑<host>
: 主機,能夠是主機名或 IP,後面可跟端口號<path>
: URL 路徑<scheme>
: 協議,http 或 https<string>
: 字符串<secret>
: 密鑰,好比密碼<tmpl_string>
: 模板字符串,裏面包含須要展開的變量
一個典型的配置
global: # 抓取間隔,默認爲 1m [ scrape_interval: <duration> | default = 1m ] # 抓取超時時間,默認爲 10s [ scrape_timeout: <duration> | default = 10s ] # 規則評估間隔,默認爲 1m [ evaluation_interval: <duration> | default = 1m ] # 抓取配置 scrape_configs: [ - <scrape_config> ... ] # 規則配置 rule_files: [ - <filepath_glob> ... ] # 告警配置 alerting: alert_relabel_configs: [ - <relabel_config> ... ] alertmanagers: [ - <alertmanager_config> ... ]
global
全局配置節點下的配置對全部其它節點都有效,同時也是其它節點的默認值。rule_files
規則配置包含記錄規則配置和告警規則配置,節點下只是列出文件,具體配置在各個文件中。記錄規則配置接下來會講,告警規則配置在後面的告警實驗中會講解。alerting
告警配置用於 Alertmanager
抓取配置
抓取配置能夠有多個,通常來講每一個任務(Job)對應一個配置。單個抓取配置的格式以下:ruby
# 任務名 job_name: <job_name> # 抓取間隔,默認爲對應全局配置 [ scrape_interval: <duration> | default = <global_config.scrape_interval> ] # 抓取超時時間,默認爲對應全局配置 [ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ] # 協議,默認爲 http,可選 https [ scheme: <scheme> | default = http ] # 抓取地址的路徑,默認爲 /metrics [ metrics_path: <path> | default = /metrics ] # 抓取地址的參數 params: [ <string>: [<string>, ...] ] # 是否尊重抓取回來的標籤,默認爲 false [ honor_labels: <boolean> | default = false ] # 靜態目標配置 static_configs: [ - <static_config> ... ] # 單次抓取的採樣值個數限制,默認爲 0,表示沒有限制 [ sample_limit: <int> | default = 0 ]
honor_labels
表示是否尊重抓取回來的標籤。當抓取回來的採樣值的標籤值跟服務端配置的不一致時,若是該配置爲 true
,則以抓取回來的爲準。不然以服務端的爲準,抓取回來的值會保存到一個新標籤下,該新標籤名在原來的前面加上了「exported_」,好比 exported_job。bash
要抓取的實例目標
static_configs
下配置了該任務要抓取的全部實例,按組配置,包含相同標籤的實例能夠分爲一組,以簡化配置。單個組的配置格式以下:學習
# 目標地址列表,地址由主機+端口組成 targets: [ - '<host>' ] # 標籤列表 labels: [ <labelname>: <labelvalue> ... ]
抓取目標能夠是動態也但是靜態的,此處講的是靜態抓取。測試
記錄規則配置
記錄規則容許咱們把一些常常須要使用而且查詢時計算量很大的查詢表達式,預先計算並保存到一個新的時序。查詢這個新的時序比從原始一個或多個時序實時計算快得多,而且還可以避免沒必要要的計算。在一些特殊場景下這甚至是必須的,好比儀表盤裏展現的各種定時刷新的數據,數據種類多且須要計算很是快。lua
記錄規則配置文件的格式以下:
groups:
[ - <rule_group> ]
記錄規則配置按組來組織,一個組下的全部規則按順序定時執行。單個組的格式以下:
# 組名,在文件內惟一 name: <string> # 規則評估間隔,默認爲對應的全局配置 [ interval: <duration> | default = global.evaluation_interval ] rules: [ - <rule> ... ]
每一個組下包含多條規則,格式以下:
# 規則名稱,也就是該規則產生的時序數據的度量指標名
record: <string> # PromQL 查詢表達式,表示如何獲得採樣值 expr: <string> # 關聯標籤 labels: [ <labelname>: <labelvalue> ]
3. 使用
學會安裝和配置以後,接下來咱們經過使用 Prometheus 監控其自身來學習 它的基本用法。
配置 Prometheus 監控其自身
Prometheus 服務自己也經過路徑 /metrics
暴露了其內部的各項度量指標,只須要把它加入到監控目標裏就能夠。
global: # 全局默認抓取間隔 scrape_interval: 15s scrape_configs: # 任務名 - job_name: 'prometheus' # 本任務的抓取間隔,覆蓋全局配置 scrape_interval: 5s static_configs: # 抓取地址同 Prometheus 服務地址,路徑爲默認的 /metrics - targets: ['localhost:9090']
配置完成後啓動服務:
$ ./prometheus
可打開地址 http://主機名:9090/metrics
來確認是否有抓取到數據。
prometheus_target_interval_length_seconds
這個度量指標的含義是實際抓取目標時的間隔秒數。可使用表達式prometheus_target_interval_length_seconds{quantile="0.99"}
來查詢0.99
分位線的採樣值,也就是小於這個採樣值的數量低於總數的99%
。使用表達式count(prometheus_target_interval_length_seconds)
能夠查詢到該度量指標包含的時序個數。關於查詢表達式的更多語法後續實驗會講到。
做者:小孩真笨連接:https://www.jianshu.com/p/bedd169676b6來源:簡書