Prometheus 和 Grafana

時間: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 中看到端點已連接

66c1b36a68c7a.png

配置

配置 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):

66c2d08f31690.png

其他

將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)控面板

如:

Linux主機詳情
(12633-linux)效果如下:

66c3656c0ebdd.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末礁凡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慧妄,更是在濱河造成了極大的恐慌顷牌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塞淹,死亡現(xiàn)場離奇詭異窟蓝,居然都是意外死亡,警方通過查閱死者的電腦和手機饱普,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門运挫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人套耕,你說我怎么就攤上這事谁帕。” “怎么了冯袍?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵匈挖,是天一觀的道長。 經(jīng)常有香客問我康愤,道長儡循,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任征冷,我火速辦了婚禮择膝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘检激。我一直安慰自己肴捉,他們只是感情好腹侣,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著齿穗,像睡著了一般傲隶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缤灵,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音蓝晒,去河邊找鬼腮出。 笑死,一個胖子當(dāng)著我的面吹牛芝薇,可吹牛的內(nèi)容都是我干的胚嘲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼洛二,長吁一口氣:“原來是場噩夢啊……” “哼馋劈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晾嘶,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妓雾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垒迂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體械姻,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年机断,在試婚紗的時候發(fā)現(xiàn)自己被綠了楷拳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡吏奸,死狀恐怖欢揖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奋蔚,我是刑警寧澤她混,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站泊碑,受9級特大地震影響产上,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛾狗,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一晋涣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沉桌,春花似錦谢鹊、人聲如沸算吩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偎巢。三九已至,卻和暖如春兼耀,著一層夾襖步出監(jiān)牢的瞬間压昼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工瘤运, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窍霞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓拯坟,卻偏偏與公主長得像但金,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子郁季,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容