跟踪诊断技术SIG 7月运营月报:系统排查工具 ssar 即将开源 | 龙蜥SIG
跟踪诊断技术 SIG致力于为操作系统生态提供系统性,工具化,并以数据为支撑的发现、跟踪和诊断问题的能力。
SIG目标:为龙蜥社区(OpenAnolis)开源操作系统,提供一个全栈覆盖内核与核心组件的跟踪和诊断工具,增强龙蜥社区(OpenAnolis)全栈的可观察性和可靠性。欢迎更多开发者加入跟踪诊断技术SIG:
网址:https://openanolis.cn/sig/tracing
邮件列表:cloud-kernel@lists.openanolis.cn
SIG 本月亮点
系统排查工具 ssar
7月份,我们计划将阿里云自研的 ssar 贡献给龙蜥社区( OpenAnolis) ,作为跟踪诊断 技术SIG 和 龙蜥社区( OpenAnolis) 中第一款系统层面的排查工具。当前 ssar 的开源工作正在有序进行中,欢迎各位开发者关注跟踪诊断技术SIG,及时获取项目消息。
ssar 简介
大家平常会经常遇到系统不稳定的情况,往往需要依赖一款sar(System Activity Reporter)系统活动报告类工具来追踪系统曾经发生了什么,以便确定引起系统不稳定的根源。
相信不少同学在使用传统的sar工具排查系统问题时,都会遇到如下一些苦恼:
2、传统sar工具无进程级指标的记录,当整机CPU或内存等指标出现波动时,无法定位具体的进程级因素。
3、针对 linux load 这个即熟悉又陌生的指标异常,单凭sar工具本身无能为力。
4、传统sar工具在系统异常时,采集工具本身往往也无法正常运行,常常引起数据中断的情况发生。
这里介绍一款功能强大的阿里云自研sar类型工具ssar(SRE System Activity Reporter)。它是系统活动报告sar工具家族中崭新的一个,几乎涵盖了传统sar工具的大部分主要功能之外,还扩展了更多的整机指标,新增了进程级指标和特色的load指标。
与其他sar家族工具相比,ssar有如下几个特色的地方:
2、传统sar工具或者无法二次开发,或二次开发门槛较高,ssar工具支持使用python语言二次开发,二次开发入门的门槛低;
3、ssar工具完整的记录了系统所有进程的CPU和内存等关键指标,并可以按需进行指标排序输出;
4、针对Linux load指标,ssar工具还提供了详细的load指标信息,其中的load5s指标是国内外全行业独创。
5、为了避免系统异常时采集数据中断情况发生,ssar工具在内存不足和CPU资源紧张时做了最大兼容。
6、最后,作为一款优秀的sar类型工具,ssar的本身的资源消耗也是及其优秀的,内存资源占用只有不足5MB,CPU使用率只有不足单核的1%。
当然了,采集更多的数据,必然占用更多的磁盘存储空间。近20年来,随着存储技术的发展,在同样成本结构的前提下,磁盘空间容量增长了1000倍。基于这样背景,适当占用一定的存储空间,采集更多数据指标是值得的。
ssar 上手体验
下面带大家抢先体验ssar的强大功能:
通过配置文件实现常用指标的展示。
首先,配置需要采集的数据源文件。
{src_path='/proc/stat', cfile=’stat’, turn=true},
user = {cfile='stat', line_begin='cpu', column=2, width=10, metric='d'}
system = {cfile='stat', line_begin='cpu', column=4, width=10, metric='d'}
idle = {cfile='stat', line_begin='cpu', column=5, width=10, metric='d'}
iowait = {cfile='stat', line_begin='cpu', column=6, width=10, metric='d'}
最后,在配置文件中配置视图项。
cpu = ['user', 'system','idle','iowait']
$ ssar --cpu
collect_datetime user/s system/s idle/s iowait/s
2021-08-09T06:45:00 1.05 1.75 6395.72 0.01
2021-08-09T06:50:00 0.85 1.57 6396.11 0.01
2021-08-09T06:55:00 0.94 1.56 6395.99 0.01
通过自定义指标灵活显示不常用指标的展示。
在一个多核的系统中,如果想查看每个核的idle类型cpu资源分布,可以通过如下自定义指标功能实现。在stat文件中,第2到5行数据对应了0到3号核,而第5列值对应了idle的cpu资源情况。
$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};'
collect_datetime idle_2/s idle_3/s idle_4/s idle_5/s
2021-08-09T06:48:00 99.92 99.46 99.84 99.92
2021-08-09T06:53:00 99.91 99.45 99.85 99.93
2021-08-09T06:58:00 99.91 99.42 99.81 99.90
$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' –api
排序显示内存资源申请增量多的进程列表。
$ ssar procs -r 5 -o pid,ppid,rss,rss_dlt,nlwp,cmd -k rss_dlt -l 3 pid ppid rss rss_dlt nlwp cmd 197779 1 14624 472 1 syslog-ng 185017 1 136328 400 1 systemd-journal 27495 77722 360 360 1 sleep
国内外全行业独创load5s指标更加精准的显示系统的load情况。
通过load5s子命令可以显示更加精准的5秒级别的load5s指标。这里明显可以看出传统的load1指标在系统负载压力消失后,还一定的滞后性,但load5s指标却可以精准的显示机器的负载压力。
$ ssar load5s
collect_datetime threads load1 runq load5s
2021-08-09T14:17:35 1047 0.28 2 1
2021-08-09T14:17:40 1058 0.25 1 0
2021-08-09T14:17:47 3047 113.46 1453 1414
2021-08-09T14:17:53 3053 264.62 2002 2001
2021-08-09T14:17:59 3053 403.74 2002 2002
2021-08-09T14:18:05 1049 371.41 1 0
2021-08-09T14:18:10 1055 341.67 1 0
2021-08-09T14:18:15 1048 314.31 1 0
此外,load2p子命令还可以详细显示load5s偏高时刻的进程线程信息和D状态调用栈信息。
工具本身采集进程资源消耗小,并且资源使用平稳。
$ ssar proc -p $(pidof sresar) -i1 -o collect_datetime,rss,min_flt,cmd
collect_datetime rss min_flt cmd
2021-08-09T11:40:00 1524 631 sresar
2021-08-09T11:41:00 1708 1231 sresar
2021-08-09T11:42:00 3552 1748 sresar
2021-08-09T11:43:00 3552 1748 sresar
2021-08-09T11:44:00 3552 1749 sresar
2021-08-09T11:45:00 3552 1749 sresar
2021-08-09T11:46:00 3552 1749 sresar
2021-08-09T11:47:00 3552 1749 sresar
2021-08-09T11:48:00 3552 1749 sresar
ssar 开源计划
ssar 项目的开源计划正在有条不紊的进行中,预计近期会和大家见面。同时也欢迎大家持续关注跟踪诊断技术 SIG:https://openanolis.cn/sig/tracing ,开源后我们会第一时间更新信息。
SIG 近期规划
跟踪诊断技术SIG 近期计划将更多的工具贡献至龙蜥社区( OpenAnolis ),其中包括上文提到的 ssar、网络时延跟踪工具、内核诊断工具集和 TCP 跟踪诊断工具等。逐步构建并增强整个龙蜥操作系统(Anolis OS)和内核层面的跟踪和诊断能力,为开发者带来愈加清晰完整的工具生态体系,弥补当前跟踪诊断工具的碎片化和易用性的问题。
SIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区目前有近20个SIG,包括跟踪诊断技术SIG、商密软件栈、高性能存储技术SIG、Java语言与虚拟机SIG、Cloud Kernel、OceanBase SIG等。
SIG网址:https://openanolis.cn/sig
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥OpenAnolis社区交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!
龙蜥社区钉钉交流群
龙蜥社区-小龙