来自 道旅旅游科技股份有限公司 鬼谷子 的撰稿
业务背景
公司由于业务迅速扩展,需要针对业务方面进行定制监控。通过选型最终采用了 ARMS 方案。以下篇幅简单介绍了方案的大致概要以及最终效果,以供读者参考。
选择
以下是几个产品方案的对比。需要解释的是,以下三个产品在我们的架构中都有大量使用,但是只是在本监控方案中,由于一些业务场景的特殊性,我们使用了业务实时监控服务 ARMS,虽然这并不代表 ARMS 是一个银弹。
MaxCompute
我们以前用过 MaxCompute 作周期性的业务数据计算,缺点非常明显,就是延迟性太高,这对于实时监控来说是致命的直接被PASS。
流计算
参加深圳云栖大会的时候了解到流计算如获至宝,也回来尝试使用过一段时间,在实时监控的功能节点上是很重要的一环没错,但太过于细节,导致整条线过程冗长且繁杂,最后也放弃了。
业务实时监控服务 ARMS
一套组合拳,在数据分析、实时计算、报警、API、持久化存储等方面给我们节省了不少时间,也提供了更多的可能性。所以,最终我们选择了 ARMS。
架构
数据源
IIS日志
Windows ECS 安装 Logtail 对 IIS 产生的日志进行实时抓取
业务日志
使用日志服务 SDK 提交日志
实时数据分析
ARMS 的配置分为以下几个部分,由于篇幅原因,仅列出重点,详细内容不赘述。
日志切分
根据规则对日志进行切分、类型转换、字段重组等
数据集
将符合条件的数据进行汇总保存(留待后续分析和监控使用),按需设置报警(邮件、短信)
数据使用
对接 API
通过对接 API,可以对数据集内的数据进行查询,以便后续的业务分析和问题复查
业务分析
实时查询数据集内的结果,根据业务在内存中进行二次计算形成报表
监控
我们做了个 Monitoring 的项目,对接 Grafana 的 Datasource,这样便可以在 Grafana 实时看到数据集内的数据。
使用案例
供应商酒店请求分析 监控
该场景用于我们对供应商酒店请求数的业务监控和事后分析,主要使用方是业务人员。介绍如下:
- 通过日志服务 SDK 在酒店请求接口中埋点日志
- 在 ARMS 后台根据供应商 Id,酒店 Id,请求维度等参数配置数据集
- 对接 ARMS 接口,通过下钻的方式获取到数据。
- 在内存中根据业务进行二次计算
- 生成报表
调用第三方接口的 Status Code 监控
该场景用于我们对供应商酒店请求的状态码分析,主要使用方是运维和开发。本方案实现了 ARMS 对 Grafana 的对接,基本介绍如下:
- 通过 Logtail 实时抓取 IIS 日志
- 在 ARMS 后台配置好数据集
- 在 Monitoring 项目中对接 ARMS 接口,并根据 simpleJson 接口规则实现 Grafana Data Source 对接。
- 为 SimpleJson 的 Search 接口定义 target 规则,并生成 target 与配置对应关系
- 使用 ARMS 的下钻功能为 SimpleJson 的 Search 接口支持 Templating 功能
- 在 Grafana 中使用 Moniroing 提供的 simpleJson 接口实现展示数据