全部产品
业务实时监控服务 ARMS

监控任务故障诊断最佳实践

更新时间:2017-08-04 19:53:19   分享:   

在日常运维中,用户可能会由于各种各样的原因导致监控任务出现异常。本文将详细介绍出现问题的各种场景,原因,以及处理方法,旨在帮助用户快速解决问题。

ARMS的任务处理环节介绍

如前面章节所介绍,ARMS的监控任务主要由三个环节组成,

  1. 数据拉取:ARMS计算集群朝数据源,如Loghub, ECS Log,进行数据抓取。
  2. 数据清洗:ARMS在抓取数据后,成功清洗(或者说切分)了多少条数据。
  3. 数据聚合:ARMS在清洗数据之后,在内存中成功的进行了多少次数据聚合以及数据持久化操作。

在以上每个步骤中,如果任务被创建和启动以后ARMS都有监控显示运行详情。具体入口为在“监控任务管理”页面点击目标任务,将展示任务运行详情,如下图所示。数据详情图

每一块豆腐图展示的是对应系统时间内,ARMS处理的数据行数。

当任务出现异常时,可以从该页面进行异常诊断。以下详细介绍各种情况。

任务异常诊断的一般过程

任务运行详情页所有豆腐块显示”No Data Available.”

该状态表示这个时候,可以检查以下几点:

  1. 如果对应的监控任务是刚启动,那么稍等1-2分钟,等待数据拉取。
  2. 可能这段时间确实没有数据,点击面板上时钟图标,拉长时间范围查看一下,看看是否有历史数据。

任何豆腐块显示有红色异常线条。

正常情况下,3个面板都只会有一条蓝色线条。如果出现异常状况,在相应的面板里面会多出一条红色线条。在任务运行的三个环节中,其实都有可能出现异常。具体异常是什么原因造成,可以点击惊叹号按钮,来查看异常的抽样详情。以下各举出数据清洗和数据聚合的一个例子。来展示我们如何来进行异常的诊断。

  1. 数据清洗异常诊断。

在此我们给出一个比较常见的案例,如下图:

数据切分异常线条

出现红色曲线之后,第一件事情就是点击面板上的叹号按钮,查看异常类型。比如说下图, code 为 SG10100 的字段,出现了”类型转换异常”。

SG10100错误

根据我们的实践,产生该问题的原因通常是,使用智能切分的时候,提供的字段值被判定为 long 型,而实际产生数据的时候,出现了不能转换为 long 的 string 类型,解决该问题的方案是”暂停”监控任务之后,”编辑”监控任务,在第2步日志清洗页面,选择”自定义切分”,将 LongKey 的 code 换成 StringKey ,保存后”恢复”监控任务。

切分器

重新运行之后,可以发现后续的红色线条数值变为0,切分异常得到解决。

数据切分恢复

  1. 数据聚合异常诊断。

紧接刚才例子,通过调整切分模型,切分的异常消失,但是出现了”数据聚合”的异常。

聚合错误曲线

点开叹号按钮查看,可以看到一个 String 无法转换为 Number 类型的异常,如下图:

聚合异常

这个时候,就要回忆一下,我们建立的数据集,是不是对刚才 LongKey 的 code 做过一些算术运算。经过排查,发现在某个数据集中,我们对 code 这个字段进行了 SUM 。

编辑数据集

当时之所以 SUM ,纯粹是试试 SUM 的效果,分析之后,将 SUM 去除,异常即可消失。

本文导读目录
本文导读目录
以上内容是否对您有帮助?