Prometheus的特點
- 多維度數據模型。
- 靈活的查詢語言。
- 不依賴分佈式存儲,單個服務器節點是自主的。
- 通過基於HTTP的pull方式採集時序數據。
- 可以通過中間網關進行時序列數據推送。
- 通過服務發現或者靜態配置來發現目標服務對象。
- 支持多種多樣的圖表和界面展示,比如Grafana等。
Prometheus相關組件
Prometheus生態系統由多個組件組成,它們中的一些是可選的。多數Prometheus組件是Go語言寫的,這使得這些組件很容易編譯和部署。
- Prometheus Server
主要負責數據採集和存儲,提供PromQL查詢語言的支持。
- 客戶端SDK
官方提供的客戶端類庫有go、java、scala、python、ruby,其他還有很多第三方開發的類庫,支持nodejs、php、erlang等。
- Push Gateway
支持臨時性Job主動推送指標的中間網關。
- PromDash
使用Rails開發可視化的Dashboard,用於可視化指標數據。
- Exporter
Exporter是Prometheus的一類數據採集組件的總稱。它負責從目標處蒐集數據,並將其轉化為Prometheus支持的格式。與傳統的數據採集組件不同的是,它並不向中央服務器發送數據,而是等待中央服務器主動前來抓取。
Prometheus提供多種類型的Exporter用於採集各種不同服務的運行狀態。目前支持的有數據庫、硬件、消息中間件、存儲系統、HTTP服務器、JMX等。
- alertmanager
警告管理器,用來進行報警。
- prometheus_cli
命令行工具。
- 其他輔助性工具
多種導出工具,可以支持Prometheus存儲數據轉化為HAProxy、StatsD、Graphite等工具所需要的數據存儲格式。
架構圖
工作流程
- Prometheus 服務器定期從配置好的 jobs 或者 exporters 中獲取度量數據;或者接收來自推送網關發送過來的 度量數據。
- Prometheus 服務器在本地存儲收集到的度量數據,並對這些數據進行聚合;
- 運行已定義好的 alert.rules,記錄新的時間序列或者向告警管理器推送警報。
- 告警管理器根據配置文件,對接收到的警報進行處理,並通過email等途徑發出告警。
- Grafana等圖形工具獲取到監控數據,並以圖形化的方式進行展示。
安裝及配置
linux:centos7.5
Prometheus:2.13.1
alertmanager:0.19.0
node_exporter: 0.18.1
wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz
wget https://github.com/prometheus/alertmanager/releases/download/v0.19.0/alertmanager-0.19.0.linux-amd64.tar.gz
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
groupadd prometheus
useradd -g prometheus prometheus -d /data/prometheus
tar -xvf prometheus-2.13.1.linux-amd64.tar.gz
mv prometheus-2.13.1.linux-amd64 /data/prometheus
mkdir /data/prometheus/{data,config,logs} -p
mv prometheus promtool /usr/local/bin/
mv prometheus.yml config/
chown -R prometheus.prometheus *
- 創建prometheus.service 的 systemd unit 文件
vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/prometheus --config.file=/data/prometheus/config/prometheus.yml --storage.tsdb.path=/data/prometheus/data --web.enable-lifecycle --storage.tsdb.retention=1y
Restart=on-failure
[Install]
WantedBy=multi-user.target
說明:
--web.enable-lifecycle #這個是方便更改配置文件,不用重啟Prometheus服務,使用curl -XPOST http://172.20.20.224:9090/-/reload 重載配置
- 啟動服務
systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service
- prometheus 簡單web UI :http://172.20.20.224:9090/graph
- 效果圖
如果對您有幫助,記得不要忘了給個關注哦!!! ,也可查看賬號統一系列。
閱讀更多 上海IT故事 的文章