跟踪诊断技术SIG 7月运营月报:系统排查工具 ssar 即将开源 | 龙蜥SIG
扫描二维码
随时随地手机看文章
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
- 通过自定义指标灵活显示不常用指标的展示。
$ 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
- 排序显示内存资源申请增量多的进程列表。
$ 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情况。
$ 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 的讨论和开发,不仅仅是基于现有的工具与能力,希望有更多更新更酷的工具加入到 SIG 中,一同构建业界领先的跟踪诊断生态。—— 完 ——关于龙蜥社区SIGSIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区目前有近20个SIG,包括跟踪诊断技术SIG、商密软件栈、高性能存储技术SIG、Java语言与虚拟机SIG、Cloud Kernel、OceanBase SIG等。SIG网址:https://openanolis.cn/sig关于龙蜥社区
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥OpenAnolis社区交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!龙蜥社区钉钉交流群龙蜥社区-小龙
更多精彩,尽在"Linux阅码场",扫描下方二维码关注