监控最佳实践--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 ...
随机推荐
- day04-原生的API&注解方式
原生的API&注解方式 1.MyBatis原生的API调用 1.1原生API快速入门 需求:在前面的项目基础上,使用MyBatis原生的API完成,即直接通过SqlSession接口的方法来完 ...
- DWR之入门实例(一)
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...
- Django 使用 Nginx + uWSGI 启动
一.前言 购买了腾讯云服务器练习 Django 项目时, # 最开始用的启动 Django 项目命令 python3 manage.py runserver 0.0.0.0:80 后面发现我一旦把 x ...
- 熬夜的JaVa
1 import java.util.Scanner; 2 3 public class viovo { 4 static int number = 5;//五个商品信息 5 static oppo[ ...
- 记录--关于前端的音频可视化-Web Audio
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 最近听音乐的时候,看到各种动效,突然好奇这些音频数据是如何获取并展示出来的,于是花了几天功夫去研究相关的内容,这里只是给大家一些代码 ...
- elementui树形表格分页
效果图 如果你刚好需求中需要如上效果那么只需要吧代码复制过去直接用即可,注意写在nextTick中 前提是vue加elementui 代码如下 /** * 树形表格分页 * @param ...
- GridSearch 最佳 estimator 设置问题
GridSearchCV 最佳 estimator 设置问题 def train_model_Grid(estimator, param_grid, cv, X_train, X_test, y_tr ...
- KingbaseES 原生XML系列二 -- XML数据操作函数
KingbaseES 原生XML系列二--XML数据操作函数(DELETEXML,APPENDCHILDXML,INSERTCHILDXML,INSERTCHILDXMLAFTER,INSERTCHI ...
- KingbaseES toast技术原理及实现
前言 1.TOAST的作用 TOAST全称是The Oversized-Attribute Storage Technique, 超大属性存储技术,就是超长字段在数据库中的存储方式.主要用来应对物理数 ...
- KingbaseES使用sys_backup.sh脚本init初始化配置文件常见错误处理
KingbaseES使用sys_backup.sh脚本init初始化配置文件常见错误处理: 一.sys_backup.sh脚本按照如下顺序寻找初始化配置文件: [kingbase@postgres ~ ...