上图可以查看到慢SQL的详细SQL语句,得知故障期间的连接池资源被耗尽,活动连接数达到峰值,而空闲连接数为0;SQL分类统计图表也显示故障期间查询错误SQL数量明显变大。
通过慢SQL追踪界面,可以查看故障期间的慢SQL列表,发现执行时间长的三条SQL全是count(*)语句。
每一条慢SQL的执行结果及SQL语句都可以与调用链关联。继续点击,查看慢SQL详情及与调用链关联,均显示了count(*)语句执行时间长,且执行错误。通过慢SQL的执行与调用链、日志的关联,可以辅助定位和分析故障问题。
3.9 容器生态支持 3.9.1 容器生态支持:基本原理对容器生态上的支持是指UAV以上所有功能都能在容器云平台上无缝迁移和使用。在容器环境下,监控Agent和应用分别在不同的容器中,需要做一些适配工作,主要体现在应用画像/监控数据的采集、进程画像/监控数据的采集、日志采集路径的适配上。
首先,在应用画像/监控数据的采集上,监控agent容器应允许通过容器的虚拟IP访问应用的容器,通过http请求获取应用画像及实时监控数据。
其次,在进程画像/监控数据的采集上,监控agent的容器PID namespace需要和宿主机保持一致,从而保证监控agent可以扫描宿主机的/proc目录获取进程信息。
最后,在日志采集路径的适配上,监控agent应允许通过API获取应用和agent自身使用的volume信息。有了双方的volume信息,agent才能正确地在自身的容器内找到应用输出的日志路径。
3.9.2 容器生态支持:应用环境监控 — KubernetesUAV以上所有功能都能在容器云平台上的无缝迁移和使用,所以从UI上看不出来和VM有何区别,仅在应用环境监控界面上有些不同。上图截取了Kubernetes环境下的应用环境监控界面,可以看到一个物理主机上有10个主机进程、17个容器、28个在容器里的进程。
应用环境监控可以显示容器和进程的对应关系。可点击分别查看容器性能指标和进程性能指标。
在容器或进程的属性列表里,新增了K8S相关的属性展示。这是在容器云环境下,我们可以从应用环境监控UI中看到和VM环境下的些许差异。而对于其它功能(如调用链、日志监控、数据库监控,等等)而言,界面在容器环境下和VM环境下是没有任何区别的,用户感觉不到差异。
3.10 Agent插件支持 3.10.1 Agent插件支持:支持Open-Falcon插件与UAV自定义插件为了弥补监控广度上的不足,UAV目前提供了指标采集插件,支持已有的Open-Falcon的指标采集插件(类似Prometheus的exporter),也支持UAV自定义插件,使UAV监控能力可灵活扩展到对几乎所有常用的互联网中间件的监控,如MySQL、Redis、Kafka、RocketMQ、MongoDB、ElasticSearch等。
上图展示了UAV对Kafka、RocketMQ、Redis指标的监控曲线。
3.11 业务链路监控与告警 3.11.1 业务链路监控与告警:解决方案宜信公司业务大多跨多个业务线和多个系统,为在IT层面可以快速定位问题系统,在业务层面上也可以给出受影响或波及的具体业务单据和客户范围,解决业务/运营人员的痛点,UAV提供了一套通用的业务链路监控与告警接入平台。
如图所示,该平台包括异构业务日志归集、数据上送、数据切分、过滤、聚合计算等功能,之后可以将结果持久化,提供业务报表大屏展示,也可以根据结果告警,生成业务工单。
实施过程中,各业务组先在应用中埋点具有业务涵义的日志,然后自助配置和维护对业务日志的解析逻辑、具体的告警策略和告警消息模板内容,从而可以快速搭建针对自身业务的链路监控系统。
这套业务监控系统的优势在于:
将IT层面的调用链与业务事件双向关联,给IT层面的调用链赋予了业务涵义的同时,将跨系统的调用跟踪升级为跨业务领域的跟踪。