天天看點

docker 搭建基于prometheus的監控體系

Prometheus是一個時間序列資料庫。但是,它不僅僅是一個時間序列資料庫。

它涵蓋了可以綁定的整個生态系統工具集及其功能。

Prometheus主要用于對基礎設施的監控。包括伺服器,資料庫,VPS,幾乎所有東西都可以通過Prometheus進行監控。Prometheus希望通過對Prometheus配置中定義的某些端點執行的HTTP調用來檢索度量标準。

普羅米修斯的主要特點是:

       1. 一個多元資料模型,其中包含通過度量标準名稱和鍵/值對辨別的時間序列資料

        2.PromQL,一種靈活的查詢語言 ,可利用此次元

        3.不依賴分布式存儲;單伺服器節點是自治的

        4.時間序列收集通過HTTP上的拉模型進行

        5.通過中間網關支援推送時間序列

        6.通過服務發現或靜态配置發現目标

        7.多種圖形和儀表闆支援模式

需要下載下傳鏡像:prom/mysqld-exporter(監控mysql)

                          prom/prometheus

                          prom/node-exporter(監控node節點整機狀态)

prometheus原理

docker 搭建基于prometheus的監控體系

1.啟動prometheus容器服務

        啟動前需要先手動在目前目錄下建立prometheus.yml檔案:touch prometheus.yml,不然會報挂在檔案建立失敗的錯誤,因為docker run時預設建立的挂載點是目錄,不是檔案。

docker run -d --name prometheus -p 9090:9090 -v ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
           
docker 搭建基于prometheus的監控體系

 2.啟動成功後,公網通路該9090端口進入普羅米修斯首頁

docker 搭建基于prometheus的監控體系

 3.部署mysqld-exporer監控mysql資料庫(想監控什麼就部署對應的exporter即可)

        a.先部署mysql服務(有監控對象)

docker run -d --name my-mysql -v /home/gaofei/test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 mysql:5.5
           

        b.進入prometheus.io/download下載下傳對應的exporter

docker 搭建基于prometheus的監控體系
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(mysql主機ip:888)/mysql" prom/mysqld-exporter
           
docker 搭建基于prometheus的監控體系

 配置prometheus.yml檔案

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  - rules/*.rules


scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    scrape_interval: 10s
    static_configs:
      - targets: ['ip:9100']

  - job_name: 'mysql'
    scrape_interval: 10s
    static_configs:
      - targets: ['ip:9104']
           

4.重新開機prometheus服務

docker restart prometheus

5.通路prometheus首頁檢視mysql的監控

docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系

點選mysql---show more

docker 搭建基于prometheus的監控體系

由上可見,是通過一個metrics的接口來傳輸資料的,此時mysql和node都處于可監控的狀态了。

——————————————————————————————————————————

6.将監控資料通過grafana面闆展示

        a.啟動grafana服務

docker run -d --name=grafana -p 3000:3000 grafana/grafana
           

        b.通路grafana首頁(預設使用者和密碼:admin/admin)

docker 搭建基于prometheus的監控體系

 3.選擇資料源

docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系

隻需要配置URL即可 

docker 搭建基于prometheus的監控體系

 4.制作對應服務的儀表盤

docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系

 将id粘貼後點選load

docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系

點選import 

docker 搭建基于prometheus的監控體系

同理配置node-exporter監控

grafana中搜尋 

docker 搭建基于prometheus的監控體系
docker 搭建基于prometheus的監控體系

 配置好grafana面闆後發現沒有資料

docker 搭建基于prometheus的監控體系

 是因為在服務端沒有啟動node-exporter 服務,直接下載下傳二進制檔案然後啟動(友善,因為node_exporter設計用于監控主機系統。不建議将其部署為Docker容器,因為它需要通路主機系統)

docker 搭建基于prometheus的監控體系

 将該檔案上傳至主控端後,執行以下1,2,3步,可使用nohup ./node_exporter  --web.listen-address=":9100"&指令背景啟動

docker 搭建基于prometheus的監控體系

 啟動後公網通路9100端口即可驗證是否可用

docker 搭建基于prometheus的監控體系

 然後再通路grafana中node-exporter就有node主控端的系統監控資料了

docker 搭建基于prometheus的監控體系

 OK,

大功告成~~~ 

後期可結合jmeter使用,可以邊壓測,邊觀察服務資源使用率等資料~~~~~

繼續閱讀