Prometheus和Grafana組合基本上是監控系統的標配。Prometheus作存儲後端,Grafana作分析及可視化界面。 前端
普羅米修斯是開源的系統監控/報警工具庫,功能很是全,且擁有活躍的開發者和用戶社區。Prometheus經過HTTP按期主動拉取(Pull)的方式得到指標(直接獲取或經過gateway推送),在本地存儲全部抓取的樣本,並對這些數據運行規則,從現有數據聚合和記錄新的時間序列,或生成警報。 Prometheus原生的可視化界面作得比較原始(主要用於調試),因此社區(官方推薦)使用Grafana來作數據展現。 Grafana專一於數據展現,有着豐富用成熟的展現方式和插件,數據源支持Elasticsearch, Prometheus, Graphite, InfluxDB等等。可讓你經過界面點擊(無需寫前端代碼)快速搭建一個很是專業漂亮的展現界面。即使對於前端零基礎的開發者也很是友好!node
在官網下載須要的版本(uname -rv
查看linux內核版本及發行號)。好比x86的就下載linux-386系列。linux
Prometheus會主動經過HTTP請求來收集受監控目標的指標。 好比它也經過HTTP Rest API導出了本身的健康狀態數據,因此也能夠用來監控本身。解壓下載源文件內包含一個基本的prometheus.yml
配置能夠參照。配置很是簡單。git
global: # 全局配置 scrape_interval: 15s #主動拉取指標的間隔 evaluation_interval: 15s #計算間隔 scrape_configs: #監控的目標配置 - job_name: prometheus #名稱 static_configs: # 靜態配置 - targets: ['127.0.0.1:9090'] #監控目標暴露的HTTP API端口,是個列表
前臺啓動Prometheus,若是是在生產環境,須要後臺啓動時,最好自行配置Systemd。github
# Start Prometheus. # By default, Prometheus stores its database in ./data (flag --storage.tsdb.path). ./prometheus --config.file=prometheus.yml
用瀏覽器打開http://IP:9090/metrics查詢全部指標列表。shell
用瀏覽器打開http://IP:9090/graph,原生的簡易的展現界面(太簡陋了,基本沒人會用)。 PS:由於Promethues本身導出的指標和展現界面都是同一個9090端口。但實踐中metrics接口指向的是目標機器的指標列表,用於Promethues主動拉取。數據庫
豐富的Exporter能夠下載使用,開箱即用。下面能夠用NodeExporter來作個範例。json
NodeExporter暴露不少和硬件/軟件相關的指標(metrics)。後端
$ tar xvfz node_exporter-* $ cd node_exporter-*
啓動NodeExporter。瀏覽器
$ ./node_exporter INFO[0000] Starting node_exporter (version=0.18.1, branch=HEAD, revision=3db77732e925c08f675d7404a8c46466b2ece83e) source="node_exporter.go:156" INFO[0000] Build context (go=go1.12.5, user=root@b50852a1acba, date=20190604-16:41:43) source="node_exporter.go:157" INFO[0000] Enabled collectors: source="node_exporter.go:97" INFO[0000] - arp source="node_exporter.go:104" ... INFO[0000] Listening on :9100 source="node_exporter.go:170"
能夠使用./node_exporter -h
查看具體的啓動參數。從上面能夠看它使用的端口是9100,全部的指標列表均可以和上面示例中的prometheus的接口同樣:
$ curl http://localhost:9100/metrics # HELP go_gc_duration_seconds A summary of the GC invocation durations. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 2.8138e-05 go_gc_duration_seconds{quantile="0.25"} 4.1588e-05 go_gc_duration_seconds{quantile="0.5"} 0.000102923 go_gc_duration_seconds{quantile="0.75"} 0.000162106 go_gc_duration_seconds{quantile="1"} 0.000495923 go_gc_duration_seconds_sum 0.060153937 go_gc_duration_seconds_count 537 # HELP go_goroutines Number of goroutines that currently exist. ...
能夠看到全部關於node_exporter的指標列表。接下來就是把讓prometheus來取這些指標。
配置prometheus拉node exporter的指標。即把targets增長9100端口。
scrape_configs: - job_name: 'node' static_configs: - targets: ['127.0.0.1:9100']
重啓prometheus。
./prometheus --config.file=./prometheus.yml
再次查看瀏覽器打開graph查看:http://127.0.0.1:9090/graph。勾選Enable query history
後直接輸入以node就能夠看到大量關於node爲前綴的指標了。好比:node_filesystem_avail_bytes
查看文件系統可用空間大小狀況。
這個界面仍是太原始了,但能夠用來體驗一下PromQL。接下來演示一下接入grafana來展現這些數據。
按官方指引下載安裝:好比Centos安裝是
$ wget https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpm $ sudo yum localinstall grafana-6.3.3-1.x86_64.rpm
你能夠在/etc/grafana/grafana.ini
中配置端口及其它的,具體全部的配置項在: https://grafana.com/docs/installation/configuration/,咱們這裏都保持默認值,端口默認爲3000.用戶名/密碼默認爲admin。 你能夠在這裏找到對應的啓動方式,好比在CentOS上就是
sudo service grafana-server start
啓動成功後,你能夠使用瀏覽器打開http://IP:3000使用admin/admin登陸。
Grafana.com上有不少別人分享的優化的dashboards,咱們能夠直接從上面找到node exporter對應的dashboard來使用。下載對應的json文件,而後導入。
在Grafana上如何爲選擇合適的圖表來展現Prometheus對應的數據類型(單調遞增的Counter,可降可升的Gauge,用於柱狀圖展現的Histogram),提供滑動窗口求和的Summary。