在日常运维中,用户可能会由于各种各样的原因导致监控任务出现异常。本文将详细介绍出现问题的各种场景,原因,以及处理方法,旨在帮助用户快速解决问题。
ARMS的任务处理环节介绍
如前面章节所介绍,ARMS的监控任务主要由三个环节组成,
数据拉取:ARMS计算集群朝数据源,如Loghub, ECS Log,进行数据抓取。
数据清洗:ARMS在抓取数据后,成功清洗(或者说切分)了多少条数据。
数据聚合:ARMS在清洗数据之后,在内存中成功的进行了多少次数据聚合以及数据持久化操作。
在以上每个步骤中,如果任务被创建和启动以后ARMS都有监控显示运行详情。具体入口为在“监控任务管理”页面点击目标任务,将展示任务运行详情
每一块豆腐图展示的是对应系统时间内,ARMS处理的数据行数。
当任务出现异常时,可以从该页面进行异常诊断。以下详细介绍各种情况。
任务异常诊断的一般过程
任务运行详情页所有豆腐块显示”No Data Available.”
该状态表示这个时候,可以检查以下几点:
如果对应的监控任务是刚启动,那么稍等1-2分钟,等待数据拉取。
可能这段时间确实没有数据,点击面板上时钟图标,拉长时间范围查看一下,看看是否有历史数据。
任何豆腐块显示有红色异常线条。
正常情况下,3个面板都只会有一条蓝色线条。如果出现异常状况,在相应的面板里面会多出一条红色线条。在任务运行的三个环节中,其实都有可能出现异常。具体异常是什么原因造成,可以点击惊叹号按钮,来查看异常的抽样详情。以下各举出数据清洗和数据聚合的一个例子。来展示我们如何来进行异常的诊断。
数据清洗异常诊断。
出现红色曲线之后,第一件事情就是点击面板上的叹号按钮,查看异常类型。比如说下图, code 为 SG10100 的字段,出现了”类型转换异常”。
根据我们的实践,产生该问题的原因通常是,使用智能切分的时候,提供的字段值被判定为 long 型,而实际产生数据的时候,出现了不能转换为 long 的 string 类型,解决该问题的方案是”暂停”监控任务之后,”编辑”监控任务,在第2步日志清洗页面,选择”自定义切分”,将 LongKey 的 code 换成 StringKey ,保存后”恢复”监控任务。
重新运行之后,可以发现后续的红色线条数值变为0,切分异常得到解决。
数据聚合异常诊断。
紧接刚才例子,通过调整切分模型,切分的异常消失,但是出现了”数据聚合”的异常。点开叹号按钮查看,可以看到一个 String 无法转换为 Number 类型的异常
这个时候,就要回忆一下,我们建立的数据集,是不是对刚才 LongKey 的 code 做过一些算术运算。经过排查,发现在某个数据集中,我们对 code 这个字段进行了 SUM 。
当时之所以 SUM ,纯粹是试试 SUM 的效果,分析之后,将 SUM 去除,异常即可消失。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。