2020-12-04,客户侧redis集群版监控DB0 CPU突增至100%,导致数据库无法正常服务,经排查客户侧业务上存在2M左右的大key导致DB0阻塞。并且客户侧使用的集群连接方式为默认proxy模式,如下图所示,DB0阻塞导致其他节点也无法正常服务;处理办法:客户侧配合切断大key业务的高频繁次调用,请求恢复。
图1:proxy模式
此次问题导致客户侧课程报名入口严重受损,进而引发深度思考。在使用redis等产品方面的监控报警手段不够完善,不够仔细,并且后续再查看业务日志发现错误率已经逐渐增多,直至redis层面表现出来才get到问题所在。针对此次redis的大key问题,给客户提供了关于大key以及热点key的分析办法,并建议完善客户侧监控报警的可读性以及业务日志接口的错误告警。
2. 数据库监控分析 2.1 redis监控指标分享redis集群版云监控指标如下表所示。
监控项单位MetricNameDimensionsStatistics平均响应时间usShardingAvgRtuserId、instanceId、nodeIdAverage、Maximum连接数使用率%ShardingConnectionUsageuserId、instanceId、nodeIdAverage、MaximumCPU使用率%ShardingCpuUsageuserId、instanceId、nodeIdAverage、Maximum命中率%ShardingHitRateuserId、instanceId、nodeIdAverage、Maximum入方向流量KByte/sShardingIntranetInuserId、instanceId、nodeIdAverage、Maximum流入带宽使用率%ShardingIntranetInRatiouserId、instanceId、nodeIdAverage、Maximum出方向流量KByte/sShardingIntranetOutuserId、instanceId、nodeIdAverage、Maximum流出带宽使用率%ShardingIntranetOutRatiouserId、instanceId、nodeIdAverage、Maximum缓存内Key数量个ShardingKeysuserId、instanceId、nodeIdAverage、Maximum最大响应时间usShardingMaxRtuserId、instanceId、nodeIdAverage、Maximum内存使用率%ShardingMemoryUsageuserId、instanceId、nodeIdAverage、MaximumQPS使用率%ShardingQPSUsageuserId、instanceId、nodeIdAverage、Maximum已用连接数个ShardingUsedConnectionuserId、instanceId、nodeIdAverage、Maximum内存使用量BytesShardingUsedMemoryuserId、instanceId、nodeIdAverage、Maximum、Sum平均每秒访问次数个ShardingUsedQPSuserId、instanceId、nodeIdAverage、Maximum 2.2 redis大key分析1.在控制台选择对应的实例,进行大key及Hot key分析处理。
图2:实例分析
2.利用API接口进行分析大 key以及Hot key。
缓存分析与热点Key查询可参考文后资料了解详情[1]。
2.3 数据库同环比监控创建分组报警规则目前已更新至分组界面。
2.3.1 创建应用分组图3:创建应用分组
图4:创建报警规则
图5:设置报警规则
利用sls接入客户端日志,可以通过设定规则建立仪表盘以及实现报警。此方案日志接入采取logtail方式内网传输。
3.1 安装logtail安装logtail方法可参考文后资料[2]。
3.2 创建project和logstore登录日志服务控制台,依次创建对应地域的project及logstore。
图6:project-logstore创建
此次客户侧日志格式分别为json、log4j。
3.3.1 json选择json文本日志>选择现有机器组>对应logtail配置
图7:logtail配置
1.设置索引
对于多重json日志,需要将字段类型更改为json。
图8:设置索引
2.查询分析
图9:查询分析
选择正则文本日志>选择现有机器组>对应logtail配置1.正则识别首行
图10:设置自动生成
2.提取字段
图11: 日志提取字段
3.设置索引注意:只对新写入数据生效。
图12:设置索引
4.查询分析
图13:查询分析
图14:仪表盘信息展示
在仪表右上侧导航栏中单击告警,在下拉菜单中选择创建。
图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?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。