日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

簡(jiǎn)述

上篇文章介紹了如何搭建 prometheus 監(jiān)控體系,監(jiān)控 linux 服務(wù)器,這篇文章跟大家介紹如何監(jiān)控 redis,以及我們要關(guān)注的指標(biāo)都有哪些

監(jiān)控 redis 需要關(guān)注什么指標(biāo)

在《聊聊監(jiān)控》這篇文章,介紹了 google 提出的監(jiān)控四個(gè)黃金指標(biāo)(沒(méi)看過(guò)的朋友可以看看這篇文章),下面我們就分別通過(guò)延遲流量錯(cuò)誤飽和度四方面,來(lái)看看對(duì)應(yīng)到 redis 中,我們要監(jiān)控哪些數(shù)據(jù)指標(biāo)(metrics)

延遲

redis-cli 提供了--latency命令,可以很方面的讓我們獲取到 redis 執(zhí)行命令的延遲,其原理是用 redis-cli 連接到 redis-server 上,然后不斷發(fā)送ping命令,統(tǒng)計(jì)ping命令的耗時(shí)

> redis-cli --latency -h 127.0.0.1 -p 6379
min: 0, max: 1, avg: 0.13 (412 samples)

可以看到這里的延遲是0.13ms,因?yàn)槲沂窃?redis-server 所在機(jī)器執(zhí)行的--latency命令,下面看看我在另外一臺(tái)機(jī)器執(zhí)行--latnecy命令的結(jié)果

> redis-cli -h 192.168.57.140 -p 6379 --latency
min: 0, max: 3, avg: 1.21 (199 samples)

可以看到,現(xiàn)在的延遲為1.21ms,證明有大概1.08ms花費(fèi)在了網(wǎng)絡(luò) I/O 上

到這里可能有些人會(huì)說(shuō),ping 命令很簡(jiǎn)單,是不是不能反饋出真實(shí)的命令執(zhí)行延遲呢?其實(shí),我們都知道,redis 是單線程模型的,如果有一條命令執(zhí)行的慢,那么其后面的命令都得等著,所以我們是可以使用 ping 命令的執(zhí)行耗時(shí)來(lái)作為 redis 命令執(zhí)行耗時(shí)的指標(biāo)的

--latency命令只能知道 redis 在什么時(shí)間點(diǎn)延遲比較高,并不知道延遲高是什么原因造成的,或者說(shuō)不知道是哪條命令執(zhí)行比較耗時(shí),導(dǎo)致 redis 延遲高。跟 MySQL 一樣,redis 也提供了慢查詢的功能,使用slowlog get [count]可以查看最近執(zhí)行的慢查詢命令(慢查詢時(shí)間通過(guò)slowlog-log-slower-than配置指定)

127.0.0.1:6379> SLOWLOG get 1
1) 1) (integer) 47
   2) (integer) 1668743666
   3) (integer) 13168
   4) 1) "hset"
      2) "/idents/Default"
      3) "tt-fc-dev01.nj"
      4) "1668743666"
   5) "127.0.0.1:43172"
   6) ""

流量

在 redis 的流量監(jiān)控中,我們一般關(guān)注的是 redis 每秒的請(qǐng)求數(shù)(即執(zhí)行了多少次操作)、每秒接受跟返回的數(shù)據(jù)量。這些指標(biāo)在都可以通過(guò)info all命令獲取

> redis-cli -h 127.0.0.1 -p 6379 info all | grep instantaneous
instantaneous_ops_per_sec:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
  • instantaneous_ops_per_sec: 每秒執(zhí)行了多少次操作
  • instantaneous_input_kbps: 每秒接受多少 KiB 的數(shù)據(jù)
  • instantaneous_output_kbps: 每秒返回多少 KiB 的數(shù)據(jù)

如果將 redis 作為緩存使用的話,還要關(guān)注緩存的命中率,同樣的,可以使用info all命令查詢

> redis-cli -h 127.0.0.1 -p 6379 info all | grep keyspace
keyspace_hits:0
keyspace_misses:1
  • keyspace_hits: 自 redis 啟動(dòng)以來(lái),查詢命令的命中數(shù)量
  • keyspace_misses: 自 redis 啟動(dòng)以來(lái),未命中的數(shù)量

有了這兩個(gè)指標(biāo),就可以通過(guò)keyspace_hits / (keyspace_hits + keyspace_misses)計(jì)算出緩存的命中率

錯(cuò)誤

因?yàn)?redis 都是內(nèi)存操作,基本不會(huì)出現(xiàn)什么錯(cuò)誤,有錯(cuò)誤的話一般是命令寫(xiě)錯(cuò)導(dǎo)致的,這一般在開(kāi)發(fā)的時(shí)候就解決了,所以不用對(duì)錯(cuò)誤做什么特殊的監(jiān)控

飽和度

飽和度指的是 redis 有多“滿”,在 redis 中有兩個(gè)數(shù)據(jù)可以反映出 redis 究竟有多“滿”,一個(gè)是內(nèi)存使用率,另外一個(gè)是內(nèi)存的碎片率

內(nèi)存使用率可以通過(guò)info memory命令查看

> info memory 
# Memory
used_memory:1227384
used_memory_human:1.17M
used_memory_rss:4308992
used_memory_rss_human:4.11M
...
maxmemory:134217728
maxmemory_human:128.00M
...
mem_fragmentation_ratio:3.51
...
  • used_memory: 使用了多少內(nèi)存
  • used_memory_rss: 操作系統(tǒng)分配了多少內(nèi)存給 redis
  • mem_fragmentation_ratio: 即內(nèi)存碎片率,根據(jù)use_memory_rss/use_memory計(jì)算得出,正常來(lái)講,操作系統(tǒng)在分配內(nèi)存的時(shí)候,有最小分配單位的限制(不同操作系統(tǒng)不一樣,有 8byte、16byte 等),所以內(nèi)存碎片率稍大于 1 是正常的,如果內(nèi)存碎片率過(guò)高,可能就需要考慮對(duì)內(nèi)存碎片進(jìn)行清理了

redis-exporter 安裝使用

redis 本身不通過(guò) prometheus 協(xié)議暴露自身的各種數(shù)據(jù)指標(biāo),與node-exporter一樣,我們可以運(yùn)行通過(guò)redis-exporter,將 redis 的指標(biāo)暴露給 pormetheus

redis-exporter下載地址:https://Github.com/oliver006/redis_exporter/releases,目前最新的版本是 1.52.0

$ wget https://github.com/oliver006/redis_exporter/releases/download/v1.52.0/redis_exporter-v1.52.0.linux-amd64.tar.gz
$ tar -zxvf redis_exporter-v1.52.0.linux-amd64.tar.gz
$ mv redis_exporter-v1.52.0
$ cd redis_exporter-v1.52.0
$ ./redis_exporter &

redis-exporter暴露的端口是9121,可以通過(guò)訪問(wèn) 9121 查看采集的所有指標(biāo)圖片

prometheus 配置

在 prometheus 配置文件中加入如下配置

- job_name: 'redis-exporter'
    static_configs:
      - targets: ['localhost:9121']

向 prometheus 發(fā)送 HUP 信號(hào),讓 prometheus 重新讀取配置文件

$ kill -HUP `pidof prometheus`

prometheus 與 grafana 的安裝,在我上篇文章有講,還不清楚怎么搭建的同學(xué)可以翻閱我上篇文章——《如何搭建 Linux 服務(wù)器監(jiān)控系統(tǒng)》

grafana 配置

redis 控制面板,我這里用的是11835這個(gè)面板,一樣通過(guò) dashboard ID 的方式導(dǎo)入圖片

監(jiān)控面板如下圖片

可以看到,面板除了展示了我們上面所講到的指標(biāo)外(如內(nèi)存使用率、緩存命中數(shù)等),還展示了客戶端連接數(shù)、redis 正常運(yùn)行時(shí)間等

另外需要注意的是:如果你像下面一樣不展示內(nèi)存使用率的話

圖片

可能是讀取不到redis_memory_max_bytes指標(biāo),那是因?yàn)闆](méi)配置 redis 的最大內(nèi)存,可以在 redis 配置文件中添加maxmemory配置,或者使用config rewrite命令進(jìn)行修改

127.0.0.1:6379> config set maxmemory 128mb
OK
127.0.0.1:6379> config rewrite
8110:M 07 Aug 2023 09:21:53.983 # CONFIG REWRITE executed with success.
OK

總結(jié)

本篇文章講了 redis 監(jiān)控需要關(guān)注的指標(biāo)。并通過(guò)redis-exporter的方式,將 redis 的監(jiān)控納入到 prometheus 體系中來(lái),如果覺(jué)得我的文章對(duì)你有幫助的話,可以點(diǎn)個(gè)關(guān)注或者在看哦,你的支持是我寫(xiě)作的動(dòng)力

分享到:
標(biāo)簽:Redis
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定