ELK搭建(十):搭建redis執行指標監控平臺

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 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的指標監控就全部結束了,動手操作試試吧