ELK搭建(十):搭建redis執行指標監控平臺
持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第5天,點選檢視活動詳情
0. 引言
Redis作為基於記憶體的非關係型資料庫,常常被應用於熱點資料快取,它很大程度上為我們關係性資料庫提供了效能補充。保證redis的高可用,對應整個應用程式的執行至關重要,一個直觀的監控redis執行情況的資料看板可以為我們實時瞭解redis執行情況提供極大的便利。
話不多說,開始我們今天的監控平臺搭建之旅吧
1. 下載
我們的平臺是基於elasticsearch+kibana來實現的,也就是我們常說的ELK體系。我們採用Metricbeat外掛來採集監控redis的執行資料。
當然我們這裡為了保證搭建的便捷性,並沒有使用到Logstash,如果大家有需要的話可以把Metricbeat採集到的資料輸出到Logstash
首先關於ELK的搭建就不再累述了,不清楚的同學可以看看往期部落格: ELK搭建(一):實現分散式微服務日誌監控
因為我的ELK環境是7.13.0的,所以我們需要下載對應版本、對應系統的Metricbeat
Metricbeat官方下載地址
2. Metricbeat介紹
metricbeat是elstic官方推出的一款輕量型的採集器,屬於beats系列中專門用於各種系統和服務統計的beat。不僅可以統計docker等資料,也可以統計redis、nginx、伺服器cpu、記憶體、磁碟等服務的相關指標。
metricbeat定時從伺服器中通過抓包的方式獲取對應指標資料,然後傳送到elasticsearch或者logstash中
metricbeat由兩個部分組成:
- 1、module
所謂module就是針對不同的服務進行採集的模組,比如系統服務就是system module。metricbeat中支援的module有幾十種,包括但不僅限於:ActiveMQ module,Apache module,Docker module,HTTP module等,具體可以metricbeat官方文件中的modules部分檢視
- 2、metricset
採集的內容,以redis module為例,支援三種指標集:
(1)info:通過redis info指令來查詢redis的相關執行資料,包括但不僅限於伺服器執行的環境引數、客戶端相關資訊、 伺服器執行記憶體統計資料、持久化資訊、 通用資料統計、主從複製相關資訊、CPU使用情況
(2)key:redis key相關指標
(3)keyspace:redis keyspace相關指標資訊,也是通過info指令獲取。要使用這個指標集的話需要提前在redis中開啟鍵空間通知keyspace,但這個會額外消耗記憶體,還是那句話:Use it when you really need
更多關於指標集的介紹可以檢視官方文件
3. 安裝Metricbeat
1、將安裝包上傳到伺服器上,可以使用FTP軟體或者以下指令上傳
scp metricbeat-7.13.0-linux-arm64.tar.gz [email protected]:/var/local
2、解壓壓縮包
tar -zxvf metricbeat-7.13.0-linux-arm64.tar.gz
3、修改配置檔案metricbeat.yml中的連線資訊
vim metricbeat.yml
修改內容
```
setup.template.settings:
因為我這裡es是單節點,所以設定主分片數為1,副本分片數為0.否則會報黃
index.number_of_shards: 1 index.number_of_replicas: 0 output.elasticsearch:
你的es所在伺服器ip
hosts: ["192.168.244.11:9200"] username: "elastic" password: "elastic" setup.kibana:
kibana所在伺服器ip
host: "192.168.244.11:5601"
4、啟動docker模組,metricbeat會根據modules.d/docker.yml中的配置項來獲取系統資料
./metricbeat modules enable redis
5、配置要採集的內容,修改modules.d/redis.yml配置檔案
vim modules.d/redis.yml
```
配置檔案內容,這裡我們將info,keyspace指標集都開啟,具體可根據自己的需要進行配置
這裡我們沒有開啟key指標集,我們將在最後單獨講解 ``` - module: redis metricsets: - info - keyspace
- key
period: 10s
# Redis hosts hosts: ["127.0.0.1:6379"]
# Network type to be used for redis connection. Default: tcp #network: tcp
# Max number of concurrent connections. Default: 10 #maxconn: 10
# Redis AUTH password. Empty by default. #password: foobared ```
6、載入kibana儀表盤,如果之前已經設定過就不用再執行了
./metricbeat setup
7、啟動metricbeat(如果上述的指令沒有自動退出的話,就新開個視窗執行,不要退出上述指令視窗)
./metricbeat -e
8、在kibana的discover
視窗中查詢metricbeat-*
索引模式,能夠查詢到redis相關欄位資料表明配置成功
9、kibana中點選Dashboard,進入儀表盤,輸入redis
,選擇Overview ECS
看板點選進入
10、右上角的資料預設是過去1小時,如果查詢沒有資料的話,調整下時間範圍
這裡keyspaces看板沒有資料,是因為我們redis中沒有開啟keyspace,這個我們會在後面開啟給大家演示。
4. key指標集
key指標集是redis鍵相關的指標,要開啟這個指標集的話,需要我們額外配置鍵的匹配模式,如下所示,我們開啟了監聽user_
開頭的key。limit限制了監聽20個key
- module: redis
metricsets:
- key
key.patterns:
- pattern: 'user_*'
limit: 20
重啟metricbeat,我們再新增、修改、刪除幾條user_*
key,增加一些資料
key指標集使用了一個單獨的資料看板,進入dashboard,輸入redis
,進入Keys ECS
可以檢視到key相關的資料
5. redis開啟keyspace通知
登陸redis
redis-cli
執行指令,如下設定會監聽所有的鍵,這裡僅作測試,具體大家根據自己的需求來設定
config set notify-keyspace-events KEA
監聽所有鍵
psubscribe '__key*__:*'
在另外一個視窗登陸redis,新增一個鍵值
set user_test 111
會發現之前的視窗輸出了新增的鍵
開啟完成後,再次檢視看板,會發現keysapces中已經有資料了(注意,如果僅僅是開啟訂閱,而沒有新增key進去,也不會產生資料)
至此,我們針對redis的指標監控就全部結束了,動手操作試試吧
- ELK搭建(十):搭建redis執行指標監控平臺
- springcloud:解決阿里雲OSS檔案訪問跨域問題
- java:CopyOnWriteArrayList的迭代器支援fast-fail嗎 Concurrent包的迭代器支援fast-fail嗎
- Elastic實戰:spring-data-elasticsearch聚合查詢指南
- springcloud進階:四種分散式事務模式之XA模式(四)
- springcloud進階:四種分散式事務模式之SAGA模式(三)
- BUG除錯:maven install報錯:程式包xxx不存在
- 解決mac m1環境下centos虛擬機器無法連線網路
- 好用的IDEA外掛推薦,提升你的開發效率