系统运维工具集SysAK使用说明

SysAK(System Analyse Kit)是阿里云操作系统提供的一个全方位的系统运维工具集,可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景。本文为您介绍SysAK的安装部署和使用方法。

背景信息

阿里云通过对百万服务器运维经验进行抽象总结,进而打造出系统运维工具集SysAK,该工具集可以覆盖以下常见运维场景:

  • 日常监控:针对各种系统资源更精细化的资源监控,帮助业务运维实现细粒度的运维调度和资源控制。除此之外,还实现了许多增强的系统指标,实时监控系统的干扰和抖动等情况。
  • 问题诊断:针对负载异常、网络抖动、内存泄漏、IO夯、性能异常等情况提供线上诊断功能。 同时减少工具的专业性,可操作性强。
  • 故障修复:对于非整机异常的问题(例如死锁、夯机等), 该工具提供介入能力对系统进行恢复或故障隔离。

工具本身不会为系统带来更大的负载开销,避免引起网络抖动问题。SysAK通过技术手段保证所有工具同时运行时不超过3%的系统消耗,单个工具不超过1%的系统消耗。

安装SysAK

环境要求

  • 操作系统:Alibaba Cloud Linux 2、Anolis OS 8.4 ANCK、CentOS 7及其他内核版本大于3.10的Linux系统

    说明 您可以运行uname -a命令查看实例的内核版本。

  • 硬件:x86_64

安装部署

操作系统安装方法
Alibaba Cloud Linux 2
  • 通过yum源安装
    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例
    2. 执行以下命令,选择和内核版本一致的SysAK包名。
      yum search sysak
    3. 执行以下命令,安装SysAK,默认下载SysAK最新版本。
      yum install sysak-4.19.91-26.x86_64
  • 如果无法访问aliyun的yum源
    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例
    2. 下载对应内核最新版本的SysAK rpm包。

      例如,通过uname -a命令查询ECS实例的内核版本为4.19.91-26.al7.x86_64,该内核最新版本的SysAK rpm包是sysak-4.19.91-26-1.3.0-1.al7.x86_64.rpm。执行命令如下:

      wget http://mirrors.aliyun.com/alinux/2.1903/plus/x86_64/Packages/sysak-4.19.91-26-1.3.0-1.al7.x86_64.rpm

      说明 您可以访问镜像源地址,查看对应内核最新版本的SysAK rpm包。

    3. 执行以下命令,安装SysAK。
      rpm -ivh --nodeps <SysAK rpm包安装路径>
      例如,使用wget命令默认安装在root路径,执行命令如下:
      rpm -ivh --nodeps sysak-4.19.91-26-1.3.0-1.al7.x86_64.rpm
Anolis OS 8.4 ANCK
  1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例
  2. 下载对应内核最新版本的SysAK rpm包。

    例如,通过uname -a命令查询ECS实例的内核版本为4.19.91-24.8.1.an8.x86_64,该内核最新版本的SysAK rpm包是sysak-4.19.91-24.8-1.2.1-1.an8.x86_64。执行命令如下:

    wget https://gitee.com/anolis/sysak/ales/10ttach_fi11048/download/sysak-4.19.91-24.8-1.2.1-1.an8.x86_64.rpm

    说明 您可以访问sysak rpm地址,查看对应内核最新版本的SysAK rpm包。

  3. 执行以下命令,安装SysAK。
    rpm -ivh --nodeps <SysAK rpm包安装路径>
    例如,使用wget命令默认安装在root路径,执行命令如下:
    rpm -ivh --nodeps sysak-4.19.91-24.8-1.2.1-1.an8.x86_64.rpm
CentOS 7及其他内核版本大于3.10的Linux系统仅支持开源版本自定义编译安装,可能存在兼容性问题。直接访问SysAK开源地址进行安装。

使用SysAK

使用方法

常用命令说明
sysak help查看SysAK。Usage: sysak [ cmd ] [ subcmd [ cmdargs ] ]
  • cmd:为SysAK管理工具相关命令,包括list、help。
  • subcmd:为SysAK各种工具子功能相关命令。
  • cmdargs: 各个子工具的命令参数。
sysak list -a查看支持的所有子功能。
sysak [subcmd] -h查看每个子功能的具体用法。

SysAK的两种模式

SysAK目前支持监控模式和诊断模式。监控模式下SysAK常驻后台,为运维人员提供系统的各项指标。诊断模式随用随启,主要用于分析系统现象根因。更多信息,请参见SysAK系统监控功能SysAK诊断功能

SysAK系统监控功能

启动监控

您可以通过以下两种方式,使用SysAK自动监控系统各项指标。

  • 执行以下命令,直接启动监控。
    sysak mservice -S
  • 依次执行以下命令,将SysAK监控加入到系统常驻服务中,下次开机自启动。
    systemctl enable sysak
    systemctl start sysak

监控指标

说明 增强特性特指SysAK自身实现的特色功能(指标项)或者SysAK通过Alibaba Cloud Linux、Anolis OS的内核增强特性实现的功能(指标项)。

  • 系统资源
    指标分类类别说明具体指标项增强特性
    计算资源CPUuser用户态CPU使用率
    sys系统态CPU使用率
    hirq中断CPU使用率
    sirq软中断CPU使用率
    LOADload*1秒、5秒、15秒负载
    内存资源内存free内存余量
    used内存使用量
    buffer内存buffer使用量
    cache内存cache使用量
    total内存总量
    mem.util内存使用率
    swapswpinswap换入的page数
    swapoutswap换出的page数
    totalswap的page总量
    swap.utilswap使用率
    IO资源IO访问rrqms每秒向设备发出的合并读取请求数
    wrqms每秒向设备发出的合并写入请求数
    rs每秒向设备发出的读取请求数
    ws每秒向设备发出的写入请求数
    rsecs每秒从设备读取的扇区数
    wsecs每秒写入设备的扇区数
    rqsize向设备发出的请求的平均大小
    qusize向设备发出的请求的平均队列长度
    svctm向设备发出的I/O请求的平均服务时间
    io.utilI/O请求的CPU时间百分比
    磁盘空间bfree剩余数据块数量
    bused已用数据块数量
    btotl数据块总量
    patition.util数据库使用率
    ifree剩余文件节点数量
    itotl文件节点总量
    iutil文件节点使用率
    网络资源网络流量bytin网络接收流量数Byte
    bytout网络发出流量数Byte
    pktin网络收包总量
    pktout网络发包总量
    TCPactivetcp主动建连数
    pasivetcp被动建连数
    isegtcp收包数
    outsegtcp发包数
    UDPidgmudp收包数
    odgmudp发包数
  • 系统瓶颈
    指标分类类别说明具体指标项增强特性
    IO瓶颈读写延迟awaitIO的平均等待时间
    rawaitIO读的平均等待时间
    wawaitIO写的平均等待时间
    内存瓶颈cache回收与碎片整理kswapdkswapd回收次数
    pg_kr异步回收page数
    pg_dr直接回收page数
    kcompdkcompactd规整次数
    dc_all内存直接规整次数
    dc_fin内存直接规整完成次数
    oom发生oom次数
    网络瓶颈网络传输pkterr系统错误包数量
    pktdrp系统丢包数量
    EstResetESTABLISHED状态发生reset次数
    AtmpFailtcp connection尝试失败次数
    retrantcp重传率
    noportudp目的端口/地址不存在次数
    idmerrudp无效包个数
    CPU瓶颈多任务并发cswch系统的上下文切换数
    proc系统fork次数
    就绪队列长时排队rqslow.dltnum就绪队列等待超过阈值的次数SysAK
    rqslow.dlttm就绪队列等待超过阈值的总延时SysAK
    系统软件瓶颈内核临界资源访问noschd.dltnumCPU在sys态驻留超过阈值次数SysAK
    noschd.dlttmCPU在sys态驻留超过阈值总延时SysAK
  • 系统干扰
    指标分类类别说明具体指标项增强特性
    系统干扰长时间关中断延迟irqoff.dltnum系统关中断超过阈值次数SysAK
    irqoff.dlttm系统关中断超过阈值总延时SysAK
  • 容器场景(每个容器的指标)
    指标分类类别说明具体指标项增强特性
    计算资源CPU资源usr/sys/hriq/sirq容器用户态/系统/中断/软中断CPU使用率
    负载信息nrun容器中就绪状态的任务数Alibaba Cloud Linux、Anolis OS
    nunint容器中D阻塞状态任务数
    load*容器中1秒、5秒、10秒的负载情况
    内存资源MEMROY资源total/free/used/cache/buffer容器中内存的总量、剩余、使用、cache、buffer量
    内存瓶颈pgfault容器中缺页异常次数
    pgmajfault容器磁盘交换或者文件映射缺页的次数
    mfailcnt容器发生内存申请失败的次数
    drgl*全局内存回收的延迟时间分布Alibaba Cloud Linux、Anolis OS
    drml*容器中内存回收延迟时间分布
    dcl*容器内存压缩的延迟时间分布
    IO资源IO指标riops容器中读IO个数
    wiops容器中读写IO个数
    rbps容器中的读字节数
    wbps容器中的写字节数
    rwait容器中读等待时间Alibaba Cloud Linux、Anolis OS
    wwait容器中的写等待时间
    rsrv容器中读服务时间
    wsrv容器中写服务时间
    rioq容器中读排队IO个数
    wioq容器中写排队IO个数
    rioqsz容器中读排队的IO字节数
    wioqsz容器中写排队的IO字节数
    rarqsz容器中读IO的平均字节数
    warqsz容器中写IO的平均字节数
    硬件资源资源瓶颈llcref容器LLC访问次数
    llcmis容器LLC miss次数
    CPI容器CPI (cycles per instruction)

服务配置

SysAK监控服务支持对采集的指标项通过配置文件进行配置。配置文件存放在/usr/local/sysak/sysakmon.conf路径下,修改配置后,需要执行systemctl restart sysak命令重启mservice服务。

配置项说明:

  • server_mode http|local:监控服务的监控模式。HTTP模式表示以HTTP服务模式监控;local模式是将数据存放在本地,在本地查看监控数据。
  • cron_period 60:local模式下监控服务的采样周期,默认60秒;HTTP模式不涉及。
  • output_file_path:local模式下监控服务存放日志的路径,默认路径为/usr/local/sysak/log/tsar.data;HTTP模式不涉及。
  • mod_xxx on:on表示开启该监控项,off表示关闭该监控项。

数据查看

模式监控结果查看命令说明
HTTP模式curl http://127.0.0.1:9200/metric/raw/ 

说明 请您根据实际情况替换为实际ECS实例的IP地址。

获取系统所有的监控信息。
curl http://127.0.0.1:9200/metric/cgroup/raw

说明 请您根据实际情况替换为实际ECS实例的IP地址。

获取cgroup资源组的监控信息。
curl http://127.0.0.1:9200/metric/cgroup/$cgroupid/raw

说明 请您根据实际情况替换为实际ECS实例的IP地址。

获取指定资源组$cgroupid的监控信息。
local模式sysak mservice -l交互式地显示监控信息。

SysAK诊断功能

用户场景诊断

命令类别功能命令及说明
ossre_client自动扫描当前系统可能存在的问题。sysak ossre_client [ -a ] [ -p ] [ -i ] 
  • -a:全系统扫描。
  • -p:只扫描系统panic事件。
  • -i:只扫描已知问题。
其他还有一些功能参数可配合ossre服务端进行使用。
loadtask诊断系统load情况,输出load高的原因及负载贡献最多的进程。sysak loadtask [ -m maxload ] [ -i interval ] [ -f outfile ] [ -d ] [ -s ]
  • -m:设置要监控的load值,大于这个值时自动开启诊断。如果不设置,则立即对当前系统进行诊断。
  • -i:监控load时,每次扫描的间隔时长,单位秒。
  • -f:输出信息的存放文件,默认是/var/log/sysak/loadtask.log。
  • -d:后台运行,所有大于maxload的信息都会进行保存。
  • -s:在控制台显示摘要信息。
  •  -g:同时生成全系统火焰图。
iosdiagio诊断工具。sysak iosdiag [ options ] subcmd [ cmdargs ]
  • options
    • -u url:指定URL,将会通过curl命令把诊断日志文件打包上传到该URL,不指定URL不上传。
    • -s latency/hangdetect:停止诊断。
  • subcmd
    • latency:执行io延迟诊断功能。
    • hangdetect:执行io夯诊断功能。
  • cmdargs

    -h,跟在子命令之后显示功能支持参数。

更多信息,请参见iosdiag功能说明

系统底层专项诊断

  • 调度
    命令类别功能命令及说明
    nosched检测系统中内核态长时间占住CPU,导致CPU上的任务无法及时调度运行的问题。sysak nosched [--help] [-t THRESH(ms)] [-f LOGFILE] [-s duration(s)] 
    • -t THRESH:内核不调度的门限时间,超过门限就会进行记录,单位ms。可选,默认10 ms。
    • -f LOGFILE:将log记录到指定文件。可选,默认记录在/var/log/sysak/nosched/nosched.log。
    • -s durations:设置该程序运行多长时间,单位s。可选,默认一直运行。
    更多信息,请参见nosched功能说明
    irqoff检测系统中长时间关闭中断的异常状态。sysak irqoff [--help] [-t THRESH(ms)] [-f LOGFILE] [duration(s)]
    • -t THRESH:关中断的门限时间,超过门限就会记录,单位ms。可选,默认10 ms。
    • -f LOGFILE:将log记录到指定文件。可选,默认记录在/var/log/sysak/irqoff/irqoff.log。
    • durations:设置该程序运行多长时间,单位s。可选,默认一直运行。
    更多信息,请参见irqoff功能说明
    runqslower检测系统中任务调度延迟大的异常情况。sysak runqslower [-s SPAN] [-t TID] [-f LOGFILE] [-P] [THRESH]
    • -s SPAN:设置该程序运行多长时间,单位s。可选,默认一直运行。
    • THRESH:任务被抢占的门限时间,超过门限就记录,单位ms。可选,默认20 ms。
    • -f LOGFILE:将log记录到指定文件。可选,默认记录在/var/log/sysak/runqslow/runqslow.log。
    • -t tid:过滤选项,指定被监控的现场ID。可选,默认监控所有的线程。
    • -P:记录prev任务的name和TID。可选,默认不记录。
    更多信息,请参见runqslower功能说明
  • 内存
    命令类别功能命令及说明
    memleak诊断内核内存泄漏情况,包括slab、vmalloc、buddy内存的泄漏情况,找到泄漏点。sysak memleak [-t type] [-i internal] [-c]
    • -t:内存泄漏类型。
      • slab:slab分配内存泄漏检测。
      • vmalloc:vmalloc分配内存泄漏检测。
      • page:伙伴系统内存分配泄漏检测。
    • -i:指定检测时间,默认300 s。
    •  -c:指定此参数后,只会做快速检测,判断内存是否泄漏,不进行泄漏点的诊断。
    mmaptrace抓取用户态内存泄漏点,提供用户态内存申请调用栈。sysak mmaptrace [ option ] [ args ]
    • -p <pid>: 监控指定pid用户态申请内存情况。
    • -l:设置监控malloc/mmap申请的大小。
    • -s:显示申请内存的用户态调用栈。
    memgraph内存大图工具。sysak memgraph [ option ]
    • -g:显示内存使用大图。
    • -f:显示页缓存详细信息。
    • -a:显示匿名内存详细信息。
    • -k:内存泄漏检测。
    • -l:显示系统线程内存使用情况。
    • -c:显示系统cgroup内存使用情况。
  • IO
    命令类别功能命令及说明
    iofsstat实现从进程和文件级别统计IO信息。sysak iofsstat [-h] [-T TIMEOUT] [-t TOP] [-u UTIL_THRESH] [-b BW_THRESH] [-i IOPS_THRESH] [-c CYCLE] [-d DEVICE] [-p PID] [-j] [-f]
    • -T TIMEOUT:指定命令运行的时长(secs)。
    • -t TOP:报告的top N的最大IO资源使用情况。
    • -u UTIL_THRESH:指定util-thresh作为过滤条件 ,该参数可以过滤util低于此阈值的信息。
    • -b BW_THRESH:指定BW-thresh作为过滤条件。该参数可以过滤bw低于此阈值的信息。
    • -i IOPS_THRESH:指定IOPS-thresh作为过滤条件。该参数可以过滤iops低于此阈值的信息。
    •  -c CYCLE:指定刷新频率(secs)。
    • -d DEVICE:指定监控的disk盘名称。
    • -p PID:指定关注的任务pid。
    • -j,--json:以json-format格式输出。
    • -f,--fs:监控报告指定分区的信息。
  • 网络
    命令类别功能命令及说明
    pingtrace网络延迟探测定界工具。pingtrace [ options ] 
    • -v,--version:显示版本号。
    • -h,--help:帮助信息。
    • -s,--server:以server模式运行。
    • -c,--client ip:以client模式运行。
    • -C:--count UINT:探测报文数量,默认不限。
    • -i <i nterval_us>:以us为单位,报文发送间隔时间。
    • -t < UINT >:以s为单位,程序运行时间。
    • -m,--maxdelay us:ping延时的阈值,只有超过该值的报文数据才会被记录下来,默认为0。
    • -b <I NT=556 >:发送探测报文的大小,至少144字节。
    • --log TEXT=./pingtrace.log:日志文件名称。
    • --logsize INT:日志文件最大占用磁盘空间。
    • --logbackup INT=3:日志文件最多备份数量。
    • --mode auto/pingpong/compact:PingTrace运行模式。
    • -o,--output image/json/log/imagelog:PingTrace数据输出格式。
    • -n,--namespace:探测与net namespace相关的信息。
    • --nslocal:在探测net namespace相关信息时,告知PingTrace client和server运行在同一host上,以避免获取到冗余数据。
    • --userid UINT:在探测net namespace相关信息时,为不同host指定不同userid,以帮助PingTrace识别和修正不同host上时间不同步问题。
    • --debug:打印相关debug信息,主要为libbpf信息。
    skchecktcp和socket泄漏检测工具。sysak skcheck [ options ] [ cmdargs ] 
    • -s:启动泄漏检测。
    • -i:设置开启的socket阈值,默认是2000。
    • -l:设置关闭的socket阈值,默认是500。
  • 性能
    命令类别功能命令及说明
    numa_access显示指定pid、cpu numa信息。sysak numa_access [ options ] [ cmdargs ] 
    • -p <pid>:指定pid。
    • -c <cpu>:指定CPU。
    • -i <time>:设置显示间隔时间。
    hw_eventdocker的硬件事件信息。sysak hw_event [ options ] [ cmdargs ] 
    • -c <name>:指定docker的名字,默认是所有docker。
    • -s <time>:设置运行时间,默认5 s。
  • 虚拟化
    命令类别功能命令及说明
    kvmexittime跟踪诊断虚拟机Vmexit事件。sysak kvmexittime [--help] [-p PID] [-t TID] [interval]
    • -p <pid>:指定pid。
    • -t <tid>:指定tid。
    • interval:跟踪诊断的时间。
    • --help:输出当前命令帮助信息。
  • Generic
    命令类别功能命令及说明
    syscall_slow用于系统调用慢的原因自动分析应用线程锁竞争问题。sysak syscall_slow [-t THRESH(ms)] [-n sys_NR] <[-c COMM] [-p tid]> [-f LOGFILE][duration(s)]
    • -t:当系统调用时间超过该指定门限时就记录,单位ms;可选,默认10 ms。
    • -n:检测指定的系统调用。可选,默认所有系统调用。
    • -c/-p:只检测指定任务名字或者线程ID,二选一。必选。
    • -f:将log记录到指定文件。可选,默认记录在/var/log/sysak/syscall_slow/syscall_slow.log。
    • durations:设置该程序运行多长时间,单位s。可选,默认一直运行。
    更多信息,请参见syscall_slow功能说明
    ulockcheck自动分析应用线程锁竞争问题。sysak ulockcheck -p <pid> | -s <thread pid>| -a | -t <0|1> | -d
    • -p:开始监控指定进程线程锁竞争情况。
    • -a:显示当前锁owner及请锁次数top 5。
    • -s:显示监控线程的锁竞争情况。
    • -t:开启打印开关。如果等锁超过100 ms,会打印线程锁的用户态调用栈。
    • -d:停止监控。
    cpuirq输出CPU上的中断绑定和运行情况。sysak cpuirq [-c cpu -b ] [ -t [ -i interval ] ]
    • -c:指定要查看的CPU。
    • -b:输出指定CPU的中断绑定信息。
    • -t:查看一定时间内产生最多的中断。
    • -i:指定时间间隔softirq。
    softirq统计系统软中断的运行情况(数量、速率等)。sysak softirq [ option ] [ args ]
    • -s:指定初始数据源文件。
    • -r:输出到指定文件。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值