時間:2024-8-18
版本信息:
- Prometheus V2.53.2
- Grafana V11.1.4
Prometheus 和 Grafana 介紹
Prometheus 和 Grafana 是監(jiān)控領(lǐng)域中經(jīng)常搭配使用的兩個開源工具根时,它們共同構(gòu)成了一個強大的監(jiān)控解決方案荣倾。
Prometheus
一個開源的監(jiān)控系統(tǒng)和時間序列數(shù)據(jù)庫蒸眠,主要用于收集和存儲各種指標(biāo)數(shù)據(jù)。它具有強大的查詢語言 PromQL鸿脓,可以對時間序列數(shù)據(jù)進行靈活的查詢和聚合。
Prometheus 主要分為兩個部分:服務(wù)端(Prometheus Server)和數(shù)據(jù)收集端( Exporter)
Prometheus Server(服務(wù)端)
Prometheus Server 負(fù)責(zé)從配置的目標(biāo)(例如 Node Exporter)抓取數(shù)據(jù)弄慰,并存儲這些數(shù)據(jù)署尤。它執(zhí)行數(shù)據(jù)采集、存儲时鸵、查詢和報警等任務(wù)胶逢。
主要組件:
- 數(shù)據(jù)采集:通過 HTTP 請求抓取暴露的時間序列數(shù)據(jù)。
- 時間序列數(shù)據(jù)庫:存儲和管理時間序列數(shù)據(jù)饰潜。
- 查詢語言:提供 PromQL(Prometheus Query Language)用于查詢數(shù)據(jù)初坠。
- 報警管理:集成 Alertmanager 用于處理和發(fā)送報警通知。
Exporter(數(shù)據(jù)收集端)
Prometheus官方提供了很多Exporter彭雾,用于采集不同類型的指標(biāo)數(shù)據(jù)碟刺,如Node Exporter、MySQL Exporter薯酝、Kafka Exporter等半沽。
Node Exporter
Node Exporter 是一種常見的 Prometheus 導(dǎo)出器,用于從 Linux 系統(tǒng)上收集系統(tǒng)級的指標(biāo)數(shù)據(jù)(如 CPU 使用率吴菠、內(nèi)存者填、磁盤 IO 等)。它將這些數(shù)據(jù)暴露為 Prometheus 可抓取的格式做葵。
它的主要功能是:
- 數(shù)據(jù)收集:從操作系統(tǒng)的各種指標(biāo)中獲取數(shù)據(jù)占哟。
- 數(shù)據(jù)暴露:通過 HTTP 將這些數(shù)據(jù)暴露給 Prometheus Server。
Grafana
一個開源的分析和可視化平臺酿矢,可以連接到多個數(shù)據(jù)源(包括 Prometheus)榨乎,并以圖形化的方式展示數(shù)據(jù)。Grafana 提供了豐富的圖表類型瘫筐、儀表盤和報警功能蜜暑,使得監(jiān)控數(shù)據(jù)更加直觀易懂。
Grafana 的主要功能
- 創(chuàng)建儀表盤: 將多個圖表严肪、表格等元素組合成一個儀表盤史煎,以展示系統(tǒng)的整體運行狀況。
- 自定義圖表: 支持多種圖表類型驳糯,如折線圖篇梭、柱狀圖、餅圖酝枢、熱力圖等恬偷,可以對數(shù)據(jù)進行靈活的展示。
- 設(shè)置報警: 當(dāng)指標(biāo)數(shù)據(jù)超出設(shè)定的閾值時帘睦,觸發(fā)報警袍患,及時通知相關(guān)人員。
- 探索數(shù)據(jù): 提供一個交互式的查詢界面竣付,方便用戶探索和分析數(shù)據(jù)诡延。
以Docker方式安裝Prometheus和Grafana
安裝在 DockerHost 192.168.31.77
創(chuàng)建目錄和配置文件
創(chuàng)建目錄
如果不想映射這兩個數(shù)據(jù),也可不用配置
映射數(shù)據(jù)目錄只是為了刪除容器之后數(shù)據(jù)不會丟失
mkdir -p /opt/prometheus/data
mkdir -p /opt/grafana/data
修改目錄權(quán)限
sudo chown -R 65534:65534 /opt/prometheus/data
sudo chmod -R 775 /opt/prometheus/data
上面的 65534:65534 是 Docker 中常用的 nobody 用戶和組的 UID 和 GID古胆,確保 Prometheus 容器能夠?qū)懭霐?shù)據(jù)肆良。
sudo chown -R 472:472 /opt/grafana/data
Grafana 容器中的進程通常以 grafana 用戶(UID 為 472)運行,因此逸绎,你需要確保該用戶對 /var/lib/grafana 有讀寫權(quán)限惹恃。
用戶ID可以通過如:docker inspect grafana | grep User
之類的命令查看
也可以簡單粗暴的讓所有用戶都有讀寫權(quán)限,如:
sudo chmod -R 777 /opt/prometheus/data
sudo chmod -R 777 /opt/grafana/data
創(chuàng)建配置文件
為 Prometheus 創(chuàng)建一個配置文件 prometheus.yml:
vim /opt/prometheus/prometheus.yml
global:
scrape_interval: 10s # 抓取數(shù)據(jù)的時間間隔
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.31.77:9100'] # 監(jiān)控宿主機的 Node Exporter
這只是一個示例棺牧,先跑起來
拉取鏡像
docker pull prom/prometheus
docker pull grafana/grafana
啟動容器
啟動 Prometheus 容器
docker run -d \
--name prometheus \
--restart unless-stopped \
-p 9090:9090 \
-v /opt/prometheus/data:/prometheus \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
訪問 http://192.168.31.77:9090 來查看 Prometheus 的 Web 界面
有防火墻的要注意開放端口
啟動 Grafana 容器
docker run -d \
--name grafana \
--restart unless-stopped \
-p 3000:3000 \
-v /opt/grafana/data:/var/lib/grafana \
grafana/grafana
訪問 http://192.168.31.77:3000
默認(rèn)用戶名密碼是:amdin/admin 巫糙,第一次登錄會提示修改密碼
有防火墻時需要開放對應(yīng)端口
在目標(biāo)機器上安裝Node Exporter
安裝在 192.168.31.77 這臺docker宿主機上
首先,從 Prometheus 官方的 GitHub 倉庫下載 Node Exporter 的最新版本颊乘。
mkdir -p /opt/prometheus/node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
解壓縮后運行
tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz
cd node_exporter-1.8.2.linux-amd64
nohup ./node_exporter &
Node Exporter 默認(rèn)會在端口 9100 上啟動参淹,并暴露 /metrics 端點。如果一切正常乏悄,你可以在瀏覽器中訪問 http://<目標(biāo)機器的IP地址>:9100/metrics承二,查看暴露的系統(tǒng)指標(biāo)。
如:
http://192.168.31.77:9100/metrics
此時應(yīng)該能在 prometheus 的 status菜單的 targets 中看到端點已連接
配置
配置 Grafana
添加 Prometheus 數(shù)據(jù)源:
- 左側(cè)菜單 Connections -> Data Sources
- 點擊Add data source
- 選擇Prometheus
- 給數(shù)據(jù)源起一個有意義的名稱纲爸,比如“Prometheus”
- URL:輸入Prometheus服務(wù)器的HTTP API地址亥鸠,例如:http://192.168.31.77:9090
創(chuàng)建儀表盤:
- 選擇 “Dashboards” 菜單,選擇“Create dashboard”识啦,選擇“Add visualization”
- 選擇剛剛添加的 Prometheus 數(shù)據(jù)源
配置面板:
- Metric:選擇要查詢的指標(biāo)负蚊,例如node_cpu_seconds_total
-
標(biāo)簽:根據(jù)需要過濾數(shù)據(jù),例如{instance="your_host"}颓哮。
66c1b745f2fc5.png
給面板命名并保存即可
導(dǎo)入儀表盤
給一個個監(jiān)控指標(biāo)來配置圖標(biāo)的方式相對的麻煩家妆,需要相關(guān)的經(jīng)驗也非常費時間,我們可以通過導(dǎo)入配置的方式快速搭建出專業(yè)的監(jiān)控界面冕茅,而無需從頭開始配置每一個圖表和面板伤极∮颊遥可以提高效率,復(fù)用性和專業(yè)性哨坪。
官方網(wǎng)站上有各種各樣的模板可以使用
如我們要監(jiān)控linux主機的各種指標(biāo):
- 打開:https://grafana.com/grafana/dashboards
- 搜索:Node Exporter庸疾,點擊第一個,如:https://grafana.com/grafana/dashboards/1860-node-exporter-full/
- 點擊右邊的復(fù)制模板ID (1860)
- 回到普羅米修斯中點擊創(chuàng)建面板 -->
Import dashboards from files or grafana.com.
- 在上面粘貼ID当编,點擊Load届慈,下一步選擇數(shù)據(jù)源
其他
將Node Exporter配置為系統(tǒng)服務(wù)
為了確保 Node Exporter 在系統(tǒng)重啟后自動啟動,你可以將其配置為系統(tǒng)服務(wù)忿偷。
- 創(chuàng)建一個新的系統(tǒng)服務(wù)文件 /etc/systemd/system/node_exporter.service:
sudo vim /etc/systemd/system/node_exporter.service
- 在文件中添加以下內(nèi)容:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=default.target
如果你將 Node Exporter 安裝在其他目錄下金顿,比如 /usr/local/bin,請相應(yīng)地調(diào)整 ExecStart 路徑鲤桥。
這里使用軟連接的方式
- 創(chuàng)建軟鏈接
ln -s /opt/prometheus/node_exporter/node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/node_exporter
- 重新加載 systemd 配置以應(yīng)用更改:
sudo systemctl daemon-reload
- 啟動 Node Exporter 服務(wù):
sudo systemctl start node_exporter
- 驗證:
sudo systemctl status node_exporter
訪問:http://192.168.31.85:9100/metrics
- 設(shè)置開機自啟動:
sudo systemctl enable node_exporter
中文配置
設(shè)置 Grafana 語言為中文
點擊頁面左上角的個人頭像揍拆,然后選擇“Profile”(偏好設(shè)置)
在“Preferences”頁面中,找到“Language”(語言)選項茶凳,設(shè)置為中文(簡體)
使用中文監(jiān)控面板
如:
- https://grafana.com/grafana/dashboards/12633-linux/
- https://grafana.com/grafana/dashboards/8919
- https://grafana.com/grafana/dashboards/16098
Linux主機詳情
(12633-linux)效果如下: