一、Exporter概述
所有可以向Prometheus提供監控樣本資料的程式都可以被稱為一個Exporter。而Exporter的一個例項稱為target,如下所示,Prometheus透過輪詢的方式定期從這些target中獲取樣本資料:
注:安裝好Exporter後會暴露一個http://ip:埠/metrics
的HTTP服務,透過Prometheus新增配置- targets: ['node_exporter:9100']
(預設會加上/metrics),Prometheus就可以採集到這個http://ip:埠/metrics
裡面所有監控樣本資料
二、Exporter的來源
從exporter來源講,分為2類:
1.社群提供( https://prometheus.io/docs/instrumenting/exporters/ )
三、Exporter型別
這類Exporter直接內建了相應的應用程式,用於向Prometheus直接提供Target資料支援。這樣設計的好處是,可以更好地監控各自系統的內部執行狀態,同時也適合更多自定義監控指標的專案實施。例如cAdvisor、Kubernetes等,它們均內建了用於向Prometheus提供監控資料的端點。
2.間接採集型
原始監控目標並不直接支援Prometheus,需要我們使用Prometheus提供的Client Library編寫該監控目標的監控採集程式,使用者可以將該程式獨立執行,去獲取指定的各類監控資料值。例如,由於Linux作業系統自身並不能直接支援Prometheus,使用者無法從作業系統層面上直接提供對Prometheus的支援,因此單獨安裝Node exporter,還有資料庫或網站HTTP應用類等Exporter。
四、Exporter規範
所有的Exporter程式都需要按照Prometheus的規範,返回監控的樣本資料。以Node Exporter為例,當訪問http://192.168.10.14:9100/metrics地址時會返回以下內容:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.8298e-05
go_gc_duration_seconds{quantile="0.25"} 5.1855e-05
go_gc_duration_seconds{quantile="0.5"} 6.7122e-05
go_gc_duration_seconds{quantile="0.75"} 9.3062e-05
go_gc_duration_seconds{quantile="1"} 0.001225949
go_gc_duration_seconds_sum 0.005331134
go_gc_duration_seconds_count 48
以#開始的行通常都是註釋內容。這些樣本資料集合說明如下:
● 以#HELP開始的行,表示metric的幫助與說明註釋,可以包含當前監控指標名稱和對應的說明資訊。
● 以#TYPE開始的行,表示定義metric型別,可以包含當前監控指標名稱和型別,型別有Counter、Gauge、Histogram、Summary和Untyped。
● 非#開頭的行,就是監控樣本資料
4.1 監控樣本規範
metric_name [
"{" label_name "=" `"` label_value `"` { "," label_name "=" `"` label_value `"` } [ "," ] "}"
] value [ timestamp ]
其中metric_name和label_name必須遵循PromQL的格式規範要求。value是一個float格式的資料,timestamp的型別為int64(從1970-01-01 00:00:00以來的毫秒數),timestamp為可選預設為當前時間。具有相同metric_name的樣本必須按照一個組的形式排列,並且每一行必須是唯一的指標名稱和標籤鍵值對組合。
go_memstats_mcache_sys_bytes{} 15600
go_memstats_mcache_sys_bytes{instance="localhost:9090", job="prometheus"} timestamp VALUE