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 |
|
Anolis OS 8.4 ANCK |
|
CentOS 7及其他核心版本大於3.10的Linux系統 | 僅支援開源版本自訂編譯安裝,可能存在相容性問題。直接存取SysAK開源地址進行安裝。 |
使用SysAK
SysAK系統在運行診斷和監控功能時,會在核心中hook一些函數,可能會導致系統無法正常運行。請您選擇合適的視窗期執行診斷和監控命令。
使用方法
常用命令 | 說明 |
| 查看SysAK。
|
| 查看支援的所有子功能。 |
| 查看每個子功能的具體用法。 |
SysAK的兩種模式
SysAK目前支援監控模式和診斷模式。監控模式下SysAK常駐後台,為營運人員提供系統的各項指標。診斷模式隨用隨啟,主要用於分析系統現象根因。更多資訊,請參見SysAK系統監控功能和SysAK診斷功能。
SysAK系統監控功能
啟動監控
您可以通過以下兩種方式,使用SysAK自動監控系統各項指標。
執行以下命令,直接啟動監控。
sudo sysak mservice -S執行以下命令,將SysAK監控加入到系統常駐服務中開機自啟動。
sudo systemctl enable sysak sudo 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模式 |
說明 請您根據實際情況替換為實際ECS執行個體的IP地址。 | 擷取系統所有的監控資訊。 |
說明 請您根據實際情況替換為實際ECS執行個體的IP地址。 | 擷取cgroup資源群組的監控資訊。 | |
說明 請您根據實際情況替換為實際ECS執行個體的IP地址。 | 擷取指定資源群組$cgroupid的監控資訊。 | |
local模式 |
| 互動式地顯示監控資訊。 |
SysAK診斷功能
使用者情境診斷
命令類別 | 功能 | 命令及說明 |
ossre_client | 自動掃描當前系統可能存在的問題。 |
其他還有一些功能參數可配合ossre服務端進行使用。 |
loadtask | 診斷系統load情況,輸出load高的原因及負載貢獻最多的進程。 |
|
iosdiag | io診斷工具。 |
更多資訊,請參見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:輸出到指定檔案。