Prometheus Grafana快速搭建


Prometheus

Prometheus和Grafana組合基本上是監控系統的標配。Prometheus做存儲后端,Grafana做分析及可視化界面。

普羅米修斯是開源的系統監控/報警工具庫,功能非常全,且擁有活躍的開發者和用戶社區。Prometheus通過HTTP定期主動拉取(Pull)的方式獲得指標(直接獲取或通過gateway推送),在本地存儲所有抓取的樣本,並對這些數據運行規則,從現有數據聚合和記錄新的時間序列,或生成警報。
Prometheus原生的可視化界面做得比較原始(主要用於調試),所以社區(官方推薦)使用Grafana來做數據展示。
Grafana專注於數據展示,有着豐富用成熟的展示方式和插件,數據源支持Elasticsearch, Prometheus, Graphite, InfluxDB等等。可以讓你通過界面點擊(無需寫前端代碼)快速搭建一個非常專業漂亮的展示界面。即便對於前端零基礎的開發者也非常友好!

安裝Prometheus

  1. 官網下載需要的版本(uname -rv查看linux內核版本及發行號)。比如x86的就下載linux-386系列。

  2. Prometheus會主動通過HTTP請求來收集受監控目標的指標。 比如它也通過HTTP Rest API導出了自己的健康狀態數據,所以也可以用來監控自己。解壓下載源文件內包含一個基本的prometheus.yml配置可以參照。配置非常簡單。

    global: # 全局配置
      scrape_interval:     15s #主動拉取指標的間隔
      evaluation_interval: 15s #計算間隔
    
    scrape_configs: #監控的目標配置
      - job_name: prometheus #名稱 
        static_configs: # 靜態配置
          - targets: ['127.0.0.1:9090'] #監控目標暴露的HTTP API端口,是個列表
    
    • 把里面的localhost改成你對應機器的IP。
    • 其它詳細的配置可見配置文檔
  3. 前台啟動Prometheus,如果是在生產環境,需要后台啟動時,最好自行配置Systemd

    # Start Prometheus.
    # By default, Prometheus stores its database in ./data (flag --storage.tsdb.path).
    ./prometheus --config.file=prometheus.yml
    
  4. 用瀏覽器打開http://IP:9090/metrics查詢所有指標列表。

  5. 用瀏覽器打開http://IP:9090/graph,原生的簡易的展示界面(太簡陋了,基本沒人會用)。
    PS:因為Promethues自己導出的指標和展示界面都是同一個9090端口。但實踐中metrics接口指向的是目標機器的指標列表,用於Promethues主動拉取。

豐富的Exporter可以下載使用,開箱即用。下面可以用NodeExporter來做個范例。

安裝NodeExporter

NodeExporter暴露很多和硬件/軟件相關的指標(metrics)。

  1. $ 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來展示這些數據。

安裝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 

配置grafana

你可以在/etc/grafana/grafana.ini中配置端口及其它的,具體所有的配置項在: https://grafana.com/docs/installation/configuration/,我們這里都保持默認值,端口默認為3000.用戶名/密碼默認為admin
你可以在這里找到對應的啟動方式,比如在CentOS上就是

sudo service grafana-server start

啟動成功后,你可以使用瀏覽器打開http://IP:3000使用admin/admin登錄。

創建界面

Prometheus的數據源(data source)

  • 點擊側邊欄中的Grafana圖標 -> DataSources -> Add New
  • 選擇Prometheus類型.
  • 設置Prometheus的對外URL(比如 http://IP:9090).
  • 點擊Add添加

Prometheus圖表展示

  • 點擊graph標題 --> Edits.
  • 在Metrics標簽下選擇你上一步剛增加的Prometheus數據庫。
  • 在Query字段中輸入Prometheus表達式,會自動補全。
  • 自定義圖表橫坐標中指標的名稱: Legend format。

導入Dashboards

Grafana.com上有很多別人分享的優化的dashboards,我們可以直接從上面找到node exporter對應的dashboard來使用。下載對應的json文件,然后導入。

其它

在Grafana上如何為選擇合適的圖表來展示Prometheus對應的數據類型(單調遞增的Counter,可降可升的Gauge,用於柱狀圖展示的Histogram),提供滑動窗口求和的Summary

Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM