監控最佳實踐--redis及業務接口

簡介:監控最佳實踐--redis及業務接口

095b6ee08e914421a6b48f53f8daf0b71.png

1. 背景

1.1 問題

2020-12-04,客戶側redis集羣版監控DB0 CPU突增至100%,致使數據庫沒法正常服務,經排查客戶側業務上存在2M左右的大key致使DB0阻塞。而且客戶側使用的集羣鏈接方式爲默認proxy模式,以下圖所示,DB0阻塞致使其餘節點也沒法正常服務;處理辦法:客戶側配合切斷大key業務的高頻繁次調用,請求恢復。html

1.jpg
圖1:proxy模式node

1.2 思考

這次問題致使客戶側課程報名入口嚴重受損,進而引起深度思考。在使用redis等產品方面的監控報警手段不夠完善,不夠仔細,而且後續再查看業務日誌發現錯誤率已經逐漸增多,直至redis層面表現出來才get到問題所在。針對這次redis的大key問題,給客戶提供了關於大key以及熱點key的分析辦法,並建議完善客戶側監控報警的可讀性以及業務日誌接口的錯誤告警。redis

2. 數據庫監控分析

2.1 redis監控指標分享

redis集羣版雲監控指標以下表所示。數據庫

監控項 單位 MetricName Dimensions Statistics
平均響應時間 us ShardingAvgRt userId、instanceId、nodeId Average、Maximum
鏈接數使用率 % ShardingConnectionUsage userId、instanceId、nodeId Average、Maximum
CPU使用率 % ShardingCpuUsage userId、instanceId、nodeId Average、Maximum
命中率 % ShardingHitRate userId、instanceId、nodeId Average、Maximum
入方向流量 KByte/s ShardingIntranetIn userId、instanceId、nodeId Average、Maximum
流入帶寬使用率 % ShardingIntranetInRatio userId、instanceId、nodeId Average、Maximum
出方向流量 KByte/s ShardingIntranetOut userId、instanceId、nodeId Average、Maximum
流出帶寬使用率 % ShardingIntranetOutRatio userId、instanceId、nodeId Average、Maximum
緩存內Key數量 ShardingKeys userId、instanceId、nodeId Average、Maximum
最大響應時間 us ShardingMaxRt userId、instanceId、nodeId Average、Maximum
內存使用率 % ShardingMemoryUsage userId、instanceId、nodeId Average、Maximum
QPS使用率 % ShardingQPSUsage userId、instanceId、nodeId Average、Maximum
已用鏈接數 ShardingUsedConnection userId、instanceId、nodeId Average、Maximum
內存使用量 Bytes ShardingUsedMemory userId、instanceId、nodeId Average、Maximum、Sum
平均每秒訪問次數 ShardingUsedQPS userId、instanceId、nodeId Average、Maximum

2.2 redis大key分析

1.在控制檯選擇對應的實例,進行大key及Hot key分析處理。json

2.jpg
圖2:實例分析緩存

2.利用API接口進行分析大 key以及Hot key。阿里雲

緩存分析與熱點Key查詢可參考文後資料瞭解詳情[1]。spa

2.3 數據庫同環比監控

建立分組報警規則目前已更新至分組界面。日誌

2.3.1 建立應用分組

3.jpg
圖3:建立應用分組htm

2.3.2 建立報警規則

4.jpg
圖4:建立報警規則

5.jpg
圖5:設置報警規則

3. 日誌監控

利用sls接入客戶端日誌,能夠經過設定規則創建儀表盤以及實現報警。此方案日誌接入採起logtail方式內網傳輸。

3.1 安裝logtail

安裝logtail方法可參考文後資料[2]。

3.2 建立project和logstore

登陸日誌服務控制檯,依次建立對應地域的project及logstore。

6.jpg
圖6:project-logstore建立

3.3 數據接入嚮導

這次客戶側日誌格式分別爲json、log4j。

3.3.1 json

選擇json文本日誌>選擇現有機器組>對應logtail配置

7.jpg
圖7:logtail配置

1.設置索引

對於多重json日誌,須要將字段類型更改成json。

8.jpg
圖8:設置索引

2.查詢分析

9.jpg
圖9:查詢分析

3.3.2 log4j

選擇正則文本日誌\>選擇現有機器組\>對應logtail配置
1.正則識別首行

10.jpg
圖10:設置自動生成

2.提取字段

11.jpg
圖11: 日誌提取字段

3.設置索引
注意:只對新寫入數據生效。

12.jpg
圖12:設置索引

4.查詢分析

13.jpg
圖13:查詢分析

3.4 日誌報警

3.4.1 儀表盤

14.jpg
圖14:儀表盤信息展現

3.4.2 報警

在儀表右上側導航欄中單擊告警,在下拉菜單中選擇建立。

15.jpg
圖15:建立告警

16.jpg
圖16:告警內容設置

關於釘釘機器人的告警內容可參考文後模板[3]進行設置。

參考文獻

[1] 緩存分析與熱點Key查詢:https://help.aliyun.com/document\_detail/184226.html?spm=a2c4g.11186623.6.975.255f3635R5By1i
[2] 安裝Logtail(Linux系統):https://help.aliyun.com/document\_detail/28982.html?spm=a2c4g.11186623.2.5.31a09d7cBfTtvl
[3] 釘釘機器人告警模板:https://help.aliyun.com/document\_detail/91785.html?spm=5176.2020520112.0.dexternal.62b334c0S2Jxx2

咱們是阿里雲智能全球技術服務-SRE團隊,咱們致力成爲一個以技術爲基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基於雲構建更加穩定可靠的業務系統,提高業務穩定性。咱們指望可以分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運行更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里雲SRE技術學院釘釘圈子,和更多雲上人交流關於雲平臺的那些事。

本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原做者全部,阿里雲開發者社區不擁有其著做權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。若是您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將馬上刪除涉嫌侵權內容。
相關文章
相關標籤/搜索