告警可通过短信、邮件、微信及移动App推送通知到人,也可以通过HTTP方式通知其他系统。
3.6.2 性能告警:预警策略模板、灵活的策略编辑、多种通知创建预警策略时,可以使用预警策略模板。上图是系统里的预警策略模板截图。
选定策略类型之后,预警策略的规则和条件会根据我们缺省推荐的套餐自动设置,用户只要配置需要报警的目标范围和通知方式,直接保存就可以了。也可以调整模板套餐里的阈值和报警表达式。此外,告警也支持运行时动态启用和禁用。
3.7 JVM监控分析 3.7.1 JVM监控分析工具:整体架构JVM监控分析工具基于UAVStack已有整体架构,如上图所示。整体分为前端、后台及探针MOF部分。
前端负责数据展示以及向后台发送用户的执行指令。
后台负责将指令下发到具体节点及结果的归集和处理。
监控探针MOF负责接收后台下发的指令,执行指令返回结果。
其中在探针部分:
JVM实时监控数据,如堆内存大小、Minor GC和Full GC的情况,都是通过JMX提供的接口来获取。
JVM堆内存采样分析数据和CPU采样分析数据,则通过JDK提供的Java Attach API进行获取。
3.7.2 JVM监控分析工具:监控功能展示上图是JVM监控分析工具的监控功能展示页面。JVM监控分析工具的功能主要包括:
基本信息Tab显示JVM基本信息,包括JVM版本、启动时间、JVM参数、系统属性等。
监控Tab提供JVM实时监控指标展示,包括CPU、线程、内存、GC统计等。用户可以切换时间/区间,比如最近10分钟、最近3小时、今天、昨天、最近七天或自定义的时间/区间,查看不同时间/区间内的JVM监控数据。
线程分析和内存Dump Tab提供了JVM线程分析与JVM堆内存Dump在线工具。
CPU采样和内存采样Tab提供了JVM堆内存采样分析和CPU采样分析工具。
3.7.3 JVM监控分析工具:堆内存采样和CPU采样分析堆内存采样分析可实时采样JVM的堆内存分配、每个类实例对象的数量以及这些实例所占用的内存大小,从而辅助定位内存泄露的根源。
CPU采样分析可实时采样JVM每个方法的CPU执行时间,可辅助定位热点方法。比如CPU达到100%时,可以定位哪些方法占用CPU比例较高。
3.8 数据库监控 3.8.1 数据库监控:核心功能区别于传统的数据库端的监控,UAV的数据库监控采用新的视角,从应用端切入分析,弥补了现有数据库端监控的不足,增加了数据库-应用的关联分析能力。
数据库监控目前已实现的功能包括:数据库连接池监控、SQL分类统计、慢SQL统计、慢SQL耗时分布统计、慢SQL追踪以及与调用链/日志关联。
慢SQL的监控功能主要包括慢SQL统计+慢SQL追踪。对慢SQL的监控,可以自主设定阈值,界定多慢才算是慢SQL。用户可以按具体应用和它操作的数据库实例来设置,高于设置阈值的SQL操作才计入慢SQL。
在开启调用链/日志归集的情况下, 慢SQL操作可关联至对应的调用链以及日志,帮助我们诊断和定位问题。
上图是数据库监控功能的慢SQL统计报表,展示了某段时间之内慢SQL的计数情况。慢SQL分类统计根据SQL类型,包括I-插入、D-删除、U-更新、Q-查询、B-批量操作,对慢SQL进行分类统计。
图中下方两个报表中,一个是数据库连接池监控,可以查看连接池总连接数、活动连接数以及空闲连接数;另一个是SQL分类统计,可以根据SQL类型来分类统计。
3.8.2 数据库监控案例:某催收系统通过某外购催收系统的数据库监控案例来说明数据库监控的使用方法。
催收系统在查询催收历史时,统计记录数的count(*)语句,因为执行计划异常,执行效率低,占用了大量资源,导致数据库服务器CPU资源耗尽,进而系统不可用。从图上可以看到,故障期间的慢SQL数目明显变大,慢SQL具体为count(*)语句。