文章目錄
- 前言
- 一、Prometheus、Grafana
- 1.1 Prometheus簡介
- 1.2 Grafana簡介
- 1.3 Prometheus的核心組件
- 1.4 Prometheus優點
- 1.5 Prometheus缺點
- 二、部署Docker
- 三、主節點部署Prometheus+Grafana
- 3.1 部署Prometheus
- 3.2 防火墻開放端口
- 3.3 訪問服務
- 3.4 安裝Grafana
- 3.5 防火墻開放端口
- 3.6 訪問服務
- 3.7自定義賬號/密碼:admin/admin
- 四、從節點部署Node_exporter
- 4.1 被采集的主機節點上部署Node_exporter
- 4.2 防火墻開放端口
- 五、主節點配置Prometheus
- 5.1 在主節點上修改Prometheus主配置文件
- 六、配置Grafana監控界面
- 6.1 添加Prometheus數據源
- 6.2 選擇Prometheus類型
- 6.3 輸入主節點PrometheusIP地址及端口
- 6.4 點擊sava保存
- 6.5 新增Dashboard Linux基礎數據展示
- 6.6 填寫模板id
- 6.7 選擇剛剛創建好的數據源
- 6.8 查看Dashboard
- 總結
前言
Prometheus(普羅米修斯R)是一套開源的監控&報警&時間序列數據庫的組合,由SoundCloud公司開發。
Prometheus基本原理是通過HTTP協議周期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供HTTP接口就可以接入監控系統,不需要任何SDK或者其他的集成過程。這樣做非常適合虛擬化環境比如VM或者Docker。
Prometheus應該是為數不多的適合Docker、Mesos、Kubernetes環境的監控系統之一。
Prometheus 號稱下一代監控系統,已經成為主導及容器監控方面的標配,并且在未來可見的時間內被廣泛應用
提示:以下是本篇文章正文內容,下面案例可供參考
一、Prometheus、Grafana
1.1 Prometheus簡介
Prometheus是由SoundCloud公司開發的開源監控和警報工具包。其設計思想是通過時間序列數據庫存儲監控數據,并通過強大的查詢語言PromQL對數據進行分析。Prometheus的架構高度模塊化,易于擴展,特別適合云原生環境,如Kubernetes集群。
1.2 Grafana簡介
Grafana是一個開源的數據可視化工具,廣泛用于繪制圖表和儀表盤。它可以與多種數據源配合使用,如Prometheus、Graphite等,并提供豐富的圖表類型和插件支持。Grafana的用戶友好界面使得自定義和共享儀表盤變得輕而易舉。
通過將Prometheus的數據采集、存儲與Grafana的可視化能力相結合,可以創建一套強大的監控系統,幫助維護和優化大規模的IT環境。
1.3 Prometheus的核心組件
Prometheus服務器:負責收集和存儲時間序列數據。
exporters:用于將不同類型的監控指標轉化為Prometheus格式,例如node_exporter用于收集主機級別的指標。
Pushgateway:允許短暫的生命進程將指標推送到Prometheus,適用于批處理作業。
Alertmanager:負責處理Prometheus服務器發出的警報。
各種客戶端庫:用于與被監控的程序集成,這些庫可以幫助自動生成指標。
Prometheus服務器是架構中的關鍵組件,它通過拉取(Pull)的方式從配置的目標中收集指標數據,并存儲在自身的時序數據庫中。通過查詢接口,用戶可以實時獲取監控數據,進行問題診斷和趨勢分析。
1.4 Prometheus優點
(1)提供多維度數據模型和靈活的查詢方式
通過將監控指標關聯多個 tag,來將監控數據進行任意維度的組合,并且提供簡單的 PromQL 查詢方式,還提供 HTTP 查詢接口,可以很方便地結合 Grafana 等 GUI 組件展示數據。
(2)基于時序數據庫,支持服務器節點的本地存儲
通過 Prometheus 自帶的時序數據庫,可以完成每秒千萬級的數據存儲;不僅如此,在保存大量歷史數據的場景中,Prometheus 可以對接第三方時序數據庫和 OpenTSDB 等。
(3)定義了開放指標數據標準
以基于 HTTP 的 Pull 方式采集時序數據,只有實現了Prometheus監控數據才可以被 Prometheus 采集、匯總、并支持 Push 方式向中間網關推送時序列數據,能更加靈活地應對多種監控場景。
(4)支持通過靜態文件配置和動態發現機制發現監控對象
自動完成數據采集。Prometheus 目前已經支持 Kubernetes、etcd、Consul 等多種服務發現機制。
(5)易于維護
可以通過二進制文件直接啟動,并且提供了容器化部署鏡像。
(6)集群支持
支持數據的分區采樣和集群部署,支持大規模集群監控。
1.5 Prometheus缺點
Prometheus 是基于 Metric 的監控,不適用于日志(Logs)、事件(Event)、調用鏈(Tracing)。
由于Prometheus采用的是Pull模型拉取數據,意味著所有被監控的endpoint必須是可達的,需要合理規劃網絡的安全配置。
指標眾多,需進行適當裁剪。
本次部署Prometheus+Grafana需要兩臺服務器
主節點(10.10.10.65)主要負責部署Prometheus+Grafana,搭建監控server平臺,并開啟9090、3000端口
從節點(10.10.10.214)主要負責部署Node_exporter,主要在被采集的主機上部署插件服務,并開啟9100服務端口,支持部署多臺被采集的主機,由主節點統一管理
二、部署Docker
可以參考我之前部署docker教程,非常詳細
三、主節點部署Prometheus+Grafana
3.1 部署Prometheus
#拉取鏡像
docker pull prom/prometheus
#運行容器
docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus
3.2 防火墻開放端口
#開放端口策略
firewall-cmd --zone=public --add-port=9090/tcp --permanent
#刷新防火墻配置
firewall-cmd --reload
#查看已開放端口
firewall-cmd --list-ports
3.3 訪問服務
通過瀏覽器訪問http://ip地址:9090
3.4 安裝Grafana
#創建存儲卷
docker volume create -d local grafana_storage
#查看存儲卷
docker volume ls
#拉取鏡像
docker pull grafana/grafana
#運行容器
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v grafana_storage:/var/lib/grafana \
grafana/grafana
3.5 防火墻開放端口
#開放端口策略
firewall-cmd --zone=public --add-port=3000/tcp --permanent
#刷新防火墻配置
firewall-cmd --reload
#查看已開放端口
firewall-cmd --list-ports
3.6 訪問服務
通過瀏覽器訪問http://ip地址:3000
3.7自定義賬號/密碼:admin/admin
四、從節點部署Node_exporter
4.1 被采集的主機節點上部署Node_exporter
Node_exporter收集機器的系統數據,這里采用prometheus官方提供的exporter,除node_exporter外,官方還提供consul,memcached,haproxy,mysqld等exporter,具體可查看官網。
#創建存儲卷
docker volume create -d local node_proc
docker volume create -d local node_sys
#查看存儲卷
docker volume ls
#拉取鏡像
docker pull prom/node-exporter
#運行容器
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v node_proc:/host/proc:ro \
-v node_sys:/host/sys:ro \
-v "/:/rootfs:ro" \
prom/node-exporter
4.2 防火墻開放端口
#開放端口策略
firewall-cmd --zone=public --add-port=9100/tcp --permanent
#刷新防火墻配置
firewall-cmd --reload
#查看已開放端口
firewall-cmd --list-ports
五、主節點配置Prometheus
5.1 在主節點上修改Prometheus主配置文件
#復制文件
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD#修改prometheus.yml文件
vim prometheus.yml#在Prometheus配置文件按以下內容修改:
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:9090']labels:instance: prometheus- job_name: linuxstatic_configs:- targets: ['ip地址:9100'] #被監控端的IP地址和端口號(有多個被監控端可用 逗號 隔開)labels:instance: localhost#復制文件
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
#重啟容器服務
docker restart prometheus
六、配置Grafana監控界面
6.1 添加Prometheus數據源
使用瀏覽器訪問http:/ /10.10.10.65:3000監控平臺,添加Prometheus數據源
6.2 選擇Prometheus類型
6.3 輸入主節點PrometheusIP地址及端口
6.4 點擊sava保存
6.5 新增Dashboard Linux基礎數據展示
6.6 填寫模板id
更多grafana模板: https://grafana.com/grafana/dashboards 搜索 相應 dashboards的id如8919,12227
6.7 選擇剛剛創建好的數據源
6.8 查看Dashboard
成功顯示資源使用率可視化圖形界面
總結
可以創建不同類型的數據源,比如MySQL、redis、MongoDB、PostgreSQL等等
選擇不同數據源類型
可以在官網查看更多可視化模板
官網提供很多模板