【prometheus+Grafana篇】基于Prometheus+Grafana實現Redis數據庫的監控與可視化

💫《博主主頁》:

? ? ? ? ? ?🔎?CSDN主頁

? ? ? ? ? ?🔎?IF Club社區主頁

🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了解

💖如果覺得文章對你有所幫助,歡迎點贊收藏加關注💖

? ? 【周末充電??+摸魚🐟】剛研究完MySQL的行格式,技術人的周末果然離不開學習與放松的完美平衡!今天這篇文章咱們繼續分享—— 使用Prometheus+Grafana打造專業的Redis監控系統 ,不僅能實時采集關鍵指標,還能配置炫酷可視化和智能告警,讓數據庫健康狀態一目了然!

? ? 文中會手把手部署redis_exporter、配置Prometheus抓取數據,再通過Grafana設計直觀的監控面板,也會分享幾個超實用的Redis告警規則,幫各位提前規避線上風險。話不多說,直接上操作,讓你的Redis享受24小時的監護!🚀

? ? ? ? ? ? ? ? ? ??

特別說明💥:

📌 開源儀表盤引用

  • 本文采用的Redis數據庫監控儀表盤直接使用了Grafana官網開源項目(Dashboard ID: 763),非常感謝原作者(oliver006)的無私分享。關于Grafana的所有配置步驟均基于該開源儀表盤并驗證通過,各位可一鍵導入快速搭建專業級的可視化監控。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? 原創告警規則實現

  • 關于告警部分為博主獨立開發完成,針對Redis數據庫實現了如下告警:

    • ? Redis 實例不可用

    • ? Redis 內存使用率過高

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

🔗?Prometheus+Grafana監控Redis全流程

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ?

prometheus+Grafana全系列文章(實時更新🔥):

序號文章
1【prometheus+Grafana篇】Prometheus與Grafana:深入了解監控架構與數據可視化分析平臺-CSDN博客
2【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter_grafana二進制部署-CSDN博客
3【prometheus+Grafana篇】Prometheus告警規則參數全解析 + Alertmanager實現多平臺告警(含電子郵件/企業微信群/飛書群/釘釘群接受方式)_grafana做飛書機器人報警-CSDN博客
4【prometheus+Grafana篇】基于Prometheus+Grafana實現Linux操作系統的監控與可視化-CSDN博客
5【prometheus+Grafana篇】基于Prometheus+Grafana實現windows操作系統的監控與可視化_grafana 監控 windows-CSDN博客
6【prometheus+Grafana篇】基于Prometheus+Grafana實現Oracle數據庫的監控與可視化-CSDN博客
7【prometheus+Grafana篇】基于Prometheus+Grafana實現MySQL數據庫的監控與可視化-CSDN博客
8【prometheus+Grafana篇】基于Prometheus+Grafana實現MongoDB數據庫的監控與可視化-CSDN博客
9【prometheus+Grafana篇】基于Prometheus+Grafana實現Redis數據庫的監控與可視化-CSDN博客

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

目錄

一、在Redis 6379實例上的操作

二、安裝redis_exporter(redis_exporter:是prometheus的一個插件,抓取和收集redis數據庫的各種運行指標用于分析。redis_exporter插件是GitHub開源組織提供的,通過GitHub官網下載redis_exporter)

1)下載redis_exporter安裝包,選擇download,然后點擊“Exporters and integrations”,選擇redis exporter

2)跳轉到了gitHub,點擊redis_exporter的版本集,選擇最新的redis_exporter下載

3)目前redis_exporter最新版本為1.67.0

4)解壓二進制redis_exporter包

5)移動并重命名redis_exporter解壓出來的目錄

6)創建prometheus用戶

7)賦權

8)寫入linux啟動服務項

9)登錄redis_exporter界面管理,默認端口為9121

三、將當前redis 6379實例加入到prometheus監控,并通過Grafana展示

1)將reids_exporter的信息加入到prometheus監控的配置文件prometheus.yml中

2)配置告警規則文件

3)檢查配置文件

4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)

5)在prometheus查看是否可以看到監控信息

6)登錄Grafana界面管理,將當前主機的監控信息做展示

一、下載一個儀表盤:Grafana官網“http://www.grafana.com”—Dashboard templates,然后選擇一個下載量高的自己喜歡的redis_exporter(redis監控)

二、將儀表盤添加到Grafana上:Dashboards—New—Import—點擊“Upload dashboard JSON file”

三、儀表盤展示:Dashboards—查看到已經定義好的儀表盤,并且數據源是prometheus監控,點擊進去


? ? ? ? ? ? ? ? ? ? ? ??

監控Redis信息如下:

主機名

IP地址

配置

系統

描述

Redis

10.2.1.117

4C 8G

Red Hat Linux 7.9

安裝redis_exporter對這臺服務器進行監控

redis_exporter:默認端口9121。抓取和收集Redis數據庫的各種運行指標用于分析

? ? ? ? ??

一、在Redis 6379實例上的操作

? ? 在 Redis?3.x/4.x/5.x,沒有內置的用戶權限管理功能,也就是沒有數據庫用戶這個概念。在 Redis 6.x 或更高版本中支持了用戶權限管理功能,才能為數據庫創建用戶

? ? ? ? ? ? ? ? ??

二、安裝redis_exporter(redis_exporter:是prometheus的一個插件,抓取和收集redis數據庫的各種運行指標用于分析。redis_exporter插件是GitHub開源組織提供的,通過GitHub官網下載redis_exporter

1)下載redis_exporter安裝包,選擇download,然后點擊“Exporters and integrations”,選擇redis exporter

?

?

?

? ? ? ? ? ? ? ?

2)跳轉到了gitHub,點擊redis_exporter的版本集,選擇最新的redis_exporter下載

?

? ? ? ? ? ? ? ?

PS:也可以直接在gitHub官網下載

一、通過gitHub(官網地址:https://github.com/)下載redis_exporter安裝包,在gitHub搜索“redis_exporter”。因為是開源,所以大家都是有時間才會開發,所以選擇一個最近更新的

?

二、點擊redis_exporter的版本集,選擇最新的redis_exporter下載

? ? ? ? ? ? ? ? ??

3)目前redis_exporter最新版本為1.67.0

? ? ? ? ? ?

4)解壓二進制redis_exporter包

[root@Redis ~]# tar -zxvf redis_exporter-v1.65.0.linux-amd64.tar.gz

? ? ? ? ? ?

5)移動并重命名redis_exporter解壓出來的目錄

[root@Redis ~]# mkdir -p /opt/prometheus
[root@Redis ~]# mv redis_exporter-v1.65.0.linux-amd64 /opt/prometheus/
[root@Redis ~]# mv /opt/prometheus/redis_exporter-v1.65.0.linux-amd64 /opt/prometheus/redis_exporter

? ? ? ? ? ??

6)創建prometheus用戶

[root@Redis ~]# groupadd prometheus
[root@Redis ~]# useradd -g prometheus -M -s /usr/sbin/nologin prometheus     ---創建一個名為prometheus的系統賬號,該賬號沒有家目錄并且不能登錄Shell。這種設置適用于需要運行服務或任務而不需要用戶交互的情況。
-M:不為用戶創建家目錄。對于系統服務賬號來說,通常不需要家目錄,因此使用 -M 可以跳過家目錄的創建步驟。
-s /usr/sbin/nologin:指定用戶登錄時使用的Shell。將用戶prometheus的登錄Shell設置為/usr/sbin/nologin。nologin Shell的作用是阻止用戶登錄系統,但允許該用戶擁有有效的系統賬號。這通常用于服務賬號,因為它們不需要交互式Shell訪問,僅用于執行特定服務或任務。[root@Redis ~]# passwd prometheus
[root@Redis ~]# id prometheus

? ? ? ? ??

7)賦權

[root@Redis ~]# chown -R prometheus:prometheus /opt/prometheus/redis_exporter

? ? ? ? ? ??

8)寫入linux啟動服務項

[root@Redis ~]# cd /usr/lib/systemd/system
[root@Redis ~]# vi redis6379_exporter.service
[Unit]
Description=redis_exporter
After=network.target[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/redis_exporter/redis_exporter -redis.addr "redis://10.2.1.117:6379" -redis.password eXql3MDpww --web.listen-address=0.0.0.0:9121[Install]
WantedBy=multi-user.target
[root@Redis ~]# systemctl daemon-reload
[root@Redis ~]# systemctl start redis6379_exporter.service
[root@Redis ~]# systemctl enable redis6379_exporter.service
[root@Redis ~]# systemctl status redis6379_exporter.service

###-redis.addr:要抓取的Redis實例的地址(默認“redis://localhost:6379")

###-redis.password:指定連接redis的密碼。在 Redis?3.x/4.x/5.x中,沒有內置的用戶權限管理功能,也就是沒有數據庫用戶這個概念。在 Redis 6.x 或更高版本中支持了用戶權限管理功能,才能為數據庫創建用戶

###--web.listen-address=<address>:<port>:指定服務端口。Redis的抓取默認通過9121端口訪問redis_exporter管理界面,可以修改成其他端口用于訪問redis_exporter管理界面(如果沒有修改端口的需求可以不設置這個參數)。此參數只能在redis_exporter命令啟動時指定,不可以在配置文件prometheus.yml中指定。如果服務器上有多個實例,比如還有6380實例,那么需要再寫一個linux啟動項,并且通過-redis.addr參數指定redis數據源

? ? ? ? ? ? ? ??

9)登錄redis_exporter界面管理,默認端口為9121

http://10.2.1.117:9121/metrics

? ? ? ? ? ? ? ? ? ?

三、將當前redis 6379實例加入到prometheus監控,并通過Grafana展示

注意:如下操作是在安裝了prometheus和Grafana的主機上進行操作

? ? ? ? ? ? ?

1)將reids_exporter的信息加入到prometheus監控的配置文件prometheus.yml中

[root@prometheus ~]# vi /opt/prometheus/prometheus.yml     
在scrape_configs下面新增如下內容:# redis_exporter配置              - job_name: "Redis監控"              ###job_name 用來唯一標識一個監控任務。在同一個 prometheus.yml 文件中,不同的 scrape_config可以有不同的job_name,以便 Prometheus 能夠區分和管理不同的監控目標和配置,用來將不同的監控目標分組。單位為監控redis數據庫設置一個獨立的job_namescrape_interval: 15s               ###指定這個job_name每隔多久從每個目標(如 Exporter、應用端點)拉取一次指標數據。優先級:會覆蓋全局的 global:scrape_interval(如果存在)。file_sd_configs:- files:- /data/prometheus/conf.d/redis_targets.json            # redis需要監控的實例都單獨寫在了redis_targets.json文件中,是為了避免prometheus.yml內容過多,看起來更簡潔[root@prometheus ~]# vi /data/prometheus/conf.d/redis_targets.json        ###因為使用的是16974 json模版,16974模版沒有定義太多的選項,所以只定義目標(targets)、實例信息(instance)即可
[{"targets": [ "10.2.1.117:9121" ],"labels": { "instance": "Redis數據庫(IP:10.2.1.117,端口:6379)" }}
]

? ? ? ? ? ? ? ? ?

2)配置告警規則文件

? ? 除了如下告警規則之外,還需要單獨配置一個Targets目標不可達(up)的相關規則,因為up 是一個布爾值指標,表示 Prometheus 是否能夠成功地 scrape(抓取)到指定的目標(targets)數據,用于判斷目標node-exporter相關進程是否在目標主機存活。關于up的規則文件參考:【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter_grafana二進制安裝-CSDN博客

[root@prometheus ~]# cd /opt/prometheus/rules/    ###在prometheus.yml文件中定義了告警規則文件rule_files參數
[root@prometheus rules]# vi redis_alerts.yml 

? ? ? ? ?

3)檢查配置文件

[root@prometheus ~]# cd /opt/prometheus/
[root@prometheus ~]# ./promtool check config prometheus.yml      ###用于檢查 Prometheus 配置文件(prometheus.yml)的語法和格式是否正確。

執行這條命令會執行以下操作:

  1. 驗證配置文件的語法:檢查 prometheus.yml 文件是否符合 Prometheus 配置格式規范。
  2. 檢測潛在的錯誤或警告:如果配置文件中存在拼寫錯誤、格式問題、無效的配置項等問題,它會提供相關的錯誤信息或警告。比如告警規則寫的不對,就會有提示
  3. 輸出有用的診斷信息:如果配置文件存在問題,promtool 會輸出詳細的錯誤信息。

? ? ? ? ? ??

4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)

#重載:前提是在prometheus.service啟動服務項中加了--web.enable-lifecycle參數:--web.enable-lifecycle:###啟用Prometheus的生命周期接口,允許通過HTTP請求來動態重新加載配置等操作。這對于在運行時更新配置或執行其他管理操作非常有用,當修改了prometheus的配置后,可以通過curl命令來重新加載配置文件,而不需要重啟prometheus(推薦方式)

[root@prometheus ~]# curl -X POST http://localhost:9090/-/reload

#重啟

[root@prometheus ~]# systemctl restart prometheus.service

? ? ? ? ? ? ? ? ?

5)在prometheus查看是否可以看到監控信息

網址:http://110.120.100.21:9090

菜單欄:Status—Targets

? ? ? ? ? ?

6)登錄Grafana界面管理,將當前主機的監控信息做展示

地址:http://110.120.100.21:3000

默認用戶:admin

默認密碼:admin

? ? ? ?

一、下載一個儀表盤:Grafana官網“http://www.grafana.com”—Dashboard templates,然后選擇一個下載量高的自己喜歡的redis_exporter(redis監控)

注意:不需要再增加數據源了。因為在第一次搭建prometheus+Grafana的時候就已經加好了,在添加數據源時,有個配置項是Connection,這里添加的是prometheus的地址,指的是prometheus監控服務器的地址,而不是node-exporter的地址

? ? ? ? ? ? ?

以763為例,涵蓋Redis多個維度的指標項

?? ? ? ? ? ??

二、將儀表盤添加到Grafana上:Dashboards—New—Import—點擊“Upload dashboard JSON file”

Name:定義名稱,最好定義為主機ip加用途

Prometheus:選擇prometheus源

....

然后import

? ? ? ? ? ?

三、儀表盤展示:Dashboards—查看到已經定義好的儀表盤,并且數據源是prometheus監控,點擊進去

儀表盤Name:大族機房Redis數據庫監控

數據源Name:prometheus監控

instance:這里其實就是當時已經在配置prometheus.yml時,定義的instance,也就是說Grafana會自動識別到


? ? 部署完成,歡迎取用。下期將帶來其他數據庫的監控實戰,敬請期待!持續學習,共同進步,我們下次見!🚀

??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/pingmian/84450.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84450.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84450.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

R語言速釋制劑QBD解決方案之四

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》速釋制劑混合和潤滑工藝研究的R語言解決方案。 原料粒徑分布與混合次數對混合均一性的影響 由于acetriptan 的溶解度低&#xff0c;acetriptan 需要粉碎以提高生物利用度。粉碎后的原料…

用python玩轉大語言模型——從 RNN 到文本生成大語言模型的奇幻之旅

用python玩轉大語言模型——從 RNN 到文本生成大語言模型的奇幻之旅 第一部分:RNN原理及其結構(魔法師的記憶水晶球) 1.1 經典RNN結構(時光旅行者的備忘錄) 核心概念 時間循環:RNN通過隱藏狀態h在時間步之間傳遞信息,形成閉環結構參數共享:每個時間步使用相同的權重…

數據結構(9)排序

一、常見排序算法 排序在生活中無處不在&#xff0c;上學這么多年班級排名啥的總有吧&#xff0c;不可能一次都沒見過&#xff1b;打游戲有的排行榜不也是有排序的思想在里面&#xff0c;排序倒不是什么特殊的數據結構&#xff0c;但是是非常重要的算法思想&#xff0c;所以在初…

量子計算導論課程設計 之 PennyLane環境搭建

文章目錄 具體配置conda 虛擬環境配置Pennylane 正所謂&#xff0c;磨刀不誤砍柴工&#xff0c;想要進行量子計算導論的課程設計&#xff0c;首先就是搭建好平臺&#xff0c;推薦大家就是本地搭建&#xff0c;那么下面有三種選擇 QiskitTensorFlow QuantumPennylane 具體配置…

nginx ./nginx -s reload 不生效

問題 nginx ./nginx -s reload 不生效 解決 不是改opt/nginx下的配置文件是改/usr/local/nginx下的配置文件改之前做好備份

建造者模式深度解析與實戰應用

作者簡介 我是摘星&#xff0c;一名全棧開發者&#xff0c;專注 Java后端開發、AI工程化 與 云計算架構 領域&#xff0c;擅長Python技術棧。熱衷于探索前沿技術&#xff0c;包括大模型應用、云原生解決方案及自動化工具開發。日常深耕技術實踐&#xff0c;樂于分享實戰經驗與…

VScode - 我的常用插件01 - 主題插件Noctis

導言 Noctis 是一款為 Visual Studio Code 提供的主題插件&#xff0c;主打高對比度、護眼、美觀。它有多種配色風格&#xff0c;適合不同的開發者審美和工作場景。 一、安裝Noctis 二、設置顏色主題 三、測試主題 如上所示&#xff0c;有11種主題背景可以選擇。這里&#xff…

【IQA技術專題】圖像質量評價IQA技術和應用綜述(萬字長文!!)

專題介紹 圖像質量評價&#xff08;Image Quality Assessment, IQA&#xff09;是圖像處理、計算機視覺和多媒體通信等領域的關鍵技術之一。IQA不僅被用于學術研究&#xff0c;更在影像相關行業內實現了完整的商業化應用&#xff0c;涉及影視、智能手機、專業相機、安防監控、…

突然虛擬機磁盤只剩下幾十K

第一步&#xff1a;查找哪些文件大于 100M find / -size 100M 第二步&#xff1a;刪除掉無用的 log 發現&#xff0c;磁盤剩余空間并沒有變大 假如一個文件正在被使用&#xff0c;你刪除之后也是不會釋放存儲空間的。需要關閉相應的服務才能釋放。

黑馬教程強化day2-1

目錄 一、Set集合1.Set集合特點2.Set集合分類3.hashSet底層原理&#xff1a;(基于哈希表存儲數據的&#xff09;代碼演示 5.hashSet集合元素的去重操作&#xff08;有些情況搞不動&#xff09;代碼演示 6.LinkedHashSet的底層原理&#xff08;不常用&#xff0c;所以沒有代碼演…

【實習總結】C++ 通過pugi::xml庫對xml文件進行操作

目錄 相關背景 pugi::xml簡概 將配置信息寫入xml文件 讀取xml文件中的配置信息 相關背景 當我們需要將某些配置信息寫入項目目錄下的xml文件&#xff0c;或者再程序啟動時&#xff0c;加載項目下已有的的配置信息&#xff08;.xml&#xff09;&#xff0c;此時&#xff0c;我…

Linux文件回收機制:安全刪除文件不怕誤刪

Linux文件回收機制&#xff1a;安全刪除文件不怕誤刪 文章目錄 Linux文件回收機制&#xff1a;安全刪除文件不怕誤刪一、Linux默認沒有“回收站”&#xff1f;二、打造你自己的Linux回收站1. 建立回收站目錄2. 創建軟刪除命令remove3. 定時清理回收站4. 替換rm命令5. 完整腳本 …

數據結構排序

目錄 1、插入排序 2、希爾排序 3、堆排序 4、直接選擇排序 5、快排 6、歸并排序 補&#xff1a;計數排序 1、插入排序 void InsertSort(int* arr, int n) {int i 0;for (int i 0; i 1 < n; i){int end i;int tmp arr[end 1];while (end > 0){if (arr[end] &…

Spring聲明式事務生效是有條件滴!

在日常工作中&#xff0c;經常使用Transactional 注解進行事務的聲明&#xff0c;但如果發現事務未生效&#xff0c;可以從下面幾個方面進行排查。 常見失效場景總結 場景原因解決方案內部方法調用繞過了Spring代理注入自身或使用AopContextprivate方法AOP無法增強改為public方…

Code Composer Studio快捷鍵

文本編輯 編輯、查找、替換功能快捷鍵 功能快捷鍵撤銷CutZ重做CutY剪切CtrlX復制CtrlC粘貼CtrlV刪除Delete全選CtrlA代碼塊選中AltShiftA查找、替換Ctrl F查找下一個匹配的字符串CtrlK查找上一個匹配的字符串CtrlShiftK查看接口注釋&#xff08;文檔&#xff09;F2查看函數幫…

從認識AI開始-----生成對抗網絡(GAN):通過博弈機制,引導生成

前言 生成對抗網絡&#xff08;GAN&#xff09;是lan J. Goodfellow團隊在2014年提出的生成架構&#xff0c; 該架構自誕生起&#xff0c;就產生了很多的話題&#xff0c;更是被稱為生成對抗網絡是“新世紀以來機器學習領域內最有趣的想法”。如今&#xff0c;基于生成對抗網絡…

限流算法java實現

參考教程&#xff1a;2小時吃透4種分布式限流算法 1.計數器限流 public class CounterLimiter {// 開始時間private static long startTime System.currentTimeMillis();// 時間間隔&#xff0c;單位為msprivate long interval 1000L;// 限制訪問次數private int limitCount…

Maven 構建性能優化深度剖析:原理、策略與實踐

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

JS手寫代碼篇---手寫深拷貝

17、深拷貝 深拷貝與淺拷貝最大的不同就是對象的屬性是嵌套對象&#xff0c;會新建一個對象 步驟&#xff1a; 判斷是否為對象判斷是否為i數組或者對象&#xff0c;給新的有個容器遍歷循環&#xff0c;如果是對象要遍歷循環&#xff0c;采用遞歸 function deepCopy(obj){// …

【react實戰】如何實現監聽窗口大小變化

在日常開發場景中&#xff0c;監聽窗口變化是一個比較常見又很重要的業務功能&#xff0c;其實實現起來也很簡單&#xff0c;今天就來記錄一下具體的實現以及注意事項。 實現思路 在 React 中&#xff0c;可以通過監聽 window 的 resize 事件來檢測可視區域&#xff08;viewp…