使用Grafana監(jiān)控Redis的操作方法
當(dāng)面對(duì)一個(gè)復(fù)雜的系統(tǒng)時(shí),我們往往需要監(jiān)控工具來幫助我們解決一些性能問題。比如之前我們使用
SpringBoot Admin來監(jiān)控應(yīng)用,從而獲取到SpringBoot Actuator暴露的指標(biāo)信息。今天給大家介紹一個(gè)功能強(qiáng)大的監(jiān)控工具Grafana,只要需要用到監(jiān)控的地方,用它做可視化就對(duì)了!
Grafana簡(jiǎn)介
Grafana是一款開源的數(shù)據(jù)可視化和分析工具,不管你的指標(biāo)信息存儲(chǔ)在哪里,你都可以用它來可視化這些數(shù)據(jù)。同時(shí)它還具有告警功能,當(dāng)指標(biāo)超出指定范圍時(shí)會(huì)提醒你。
Prometheus簡(jiǎn)介
Prometheus是一款時(shí)序數(shù)據(jù)庫(kù),可以簡(jiǎn)單理解為帶時(shí)間的MySQL數(shù)據(jù)庫(kù)。由于Grafana只能將數(shù)據(jù)轉(zhuǎn)換成可視化圖表,并沒有存儲(chǔ)功能,所以我們需要結(jié)合Prometheus這類時(shí)序數(shù)據(jù)庫(kù)一起使用。
安裝
使用Docker安裝Grafana和Prometheus無疑是最簡(jiǎn)單的,我們接下來將采用此種方式。
首先下載Grafana的Docker鏡像;
docker?pull?grafana/grafana
下載完成后運(yùn)行Grafana;
docker?run?-p?3000:3000?--name?grafana?\ -d?grafana/grafana
接下來下載Prometheus的Docker鏡像;
docker?pull?prom/prometheus
在
/mydata/prometheus/目錄下創(chuàng)建Prometheus的配置文件prometheus.yml:
global: ??scrape_interval:?5s
運(yùn)行Prometheus,把宿主機(jī)中的配置文件
prometheus.yml掛載到容器中去;
docker?run?-p?9090:9090?--name?prometheus?\ -v?/mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml?\ -d?prom/prometheus
至此安裝完成,是不是很簡(jiǎn)單!可以通過如下地址訪問Grafana,登錄賬號(hào)密碼為
admin:admin,訪問地址:http://192.168.5.78:3000/

登錄Grafana后顯示界面如下;

其實(shí)Prometheus也是有可視化界面的,就是有點(diǎn)簡(jiǎn)陋,訪問地址:http://192.168.5.78:9090/

使用
Grafana已經(jīng)安裝完后,是時(shí)候來波實(shí)踐了,接下來我們來介紹下使用Grafana來監(jiān)控Linux系統(tǒng)和SpringBoot應(yīng)用。
監(jiān)控系統(tǒng)信息
使用
node_explorer可以暴露Linux系統(tǒng)的指標(biāo)信息,然后Prometheus就可以通過定時(shí)掃描的方式獲取并存儲(chǔ)指標(biāo)信息了。
下載
node_explorer的安裝包,下載地址:https://prometheus.io/download/#node_exporter

這次我們直接把
node_explorer安裝到Linux服務(wù)器上(如果使用Docker容器安裝,監(jiān)控的會(huì)是Docker容器的指標(biāo)信息),將下載的安裝包解壓到指定目錄,并修改文件夾名稱:
cd?/mydata tar?-zxvf?node_exporter-1.1.2.linux-amd64.tar.gz mv?node_exporter-1.1.2.linux-amd64?node_exporter
進(jìn)入解壓目錄,使用如下命令運(yùn)行
node_explorer,服務(wù)將運(yùn)行在9100端口上;
cd?node_exporter ./node_exporter?>log.file?2>&1?&
使用
curl命令訪問獲取指標(biāo)信息接口,獲取到信息表示運(yùn)行成功;
curl?http://localhost:9100/metrics
#?HELP?promhttp_metric_handler_requests_in_flight?Current?number?of?scrapes?being?served.
#?TYPE?promhttp_metric_handler_requests_in_flight?gauge
promhttp_metric_handler_requests_in_flight?1
#?HELP?promhttp_metric_handler_requests_total?Total?number?of?scrapes?by?HTTP?status?code.
#?TYPE?promhttp_metric_handler_requests_total?counter
promhttp_metric_handler_requests_total{code="200"}?2175
promhttp_metric_handler_requests_total{code="500"}?0
promhttp_metric_handler_requests_total{code="503"}?0
接下來修改Prometheus的配置文件
prometheus.yml,創(chuàng)建一個(gè)任務(wù)定時(shí)掃描node_explorer暴露的指標(biāo)信息;
scrape_configs: ??-?job_name:?node ????static_configs: ????-?targets:?['192.168.5.78:9100']
重啟Prometheus容器,可以通過
加號(hào)->Dashboard來創(chuàng)建儀表盤;

當(dāng)然你還可以選擇去Grafana的儀表盤市場(chǎng)下載一個(gè)Dashboard,市場(chǎng)地址:https://grafana.com/grafana/dashboards

這里選擇了
Node Exporter Full這個(gè)儀表盤,記住它的ID,訪問地址:https://grafana.com/grafana/dashboards/1860

選擇導(dǎo)入Dashboard并輸入ID,最后點(diǎn)擊
Load即可;

選擇數(shù)據(jù)源為Prometheus,最后點(diǎn)擊
Import;

導(dǎo)入成功后就可以在Grafana中看到實(shí)時(shí)監(jiān)控信息了,是不是夠炫酷!

監(jiān)控SpringBoot應(yīng)用
監(jiān)控SpringBoot應(yīng)用需要依靠
actuator及micrometer,通過暴露actuator的端點(diǎn),Prometheus可以定時(shí)獲取并存儲(chǔ)指標(biāo)信息。
修改項(xiàng)目的
pom.xml文件,添加actuator及micrometer依賴;
<dependencies> ????<dependency> ????????<groupId>org.springframework.boot</groupId> ????????<artifactId>spring-boot-starter-actuator</artifactId> ????</dependency> ????<!--?集成micrometer,將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)到prometheus?--> ????<dependency> ????????<groupId>io.micrometer</groupId> ????????<artifactId>micrometer-registry-prometheus</artifactId> ????</dependency> </dependencies>
修改應(yīng)用配置文件
application.yml,通過actuator暴露監(jiān)控端口/actuator/prometheus;
management:
??endpoints:
????web:
??????exposure:
????????#?暴露端點(diǎn)`/actuator/prometheus`
????????include:?'prometheus'
??metrics:
????tags:
??????application:?${spring.application.name}
在監(jiān)控SpringBoot應(yīng)用之前,我們需要先運(yùn)行一個(gè)SpringBoot應(yīng)用,使用如下命令運(yùn)行即可;
docker?run?-p?8088:8088?--name?mall-tiny-grafana?\ -v?/etc/localtime:/etc/localtime?\ -v?/mydata/app/mall-tiny-grafana/logs:/var/logs?\ -e?TZ="Asia/Shanghai"?\ -d?mall-tiny/mall-tiny-grafana:1.0-SNAPSHOT
修改Prometheus的配置文件
prometheus.yml,創(chuàng)建一個(gè)任務(wù)定時(shí)掃描actuator暴露的指標(biāo)信息,這里需要注意下,由于SpringBoot應(yīng)用運(yùn)行在Docker容器中,需要使用docker inspect mall-tiny-grafana |grep IPAddress來獲取容器IP地址;
scrape_configs: ??#?采集任務(wù)名稱 ??-?job_name:?'mall-tiny-grafana' ????#?采集時(shí)間間隔 ????scrape_interval:?5s ????#?采集超時(shí)時(shí)間 ????scrape_timeout:?10s ????#?采集數(shù)據(jù)路徑 ????metrics_path:?'/actuator/prometheus' ????#?采集服務(wù)的地址 ????static_configs: ??????-?targets:?['172.17.0.5:8088']
我們可以通過Prometheus的可視化界面,來確定Prometheus是否能獲取到指標(biāo)信息;

同樣,我們可以從儀表盤市場(chǎng)導(dǎo)入儀表盤,訪問地址:https://grafana.com/grafana/dashboards/14370

導(dǎo)入成功后就可以在Grafana中看到SpringBoot實(shí)時(shí)監(jiān)控信息了,果然夠炫酷!

總結(jié)
通過對(duì)Grafana的一波實(shí)踐,我們可以發(fā)現(xiàn),使用Grafana來進(jìn)行數(shù)據(jù)可視化的過程是這樣的:首先我們得讓被監(jiān)控方將指標(biāo)信息暴露出來,然后用Prometheus定時(shí)獲取并存儲(chǔ)指標(biāo)信息,最后將Prometheus配置為Grafana的可視化數(shù)據(jù)源。
參考資料
Grafana官方文檔:https://grafana.com/docs/grafana/latest/getting-started/getting-started-prometheus/
node-exporter的使用:https://prometheus.io/docs/guides/node-exporter/
項(xiàng)目源碼地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-grafana
到此這篇關(guān)于使用Grafana監(jiān)控Redis的文章就介紹到這了,更多相關(guān)Grafana監(jiān)控Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
高并發(fā)下Redis精確計(jì)數(shù)與時(shí)間窗口過期的方法詳解
在實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)中,我們經(jīng)常需要統(tǒng)計(jì)某個(gè)事件在特定時(shí)間窗口內(nèi)的發(fā)生次數(shù),本文將詳細(xì)介紹如何基于 Redis 實(shí)現(xiàn)高性能、高可用的計(jì)數(shù)方案,需要的可以參考下2025-03-03
利用Redis實(shí)現(xiàn)訪問次數(shù)限流的方法詳解
這篇文章主要給大家介紹了關(guān)于如何利用Redis實(shí)現(xiàn)訪問次數(shù)限流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
redis執(zhí)行l(wèi)ua腳本的實(shí)現(xiàn)
本文主要介紹了redis執(zhí)行l(wèi)ua腳本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
redis requires ruby version2.2.2的解決方案
本文主要介紹了redis requires ruby version2.2.2的解決方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
使用Redis實(shí)現(xiàn)實(shí)時(shí)排行榜功能
排行榜功能是一個(gè)很普遍的需求。使用 Redis 中有序集合的特性來實(shí)現(xiàn)排行榜是又好又快的選擇。接下來通過本文給大家介紹使用Redis實(shí)現(xiàn)實(shí)時(shí)排行榜功能,需要的朋友可以參考下2021-07-07
Redis報(bào)錯(cuò)“NOAUTH Authentication required”兩種解決方案
Redis提供了一個(gè)命令行工具redis-cli,它允許你直接連接到Redis服務(wù)器,如果你知道Redis服務(wù)器的密碼,你可以在連接時(shí)直接提供它,本文給大家介紹連接了Redis報(bào)錯(cuò)“NOAUTH Authentication required”兩種解決方案2024-05-05
redis做websocket分布式消息推送服務(wù)的實(shí)現(xiàn)
本文介紹了使用Redis作為消息隊(duì)列實(shí)現(xiàn)WebSocket分布式消息推送服務(wù)的方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Redis 對(duì)過期數(shù)據(jù)的處理方法
這篇文章主要介紹了Redis 對(duì)過期數(shù)據(jù)的處理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
redis中token失效引發(fā)的一次生產(chǎn)事故
項(xiàng)目再測(cè)試的時(shí)候發(fā)現(xiàn)不定時(shí)token失效,本文主要介紹了redis中token失效引發(fā)的一次生產(chǎn)事故,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03

