5

监控最佳实践--redis及业务接口

 3 years ago
source link: https://segmentfault.com/a/1190000039415614
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

简介:监控最佳实践--redis及业务接口

095b6ee08e914421a6b48f53f8daf0b71.png

1.1 问题

2020-12-04,客户侧redis集群版监控DB0 CPU突增至100%,导致数据库无法正常服务,经排查客户侧业务上存在2M左右的大key导致DB0阻塞。并且客户侧使用的集群连接方式为默认proxy模式,如下图所示,DB0阻塞导致其他节点也无法正常服务;处理办法:客户侧配合切断大key业务的高频繁次调用,请求恢复。

1.jpg
图1:proxy模式

1.2 思考

此次问题导致客户侧课程报名入口严重受损,进而引发深度思考。在使用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.jpg
图2:实例分析

2.利用API接口进行分析大 key以及Hot key。

缓存分析与热点Key查询可参考文后资料了解详情[1]。

2.3 数据库同环比监控

创建分组报警规则目前已更新至分组界面。

2.3.1 创建应用分组

3.jpg
图3:创建应用分组

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技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK