全部产品
云市场

应用快照

更新时间:2019-01-24 17:36:18

EDAS 应用快照功能介绍

应用快照是指 EDAS 为其所托管的应用,当检测到有关性能问题(CPU、Load、内存、RT)的时候,会由 EDAS 服务触发一些的命令来尽可能多的保存该机器上的现场,这些命令包括简单的 Linux 常用命令(如 top, netstat 等)生成的信息,也包括 EDAS 上的工具 (方法热点等) 保存的信息,当相关信息保存完整之后,会触发钉钉的一个报警信息,同时附带一个 H5 的链接地址可以进行快照信息的查看。一个简单的图示说明如下:

支持场景

应用快照功能是以诊断排查的不同场景出发,而在逐步丰富与完善的一个诊断功能,目前仅支持 CPU 高这一种场景,其中 RT 变长这种场景也在研发中,后续会围绕着内存、网络、Load 等场景不断丰富。

什么时候触发?

所有自动触发应用快照的一个前提是 EDAS 可以拉取得到对应实例上的监控数据,即先需要确认 EDAS 上的基础监控和服务监控可以查阅;此外以 CPU 高为例子,当且仅当以下几个条件同时满足时,EDAS 才会认为该实例处在一个不正常的状态:

  1. 根据历史的 CPU 曲线,当前 CPU 利用率处在一个明显的偏离点(明显偏离预测区间)。
  2. 在满足条件 1 的同时,当前 CPU 的利用率大于某一个配置值。
  3. 当前实例没有处在应用启停/发布的流程中。

由于从数据生成到 EDAS 计算的并触发所有快照数据的获取中会存在一定的延时,目前测试的结果来看,在数据链路畅通的前提下会由两分钟左右的时延,这一数据可能随 EDAS 服务的 Load 的增加而有所增加。

快照包含什么内容?

这个链接地址,是 EDAS 的一个测试服务,点开这个链接地址后,可发现包含的主要内容有以下几个方面:

  1. 基本的实例信息。
  2. Linux 中的 top -n 5 -d 1,即执行 top 命令,以每一秒刷新一次的频率共刷新 5 次。
  3. netstat -ant :此处会对 netstat 命令做基本的聚合,其中包括
    1. timewait 状态连接的数量。
    2. 本地监听的地址(如:127.0.0.1:8080),及其连到该地址的数量。
    3. 远程地址(如 DB 服务:xxxx:3306),及其本机连向该地址的数量。
  4. jstat -p <javapid> 1000 10:以 1 秒为刷新频率,共获取 10 次 jstat 数据,此项数据当且仅当 CPU 为 Java 进程引起才会触发。
  5. Java 进程火焰图:火焰图是使用 EDAS 上的方法热点工具产生的,只不过 EDAS 会自动触发该工具并保存数据结果。在火焰图上体现的是相应方法执行耗时的占比。
  6. Java 线程快照:此项内容也是 EDAS 上的方法热点工具产生的,可以理解成是原生的 jstack 工具的一个高度聚合,在 jstack 的基础上,做了自动隐藏栈桢中的系统函数、根据 stack 是否一样做 group 等功能。

如何申请使用?

快照功能是即将集成在控制台上可供手动/自动订阅并执行的功能,但是目前使用只能通过工单方式申请,申请流程如下:

  1. 由于快照内容是以钉钉方式进行通知,所以在申请之前需要准备一个钉钉的群,然后在群设置处,选择群机器人 -> 添加机器人,添加机器人成功之后,拷贝 webhook 地址。
  2. 创建工单,常见问题处选择应用管理,在问题描述中,写上:申请开通应用快照功能,同时将在第一步中添加的机器人的 webhook 填入工单。
  3. 工单中填入要监控的 EDAS 应用名字与 ID, 最多 10 个。

当应用配置完成之后,如果 EDAS 为您检测到有异常产生时,会收到如下图所示的钉钉预警:

DingTalk Alarm

上图中的钉钉通知消息包含了基本的信息,如:应用、所在实例、CPU 预测范围、实际值、还有快照查看的链接地址,该 link 支持手机阅览,无需登录 EDAS 可以查看。

另外,如果在使用的过程中有任何意见或者有特殊的快照内容需要获取,也可以通过工单和我们联系。