概述
根据阿里官网上的介绍,sysAK,全称是system analyse kit,目前主要来自于阿里百万服务器运维经验,通过对这些经验进行抽象总结出典型场景,提供了一系列工具针对不同的运维需求。
主要包括:
• 线上问题分析诊断:(比如负载异常、网络抖动、内存泄漏、io毛刺、性能异常等等)针对性的提供工具, 同时减少工具的专业性,让用户更易使用和解读。
• 资源监控: 针对各种系统资源更精细化的资源监控,帮助业务运维实现细粒度的运维调度,和资源控制。
• 故障止血: 总有不可预期的问题会发生,真正问题发生后需要及时恢复,对于不是整机异常的问题(死锁、夯机), 提供介入能力对系统进行恢复或故障隔离。
同时,sysAK工具本身不会为系统带来更大的负载开销,避免引起抖动问题。sysAK通过技术手段保证所有工具同时运行时不超过3%的系统消耗,单个工具不超过1%的系统消耗。
代码库及工具使用介绍
阿里官网上已有不少有关sysak的使用命令介绍。参考这里
sysak的开源代码库参考这里(可能需要注册登录后才能克隆下载)。
工具使用
下载代码到本地,看看支持哪些功能。
sysak支持的模块功能:
利用configure脚本生成Makefile:
./configure --enable-lkm --enable-libbpf --enable-target-all --disable-target-pagescan
这里我将pagescan
模块给disable了,因为和我内核版本有兼容问题,编译出错,所以先disable掉。
编译后,sysak脚本list查看功能。有些功能好像要单独去跑命令,比如pingtrace_raw
。
使用举例
使用sysak的runlatency功能来监测latency。
sysak runlatency -e #开启runlatency,会发现多了/proc/sysak/目录
目前看sysAK支持还不是很好,对内核有兼容依赖,目前支持3.10,4.10,4.19比较好,其他内核版本或多或少可能会遇到问题(笔者就遇到不少坑)。估计sysAK还在完善中,需要开源社区的共同贡献。
原理简析
简要分析了下sysak的源码目录,其代码主要框架我整理如下图。内核核心有sysak.ko支持,前端工具用shell脚本、python等语言编写。主要的事件源还是来自tracepoint、kprobe、eBPF、perf_event等。