Redis 監(jiān)控器快速入門,配置簡單,通過 --test 命令可測試配置。
Redis 監(jiān)控概述
Redis 的監(jiān)控和 MySQL、MongoDB 等數(shù)據(jù)庫的監(jiān)控類似,采集器 agent(比如 Categraf、Redis Exporter) 作為 client 連到 Redis 實例上,執(zhí)行一些命令獲取監(jiān)控數(shù)據(jù),比如連到 Redis 上執(zhí)行 info 命令。
Categraf 監(jiān)控 Redis 快速入門
Categraf 內(nèi)置各類監(jiān)控插件,也內(nèi)置了 Redis 的監(jiān)控插件,其配置文件在 Categraf 的 conf/input.redis/redis.toml,下面是一個極簡配置內(nèi)容:
[[instances]]
address = "127.0.0.1:6379"
上例配置極為簡單,就是給出了 Redis 實例的連接地址(前提是 Redis 沒有設(shè)置認證信息)。然后通過 Categraf 的 --test 命令可以測試配置是否正確:
./categraf --test --inputs redis
結(jié)果輸出如下:
ulric@ulric-flashcat categraf % ./categraf.mac --test --inputs redis
2024/11/22 08:27:11 main.go:149: I! runner.binarydir: /Users/ulric/works/gopath/src/categraf
2024/11/22 08:27:11 main.go:150: I! runner.hostname: ulric-flashcat.local
2024/11/22 08:27:11 main.go:151: I! runner.fd_limits: (soft=61440, hard=unlimited)
2024/11/22 08:27:11 main.go:152: I! runner.vm_limits: (soft=unlimited, hard=unlimited)
...
1732235231 08:27:11 redis_ping_use_seconds address=127.0.0.1:6379 agent_hostname=mac-ulric-flashcat region=ulric 0.007866
1732235231 08:27:11 redis_up address=127.0.0.1:6379 agent_hostname=mac-ulric-flashcat region=ulric 1
1732235231 08:27:11 redis_cmdstat_calls address=127.0.0.1:6379 agent_hostname=mac-ulric-flashcat command=del region=ulric replica_role=master 2
...
篇幅所限,上面只貼了 3 個指標,實際會采集更多指標。只要看到超過 3 個指標輸出,就說明 Redis 監(jiān)控配置正確。
在夜鶯里查看儀表盤
菜單入口:集成中心-模板中心-搜索Redis-儀表盤,可以看到夜鶯(我所用的版本是 7.7.1)內(nèi)置了 Redis 的儀表盤,可以直接使用。
上圖是 "Redis by address" 的儀表盤效果。當然了,我們不推薦你直接查看內(nèi)置儀表盤,因為有些儀表盤只能導(dǎo)入到自己的業(yè)務(wù)組下才能查看。而且內(nèi)置儀表盤通常不方便修改,把內(nèi)置儀表盤導(dǎo)入自己的業(yè)務(wù)組下,然后您可以根據(jù)自己的需求,隨意修改。
Redis 兩種采集方式
和 MySQL 類似,Redis 也有兩種采集方式。一種是使用一個 Categraf 采集所有的 Redis,一對多的方式。另一種是每個 Categraf 只負責(zé)自己所在機器上的 Redis,一對一的方式。
一對多的方式
此方式尤其適合采集云上 Redis,因為云上 Redis 所在的宿主我們無法直接部署 Categraf。但是此種方式受網(wǎng)絡(luò)影響較大。此種方式下,redis.toml 里配置很多 Redis 實例的目標地址,其目標地址肯定是不同的,所以在儀表盤里可以通過 address 來區(qū)分不同的 Redis 實例。
一對一的方式
Categraf 只負責(zé)本地 Redis 的采集,此種方式受網(wǎng)絡(luò)影響較小。此種方式下,redis.toml 里通常配置的是 127.0.0.1:6379,所以通過 address 標簽無法區(qū)分不同的 Redis 實例。此時有兩個辦法來區(qū)分不同的 Redis 實例:
使用 ident 標簽,即要查看 Redis 數(shù)據(jù)的時候,先找到對應(yīng)的宿主機器,再查看該機器上的 Redis 實例
使用 instance 標簽,需要在 redis.toml 里手工配置上 instance 標簽,比如 instance = "my-redis",然后在儀表盤里通過 instance 來區(qū)分不同的 Redis 實例。
[[instances]]
address = "127.0.0.1:6379"
labels = { instance="n9e-redis" }
如何配置采集多個 Redis 實例
一對多的方式,顯然是需要在 redis.toml 中配置多個 Redis 實例的目標地址。一對一的方式,有時也需要配置多個,因為在大內(nèi)存的機器上,可能會有多個 Redis 實例。配置方式也簡單,就是把 [[instances]] 配置段復(fù)制多份即可。
[[instances]]
address = "127.0.0.1:6379"
labels = { instance="n9e-redis-01" }
[[instances]]
address = "127.0.0.1:6380"
labels = { instance="n9e-redis-02" }
Redis 集群監(jiān)控
Redis 集群監(jiān)控,本質(zhì)上還是監(jiān)控每個 Redis 實例。只是 Redis 集群的每個實例有一定的邏輯屬性,都屬于某個集群,所以在監(jiān)控時,可以通過 cluster 標簽來區(qū)分不同的 Redis 集群。
[[instances]]
address = "127.0.0.1:6379"
labels = { instance="n9e-redis-01", cluster="n9e" }
[[instances]]
address = "127.0.0.1:6380"
labels = { instance="n9e-redis-02", cluster="n9e" }
上例配置了兩個 Redis 實例,都屬于 n9e 集群。在儀表盤里,可以通過 cluster 標簽來區(qū)分不同的 Redis 集群。夜鶯里還沒有內(nèi)置按照 cluster 標簽來區(qū)分 Redis 集群的儀表盤,需要自己創(chuàng)建。
Redis 插件配置詳解
下面我們把 Categraf 的 Redis 采集插件的整個配置文件貼到下面,方便大家查閱:
## 采集頻率,單位是秒
# interval = 15
## Redis 實例配置,直到出現(xiàn)下一個 [[instances]] 為止
## 如果沒有下一個 [[instances]],則到文件末尾為止
[[instances]]
## Redis 實例地址
address = "127.0.0.1:6379"
## Redis 實例認證信息
# username = ""
# password = ""
## Categraf 采集 Redis 時的 client 的連接池大小
# pool_size = 2
## 是否開啟slowlog 收集,因為 slowlog 中的 cmd 指令會放到標簽中,這無疑會大幅增加 time series 的數(shù)量
## 而且這些 time series 具備極高的流失率,對時序庫的性能會造成影響,所以開啟此功能要慎重
# gather_slowlog = true
## 最多收集少條slowlog
# slowlog_max_len = 100
## 收集距離現(xiàn)在多少秒以內(nèi)的slowlog
## 注意插件的采集周期,該參數(shù)不要小于采集周期,否則會有slowlog查不到
# slowlog_time_window=30
## slowlog 收集到的指標樣例,cmd 標簽中的值是 slowlog 中的命令
## redis_slow_log{ident=dev-01 client_addr=127.0.0.1:56364 client_name= cmd="info ALL" log_id=983} 74 (單位微秒)
## 自定義命令收集,根據(jù)用戶指定的命令收集指標,命令執(zhí)行結(jié)果需要時數(shù)字,或可以轉(zhuǎn)換為數(shù)字的字符串
## 因為在 Prometheus 生態(tài)里,指標值必須是數(shù)字。指標名字由用戶自定義,通過下面的 metric 字段指定
# commands = [
# {command = ["get", "sample-key1"], metric = "custom_metric_name1"},
# {command = ["get", "sample-key2"], metric = "custom_metric_name2"}
# ]
## 采集頻率的倍數(shù),即最終采集頻率是 interval * interval_times
# interval_times = 1
## 自定義標簽。這里的標簽會附加到采集到的所有指標上
# labels = { instance="n9e-10.2.3.4:6379" }
## TLS 相關(guān)配置
## use_tls 設(shè)置為 true 時,下面的其他配置才生效
# use_tls = false
# tls_min_version = "1.2"
# tls_ca = "/etc/categraf/ca.pem"
# tls_cert = "/etc/categraf/cert.pem"
# tls_key = "/etc/categraf/key.pem"
## Use TLS but skip chain & host verification
# insecure_skip_verify = true
總結(jié)
本文講解了 Redis 監(jiān)控插件的配置,對于有 Redis 監(jiān)控、Redis 集群監(jiān)控需求的朋友,希望上面的內(nèi)容可以幫到您。
原文來源:https://mp.weixin.qq.com/s/UkxilifFtd8Sza94LmGJzA
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號-3技術(shù)支持:南京博盛藍睿網(wǎng)絡(luò)科技有限公司
南京思必達教育科技有限公司版權(quán)所有 百度統(tǒng)計