Cat应用告警实战
1. Cat应用告警实战
1.1. 前言
- 好像是中间件设计者的通病,文档写的都是面向有一定使用各种中间件经验的人,告警模块中每个参数其实都可以详细解释一下,要不然我们理解起来真的很吃力还容易采坑
1.2. 全局系统配置
1.2.1. 告警策略
如下图所示,告警策略官方有模板,只要适当修改一下即可,这里我详细解释一下这里涉及到的一些概念,刚接触的人真的可能一脸懵逼
首先看到这里指定send为
mail,weixin,sms
等等是不是很激动,以为它都给你封装好了,你只需配置一下就可以发送告警?别想多了,这里只代表一个个类型,suspendMinute
代表发送告警间隔时间,避免同样的告警一直发送,而warning
和error
在这个系统中也多次出现了都是同样的意思,只是代表一种告警类型,不要以为是你系统报了error错误或者warn错误它就会报警,而id为Transaction
则是一种标识,当在别的便签里看到id为该值时就知道了
1.2.2. 默认告警人
- 如下图,看到id值就知道了和上面的告警策略对应,需要保持相同,email等可以填多个值
1.2.3. 告警服务端
如下图,对应了告警策略中mail类型的服务端配置,这里只有url需要改动,也是告警的核心功能,自己写接口去,把发送邮件的接口提供出来然后把地址放这里
请注意一点,也是我踩过的坑,看到
successCode="200"
这个配置了吗?我们提供接口肯定是要有返回值的吧,我没在它的文档里找到交代,在报完错后直接找它的源码,发现了它判断接口调用成功的依据是你返回给它的字符串里包含"200",别怀疑了,连引号也包括,我第一次返回的是个对象属性里存在Integer类型的code为200,这都不行,必须是字符串的,所以最简单的返回值如下:
@RequestMapping(value = "/alert/msg")
public String sendAlert(HttpServletRequest request) {
...
发送邮件代码,网上一大堆自己抄,省略
...
return "200";
}
或者code为String类型
1.3. 应用告警配置
1.3.1. Transaction告警
如图,可以是
Transaction
级别也可以是Event
级别,以Transaction
为例,点右上角加号可以添加监控项
因为Cat本身提供了一个例子,但同时也可能起到误导作用,它例子的Type类型都是URL,但是这不是一个可选项,这是一个必填项,而填什么文档有没有交代清楚,导致了我调试很久才反应过来,这里应该填的是我们系统自己埋点时,
Transaction
中填的type,如下
Transaction newTransaction(String type, String name) {
或者用注解的时候我们也会指定个type,这里需要填写的就是这个
- 进入编辑
- 如上图第一点,这里点进去看起来灰蒙蒙的,在一般理解都是不可选择项,但实际上它是可以点开来的,选中状态颜色是会深一点点
- 这里的几个词的概念它文档同样没解释清楚,一笔带过,这里的执行次数还带歪了我同事,让他以为是在一定时间内错误异常的执行次数达到一定值就会告警,但实际上,它就是个计数器,在自己设置的持续时间内,到达规则指定值就会告警,比如最大值100,持续1分钟,那么1分钟请求200次就会告警,和异常毫无关系
- 还有响应时间,失败率,最大响应时间等,文档都是一笔带过,或者描述不够详细,最起码的应该告诉我单位是什么吧,虽然毛想想响应时间应该是毫秒级别,失败率应该是个小数,但谁知道失败率你会不会以%为单位乘了个100呢,经过我实际测试,失败率的确是填写的小数,也就是持续时间比如1分钟内,请求失败的数量除以总请求书,所以报错到告警最晚可能会延迟1分钟
- 至于这持续分钟经测试不能填写小数
- 还有第二点告警级别,我同事一度以为是代码的报错级别,实际上这里仅仅代表你需要发送告警到哪几个环境以及发送告警的时间间隔
Cat应用告警实战的更多相关文章
- 解Bug之路-主从切换"未成功"?
解Bug之路-主从切换"未成功"? 前言 数据库主从切换是个非常有意思的话题.能够稳定的处理主从切换是保证业务连续性的必要条件.今天笔者就来讲讲主从切换过程中一个小小的问题. 故障 ...
- K8S(14)监控实战-grafana出图_alert告警
k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...
- k8s实战之部署Prometheus+Grafana可视化监控告警平台
写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...
- Shell脚本实战:日志关键字监控+自动告警
一个执着于技术的公众号 该程序使用场景说明:主要用于Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人. 一.安装邮件服务 1.解压 tar -jxf mail ...
- Zabbix实战-简易教程--告警屏蔽(Maintenances)
Zabbix Maintenance 一.Zabbix Maintenance(zabbix告警屏蔽) 很多时候,我们需要在某段时间更新维护线上环境,这个时候你是已知触发器会引发报警,所以此时你可以提 ...
- kubernetes实战(二十):k8s一键部署高可用Prometheus并实现邮件告警
1.基本概念 本次部署使用的是CoreOS的prometheus-operator. 本次部署包含监控etcd集群. 本次部署适用于二进制和kubeadm安装方式. 本次部署适用于k8s v1.10版 ...
- SLS机器学习最佳实战:日志聚类+异常告警
1.手中的锤子都有啥? 围绕日志,挖掘其中更大价值,一直是我们团队所关注.在原有日志实时查询基础上,今年SLS在DevOps领域完善了如下功能: 上下文查询 实时Tail和智能聚类,以提高问题调查效率 ...
- 【Rsync项目实战】备份全网服务器数据
[Rsync项目实战]备份全网服务器数据 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转 ...
- 《Apache kafka实战》读书笔记-kafka集群监控工具
<Apache kafka实战>读书笔记-kafka集群监控工具 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如官网所述,Kafka使用基于yammer metric ...
随机推荐
- Java EE.JSP.指令
JSP的指令是从JSP向Web容器发送消息,它用来设置页面的全局属性,如输出内容类型等. JSP的指令的格式为:<%@ 指令名 属性="属性值"%> 1.page指令 ...
- PHP中的$_GET变量
定义 在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. $_GET 变量 预定义的 $_GET 变量用于收集来自 method=&q ...
- Supalle-Admin-Layout,一个PC端和手机端都合适用的后台页面模板
Supalle-Admin-Layout主要使用有Vue.Element-UI.layui-icon,Ajax实现采用Fetch(是有这个打算,不过目前是jQuery.). 源码地址:https:// ...
- PowerDesigner添加唯一键(mysql)
1.打开Columns选项卡 2.选中要添加唯一键的字段 3.点击工具栏Create Key按钮,如图 4.打开创建key窗口,根据情况修改约束名称,不修改也可以 5.切换到mysql选项卡,选中“U ...
- 基于 HTML5 Canvas 的可交互旋钮组件
前言 此次的 Demo 效果如下: Demo 链接:https://hightopo.com/demo/comp-knob/ 整体思路 组件参数 绘制旋钮 绘制刻度 绘制指针 绘制标尺 绘制文本 1. ...
- java反射原理及Class应用
反射:框架设计灵魂 框架:半成品软件,可以在框架基础上进行软件开发,简化编码 反射:将类的各个组成部分封装我其他对象,这就是反射机制 好处: 1.可以在程序运行过程中,操作这些对象 2.可以解耦, ...
- python3 读取文件-2
1.脚本 from sys import argv script,filename = argv#以读的模式打开txt文件txt = open(filename,'r+')print ("t ...
- 这半年时间学Mysql的总结
一条sql语句的执行流程 select * from t where id=1 1.mysql执行一条查询语句的流程 1.1客户端输入用户名密码连接mysql服务器 1.2查询这条sql语句有没有对应 ...
- 工业物联网网关在线探测之TraceRoute
佰马工业物联网网关BMG500在线探测通常有Ping.DNS.TraceRoute三种技术方式,这三种方式的区别与联系是什么?本文着重介绍工业物联网网关在线探测的工作原理,以图文形式介绍无线网关在线探 ...
- 多态、继承、this、super
先放一下多态的定义: (360词典上的哈) 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie C ...