0. 介紹
用tar包的方式安裝 Prometheus 和 Grafana
- Prometheus:開源的監控方案
- Grafana:將Prometheus的數據可視化平臺
Prometheus已經有了查詢功能為什么還需要grafana呢?Prometheus基于promQL這一SQL方言,有一定門檻!Grafana基于瀏覽器的操作與可視化圖表大大降低了理解難度
1. Prometheus
1. 下載 與 解壓
- 官網下載: https://prometheus.io/download/#prometheus
- 上傳至機器
- 解壓命令:tar -xzf prometheus-*.tar.gz
2. 啟動與暫停
- 進入解壓后的文件夾:cd prometheus-*
ll命令可以發現可執行文件prometheus
和 prometheus.yml ,分別是啟動文件和配置文件
啟動prometheus我們可以編寫systemd unit 服務,也可以直接nohup &直接掛起
2.1 掛起后臺啟動:
nohup ./prometheus --config.file=prometheus.yml --web.enable-admin-api --web.enable-lifecycle > nohup.out 2>&1 &
- –web.enable-admin-api: 開啟API服務,為下個參數動態加載配置打基礎
- –web.enable-lifecycle : 這個配置后,可以動態加載配置文件而無需重啟prometheus,具體命令是
curl -X POST Prometheus所在機器ip:Prometheus監控的端口/-/reload
- 2>&1 :標準錯誤輸出重定向標準輸出, &>filename 可以實現也是一樣的效果.
2>&1
是舊shell寫法兼容性更高點 - nohup …&:
- & 只是將命令置于后臺,但是命令仍與終端窗口關聯.導致默認情況下,命令的標準輸出和標準錯誤輸出仍然連接到終端;
- nohup 將命令放入后臺運行,并且它會將命令的標準輸出和標準錯誤輸出重定向到一個名為 nohup.out 的文件中,這樣即使你關閉終端,命令也會繼續運行,并且輸出會寫入到 nohup.out 文件中。
- 看起來nohup擁有了 &的效果,為什么還用&?一方面是 &比nohup更兼容 另一方面是 單獨nohup后,你需要手動 ctrl+z 將命令掛起, 配合 &可以馬上放入后臺運行~
ps -ef|grep prometheus
命令可以查看prometheus進程信息
2.2 systemd service 啟動
創建prometheus.service 文件,不熟悉systemd定時器可以去看看阮老大文章Systemd 定時器教程
,這里我的prometheus 在/opt下,各位注意換成自己的路徑
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus.yml --web.enable-admin-api --web.enable-lifecycle
Restart=on-failure
[Install]
WantedBy=multi-user.target
將上述文件保存到 /etc/systemd/system 目錄后,輸入下列命令
#1.加載系統服務
sudo systemctl daemon-reload
#2.啟動服務
sudo systemctl start prometheus.service
#3.設置為系統自啟動
sudo systemctl enable prometheus.service
#4 .查看狀態
sudo systemctl status prometheus.service
- Type=simple:該服務是個簡單基本的服務,一旦啟動命令被執行,systemd 將認為服務已經啟動完成,不會監視服務進程的運行狀態或退出。對于啟動后會一直運行的服務(如守護進程)非常適用,因為它們會在后臺運行而不會立即退出。
- Restart:指定服務在失敗或退出后是否自動重啟.no/always/on-failure(非零退出代碼(失敗)退出時)/on-abnormal(服務以異常退出時(如由信號終止))
下面是systemd其他常用命令
停止服務
sudo systemctl stop prometheus.service
關閉自啟動
sudo systemctl disable prometheus.service
3. web查看
瀏覽器 打開 Prometheus所在機器ip:9090
(默認端口9090)
4. 修改配置文件yml
先說兩個輔助命令:
- Prometheus 根目錄下自帶了一個 檢查配置文件是否正確的小工具
promtool
,
使用語法:./promtool check config prometheus.yml
- 之前啟動命令配置了 熱啟動(enable-lifestyle),所以我們可以通過命令熱更新配置文件無需重啟整個Prometheus
curl -X POST ip:port/-/reload
2. Grafana
Grafana 和 Prometheus安裝步驟類似,官網文檔 https://grafana.com/docs/grafana/latest
2.1 下載 和安裝
- 下載頁: https://grafana.com/grafana/download
- 上傳至目標機器
- tar -xzvf XX.tar.gz
2.2 啟動和停止服務
grafana的啟動腳本在 根目錄下的bin文件夾,叫 grafana-server
啟動,這里只寫了nohup命令,systemd 的server文件參考上面的Prometheus的
nohup ./bin/grafana-server 2>&1 &
停止服務,nohup就kill 掉,systemd 就 systemctl stop xx.service
3. web查看
瀏覽器 打開 grafana安裝機器ip:3000
(默認端口3000),第一次登錄用戶/密碼均是 admin,之后按提示更改密碼即可
4. grafana配置文件修改
待補充
5. grafana模板
grafana 模板可以在 https://grafana.com/grafana/dashboards/ 尋找,
之后在grafana左側sidebar的dashboards->import 面板導入使用
3.現在的不足
我們現在有了Prometheus 和Grafana~
但是Prometheus去哪里抓取數據呢?(Prometheus是pull模型)因此有了各種各樣的export用于對主機進行數據刮削,需要在被監控的主機中按需按照export
現在的鏈路是 export(刮削數據)->Prometheus主動抓取export(export注冊發現?配置在Prometheus的配置文件中)->grafana(導入Prometheus數據源后即可展示)
現在還缺什么?告警組件
,監控平臺除開數據的展示外,另一個重要的功能就是當某些數據達到閾值后進行主動告警!
Prometheus生態下的告警組件是 alertmanager
,但是不包含Prometheus中,需要你額外安裝配置,prometheus server獲取監控指標,基于這些指標定義規則(rules),若這些指標滿足告警規則便將信息推送到Alertmanager
alert manager的編寫閾值規則稍微有些復雜,但是有 https://samber.github.io/awesome-prometheus-alerts/rules.html 這樣的前人分析了規則供我們借鑒的網站,所以還好
grafana web界面也可以配置alert,但是沒研究過
上述介紹就放到后續文章中吧!