1. 背景
1.1 問題
2020-12-04,客戶側redis叢集版監控DB0 CPU突增至100%,導緻資料庫無法正常服務,經排查客戶側業務上存在2M左右的大key導緻DB0阻塞。并且客戶側使用的叢集連接配接方式為預設proxy模式,如下圖所示,DB0阻塞導緻其他節點也無法正常服務;處理辦法:客戶側配合切斷大key業務的高頻繁次調用,請求恢複。
圖1:proxy模式
1.2 思考
此次問題導緻客戶側課程報名入口嚴重受損,進而引發深度思考。在使用redis等産品方面的監控報警手段不夠完善,不夠仔細,并且後續再檢視業務日志發現錯誤率已經逐漸增多,直至redis層面表現出來才get到問題所在。針對此次redis的大key問題,給客戶提供了關于大key以及熱點key的分析辦法,并建議完善客戶側監控報警的可讀性以及業務日志接口的錯誤告警。
2. 資料庫監控分析
2.1 redis監控名額分享
redis叢集版雲監控名額如下表所示。
監控項 | 機關 | MetricName | Dimensions | Statistics |
---|---|---|---|---|
平均響應時間 | us | ShardingAvgRt | userId、instanceId、nodeId | Average、Maximum |
連接配接數使用率 | % | ShardingConnectionUsage | ||
CPU使用率 | ShardingCpuUsage | |||
命中率 | ShardingHitRate | |||
入方向流量 | KByte/s | ShardingIntranetIn | ||
流入帶寬使用率 | ShardingIntranetInRatio | |||
出方向流量 | ShardingIntranetOut | |||
流出帶寬使用率 | ShardingIntranetOutRatio | |||
緩存内Key數量 | 個 | ShardingKeys | ||
最大響應時間 | ShardingMaxRt | |||
記憶體使用率 | ShardingMemoryUsage | |||
QPS使用率 | ShardingQPSUsage | |||
已用連接配接數 | ShardingUsedConnection | |||
記憶體使用量 | Bytes | ShardingUsedMemory | Average、Maximum、Sum | |
平均每秒通路次數 | ShardingUsedQPS |
2.2 redis大key分析
1.在控制台選擇對應的執行個體,進行大key及Hot key分析處理。
圖2:執行個體分析
2.利用API接口進行分析大 key以及Hot key。
緩存分析與熱點Key查詢可參考文後資料了解詳情[1]。
2.3 資料庫同環比監控
建立分組報警規則目前已更新至分組界面。
2.3.1 建立應用分組
圖3:建立應用分組
2.3.2 建立報警規則
圖4:建立報警規則
圖5:設定報警規則
3. 日志監控
利用sls接入用戶端日志,可以通過設定規則建立儀表盤以及實作報警。此方案日志接入采取logtail方式内網傳輸。
3.1 安裝logtail
安裝logtail方法可參考文後資料[2]。
3.2 建立project和logstore
登入日志服務控制台,依次建立對應地域的project及logstore。
圖6:project-logstore建立
3.3 資料接入向導
此次客戶側日志格式分别為json、log4j。
3.3.1 json
選擇json文本日志>選擇現有機器組>對應logtail配置
圖7:logtail配置
1.設定索引
對于多重json日志,需要将字段類型更改為json。
圖8:設定索引
2.查詢分析
圖9:查詢分析
3.3.2 log4j
選擇正則文本日志>選擇現有機器組>對應logtail配置
1.正則識别首行
圖10:設定自動生成
2.提取字段
圖11: 日志提取字段
3.設定索引
注意:隻對新寫入資料生效。
圖12:設定索引
4.查詢分析
圖13:查詢分析
3.4 日志報警
3.4.1 儀表盤
圖14:儀表盤資訊展示
3.4.2 報警
在儀表右上側導航欄中單擊告警,在下拉菜單中選擇建立。
圖15:建立告警
圖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技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。