监控最佳实践--redis及业务接口
简介: 监控最佳实践--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集群版云监控指标如下表所示。
|
监控项 |
单位 |
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分析处理。
图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:告警内容设置
作者:SRE团队技术小编-小凌
本文为阿里云原创内容,未经允许不得转载
监控最佳实践--redis及业务接口的更多相关文章
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 【Yii系列】最佳实践之后台业务框架
缘起 上面的几章都讲概念了,没有怎么讲到实践的东西,可能会有些枯燥,这很正常的,概念还是需要慢慢啃的,尤其是官网其他的部分,需要狠狠的啃. 什么,你啃不动了?看看官网旁边的那个在线用户吧. 你不啃的时 ...
- Sentry Web 前端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- iOS系统中导航栏的转场解决方案与最佳实践
背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...
- DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(业务逻辑条件判断最佳实践)
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题. 大家都知道,聚合根.实体和值对象这些领域对象都自身处理自己的业务逻辑.在业务处理过 ...
- 京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践
1. 为什么需要一个前端监控系统 通常在一个大型的 Web 项目中有很多监控系统,比如后端的服务 API 监控,接口存活.调用.延迟等监控,这些一般都用来监控后台接口数据层面的信息.而且对于大型网站系 ...
- .NET API 接口数据传输加密最佳实践
.NET API 接口数据传输加密最佳实践 我们在做 Api 接口时,相信一定会有接触到要给传输的请求 body 的内容进行加密传输.其目的就是为了防止一些敏感的内容直接被 UI 层查看或篡改. 其实 ...
- RESTful接口设计原则/最佳实践(学习笔记)
RESTful接口设计原则/最佳实践(学习笔记) 原文地址:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 1 ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- Kubernetes集群的监控报警策略最佳实践
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/79652064 本文为Kub ...
随机推荐
- TX2 核心板 GPIO、IO扩展器、拨码开关、LED灯 使用总结
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 单体JOB向分布式JOB迁移案例
一.背景 1.1前言 相信大家在工作中多多少少都离不开定时任务吧,每个公司对定时任务的具体实现都不同.在一些体量小的公司或者一些个人独立项目,服务可能还是单体的,并且在服务器上只有一台实例部署,大多数 ...
- 深度观察2024中国系统架构师大会(SACC)
今年的中国系统架构师大会(SACC)在我所在的城市广州举办,很荣幸受邀参加.这次能接触到国内最优秀的架构师,学习他们的架构思想和行业经验.对我而言非常有意义. 大会分为上下午共4场,我参加了上午的多云 ...
- 记录--try...catch知识补全
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 说到try...catch都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的.然而因为了解不够多,我的面试却栽在了一个简 ...
- 记录--为啥面试官总喜欢问computed是咋实现的?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 从computed的特性出发 computed最耀眼的几个特性是啥? 1. 依赖追踪 import { reactive, compute ...
- 记录--短视频滑动播放在 H5 下的实现
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 短视频已经无数不在了,但是主体还是使用 app 来承载的.本文讲述 H5 如何实现 app 的视频滑动体验. 无声胜有声,一图顶百辩,且看 ...
- Mysql中的锁(case篇)
case1(表锁的读-写-读阻塞) 上篇文档中提到过 WRITE locks normally have higher priority than READ locks to ensure that ...
- PostgreSQL 函数稳定性在索引与全表访问下的性能差异
一.构建测试数据 create or replace function test_volatile(id integer) returns bigint volatile language sql a ...
- 闲来无事-esp32cam实现延时摄影
扯淡时间 在上一篇文章中我提了一嘴,打算使用esp32cam实现一个延迟摄影,奈何存在各种硬件问题,商家发了好几个地板都不好使(就是那个拼多多商家的问题,还说我供电不稳,我特意买了独立供电的hub), ...
- 5 HTML表单标签
5 表单标签 表单主要是用来收集客户端提供的相关信息,提供了用户数据录入的方式,有多选.单选.单行文本.下拉列表等输入框,便于网站管理员收集用户的数据,是Web浏览器和Web服务器之间实现信息交流和数 ...