监控最佳实践--redis及业务接口
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集群版云監控指標如下表所示。
| 平均響應時間 | 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分析處理。
圖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技術學院釘釘圈子,和更多云上人交流關于云平臺的那些事。
原文鏈接:https://developer.aliyun.com/article/782542?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的监控最佳实践--redis及业务接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏打包过程枯燥且繁琐,如何提升打包效率
- 下一篇: 云通信产品运营带你玩转号码隐私保护