跟踪诊断技术 SIG致力于为操作系统生态提供系统性,工具化,并以数据为支撑的发现、跟踪和诊断问题的能力。

SIG目标:为龙蜥社区(OpenAnolis)开源操作系统,提供一个全栈覆盖内核与核心组件的跟踪和诊断工具,增强龙蜥社区(OpenAnolis)全栈的可观察性和可靠性。

欢迎更多开发者加入跟踪诊断技术SIG:

网址:https://openanolis.cn/sig/tracing

SIG 本月亮点

系统排查工具 ssar

7月份,我们计划将阿里云自研的 ssar 贡献给龙蜥社区( OpenAnolis) ,作为跟踪诊断 技术SIG 和 龙蜥社区( OpenAnolis) 中第一款系统层面的排查工具。当前 ssar 的开源工作正在有序进行中,欢迎各位开发者关注跟踪诊断技术SIG,及时获取项目消息

ssar 简介

大家平常会经常遇到系统不稳定的情况,往往需要依赖一款sar(System Activity Reporter)系统活动报告类工具来追踪系统曾经发生了什么,以便确定引起系统不稳定的根源。

相信不少同学在使用传统的sar工具排查系统问题时,都会遇到如下一些苦恼:

1、传统sar工具固定采集一些主要的系统指标。以TCP重传为例,只采集了整机重传数数据。若想扩展采集更详细的重传子类型数据,需要修改C语言代码,增加指标十分困难。

2、传统sar工具无进程级指标的记录,当整机CPU或内存等指标出现波动时,无法定位具体的进程级因素。

3、针对 linux load 这个即熟悉又陌生的指标异常,单凭sar工具本身无能为力。

4、传统sar工具在系统异常时,采集工具本身往往也无法正常运行,常常引起数据中断的情况发生。

这里介绍一款功能强大的阿里云自研sar类型工具ssar(SRE System Activity Reporter)。它是系统活动报告sar工具家族中崭新的一个,几乎涵盖了传统sar工具的大部分主要功能之外,还扩展了更多的整机指标,新增了进程级指标和特色的load指标。

与其他sar家族工具相比,ssar有如下几个特色的地方:

1、ssar工具无需修改C语言代码,只需几分钟简单修改配置文件,几乎可以扩展采集系统的任意指标;

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命令查看指标了
$  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拥有了自定义指标这个强大功能,可以很方便的支持我们在python等语言中实现二次开发功能。为了方便数据的解析,这里还提供了贴心的json格式数据输出(选项--api)。
$  ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' –api
  • 排序显示内存资源申请增量多的进程列表。
通过procs子命令可以显示出过去5分钟内,内存申请增量最多的3个进程列表。
$  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工具本身的采集进程sresar本身只消耗不足4MB的内存使用。同时,该进程的min_flt次缺页中断数也保持在一个固定数值上,说明采集进程在运行期间无物理内存申请。当系统内存处于极度紧张时,这个特点就可以使sresar采集器比其他sar工具具有更强的鲁棒性。
$  ssar proc -p $(pidof sresar)  -i1 -o collect_datetime,rss,min_flt,cmdcollect_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 的讨论和开发,不仅仅是基于现有的工具与能力,希望有更多更新更酷的工具加入到 SIG 中,一同构建业界领先的跟踪诊断生态。—— 完 ——关于龙蜥社区SIG

SIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区目前有近20个SIG,包括跟踪诊断技术SIG、商密软件栈、高性能存储技术SIG、Java语言与虚拟机SIG、Cloud Kernel、OceanBase SIG等。

跟踪诊断技术SIG 7月运营月报:系统排查工具 ssar 即将开源 | 龙蜥SIG_android

SIG网址:https://openanolis.cn/sig

微信公众号 - OpenAnolis龙蜥(OpenAnolis)。
如有侵权,请 删除。