全部产品
Search
文档中心

Alibaba Cloud Linux:系统运维工具集SysAK使用说明

更新时间:Oct 19, 2023

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

运维场景

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

  • 日常监控:针对各种系统资源更精细化的资源监控,帮助业务运维实现细粒度的运维调度和资源控制。除此之外,还实现了许多增强的系统指标,实时监控系统的干扰和抖动等情况。

  • 问题诊断:针对负载异常、网络抖动、内存泄露、IO夯、性能异常等情况提供线上诊断功能。 同时减少工具的专业性,可操作性强。

  • 故障修复:对于非整机异常的问题(例如死锁、夯机等), 该工具提供介入能力对系统进行恢复或故障隔离。

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

安装SysAK

环境要求

  • 操作系统:Alibaba Cloud Linux 2/3、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
  • 如果无法访问aliyun的yum源

    1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 下载对应内核最新版本的SysAK rpm包。

      例如:

      wget https://mirrors.openanolis.cn/sysak/packages/sysak-1.3.0-2.x86_64.rpm
      说明

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

    3. 执行以下命令,安装SysAK。

      rpm -ivh --nodeps <SysAK rpm包安装路径>

      例如,使用wget命令默认安装在root路径,执行命令如下:

      rpm -ivh --nodeps sysak-1.3.0-2.x86_64.rpm

Anolis OS 8.4 ANCK

  1. 远程连接ECS实例。具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 下载对应内核最新版本的SysAK rpm包。

    例如:

    wget https://mirrors.openanolis.cn/sysak/packages/sysak-1.3.0-2.x86_64.rpm
    说明

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

  3. 执行以下命令,安装SysAK。

    rpm -ivh --nodeps <SysAK rpm包安装路径>

    例如,使用wget命令默认安装在root路径,执行命令如下:

    rpm -ivh --nodeps sysak-1.3.0-2.x86_64.rpm

CentOS 7及其他内核版本大于3.10的Linux系统

仅支持开源版本自定义编译安装,可能存在兼容性问题。直接访问SysAK开源地址进行安装。

使用SysAK

警告

SysAK系统在运行诊断和监控功能时,会在内核中hook一些函数,可能会导致系统无法正常运行。请您选择合适的窗口期执行诊断和监控命令。

使用方法

常用命令

说明

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的内核增强特性实现的功能(指标项)。

  • 系统资源

    指标分类

    类别说明

    具体指标项

    增强特性

    计算资源

    CPU

    user

    用户态CPU使用率

    sys

    系统态CPU使用率

    hirq

    中断CPU使用率

    sirq

    软中断CPU使用率

    LOAD

    load*

    1秒、5秒、15秒负载

    内存资源

    内存

    free

    内存余量

    used

    内存使用量

    buffer

    内存buffer使用量

    cache

    内存cache使用量

    total

    内存总量

    mem.util

    内存使用率

    swap

    swpin

    swap换入的page数

    swapout

    swap换出的page数

    total

    swap的page总量

    swap.util

    swap使用率

    IO资源

    IO访问

    rrqms

    每秒向设备发出的合并读取请求数

    wrqms

    每秒向设备发出的合并写入请求数

    rs

    每秒向设备发出的读取请求数

    ws

    每秒向设备发出的写入请求数

    rsecs

    每秒从设备读取的扇区数

    wsecs

    每秒写入设备的扇区数

    rqsize

    向设备发出的请求的平均大小

    qusize

    向设备发出的请求的平均队列长度

    svctm

    向设备发出的I/O请求的平均服务时间

    io.util

    I/O请求的CPU时间百分比

    磁盘空间

    bfree

    剩余数据块数量

    bused

    已用数据块数量

    btotl

    数据块总量

    patition.util

    数据库使用率

    ifree

    剩余文件节点数量

    itotl

    文件节点总量

    iutil

    文件节点使用率

    网络资源

    网络流量

    bytin

    网络接收流量数Byte

    bytout

    网络发出流量数Byte

    pktin

    网络收包总量

    pktout

    网络发包总量

    TCP

    active

    tcp主动建连数

    pasive

    tcp被动建连数

    iseg

    tcp收包数

    outseg

    tcp发包数

    UDP

    idgm

    udp收包数

    odgm

    udp发包数

  • 系统瓶颈

    指标分类

    类别说明

    具体指标项

    增强特性

    IO瓶颈

    读写延迟

    await

    IO的平均等待时间

    rawait

    IO读的平均等待时间

    wawait

    IO写的平均等待时间

    内存瓶颈

    cache回收与碎片整理

    kswapd

    kswapd回收次数

    pg_kr

    异步回收page数

    pg_dr

    直接回收page数

    kcompd

    kcompactd规整次数

    dc_all

    内存直接规整次数

    dc_fin

    内存直接规整完成次数

    oom

    发生oom次数

    网络瓶颈

    网络传输

    pkterr

    系统错误包数量

    pktdrp

    系统丢包数量

    EstReset

    ESTABLISHED状态发生reset次数

    AtmpFail

    tcp connection尝试失败次数

    retran

    tcp重传率

    noport

    udp目的端口/地址不存在次数

    idmerr

    udp无效包个数

    CPU瓶颈

    多任务并发

    cswch

    系统的上下文切换数

    proc

    系统fork次数

    就绪队列长时排队

    rqslow.dltnum

    就绪队列等待超过阈值的次数

    SysAK

    rqslow.dlttm

    就绪队列等待超过阈值的总延时

    SysAK

    系统软件瓶颈

    内核临界资源访问

    noschd.dltnum

    CPU在sys态驻留超过阈值次数

    SysAK

    noschd.dlttm

    CPU在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/metrics/raw/

说明

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

获取系统所有的监控信息。

curl http://127.0.0.1:9200/metrics/cgroup/raw

说明

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

获取cgroup资源组的监控信息。

curl http://127.0.0.1:9200/metrics/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:同时生成全系统火焰图。

iosdiag

io诊断工具。

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

    网络延迟探测定界工具。

    sysak pingtrace [ options ]

    • -v,--version:显示版本号。

    • -h,--help:帮助信息。

    • -s,--server:以server模式运行。

    • -c,--client ip:以client模式运行。

    • -C:--count UINT:探测报文数量,默认不限。

    • -i <interval_us>:以us为单位,报文发送间隔时间。

    • -t < UINT >:以s为单位,程序运行时间。

    • -m,--maxdelay us:ping延时的阈值,只有超过该值的报文数据才会被记录下来,默认为0。

    • -b <INT=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信息。

    skcheck

    tcp和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_event

    docker的硬件事件信息。

    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:输出到指定文件。