歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Linux如何使用Sysdig排查系統故障

Linux如何使用Sysdig排查系統故障

日期:2017/3/2 10:30:51   编辑:Linux維護

Sysdig是一款系統調試工具,能夠對系統進行故障排查和監控,在系統故障的時候非常實用,下面小編就給大家介紹下Linux使用Sysdig排除故障的方法,感興趣的朋友可以來了解下。

在 Linux 上,可使用以下命令來安裝 Sysdig:

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

這將把 Sysdig 安裝到 rpm 或 deb 系的 Linux 系統。

捕獲系統活動

實時捕獲,結果打印到標准輸出:

sysdig

將捕獲結果保存到文件 system.scap,方便稍後分析:

sysdig -w system.scap

捕獲指定的事件數 200 並保存到文件:

sysdig -n 200 -w system.scap

讀取已捕獲的文件:

sysdig -r system.scap

捕獲結果解釋

(1) (2) (3) (4) (5) (6) (7) (8)

1 10:54:50.462463956 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

2 10:54:50.462603110 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

3 10:54:50.462729565 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

4 10:54:50.462859521 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

5 10:54:50.463206317 0 sysdig (29043) 》 switch next=0 pgft_maj=0 pgft_min=1790 vm_size=35748 vm_rss=7164 vm_swap=0

6 10:54:50.464246835 0 《NA》 (0) 》 switch next=7 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

7 10:54:50.464249707 2 《NA》 (0) 》 switch next=8374 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

8 10:54:50.464255940 0 《NA》 (7) 》 switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

9 10:54:50.464264256 2 《NA》 (8374) 》 switch next=0 pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

10 10:54:50.464358113 2 《NA》 (0) 》 switch next=854(mlnet) pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

11 10:54:50.464370099 2 mlnet (854) 《 poll res=0 fds=

12 10:54:50.464378193 2 mlnet (854) 》 poll fds= timeout=5

13 10:54:50.464385400 2 mlnet (854) 》 switch next=0 pgft_maj=216 pgft_min=3386 vm_size=162608 vm_rss=12196 vm_swap=2716

14 10:54:50.464950541 0 《NA》 (0) 》 switch next=1105(memcached) pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

15 10:54:50.464954692 0 memcached (1105) 《 epoll_wait res=0

16 10:54:50.464976007 0 memcached (1105) 》 epoll_wait maxevents=32

17 10:54:50.464984030 0 memcached (1105) 》 switch next=0 pgft_maj=3 pgft_min=247 vm_size=327412 vm_rss=1860 vm_swap=468

18 10:54:50.465256687 2 《NA》 (0) 》 switch next=2181(plugin-containe) pgft_maj=0 pgft_min=0 vm_size=0 vm_rss=0 vm_swap=0

19 10:54:50.465261465 2 plugin-containe (2181) 《 poll res=0 fds=

20 10:54:50.465297692 2 plugin-containe (2181) 》 getrlimit resource=3(RLIMIT_STACK)

通過 Sysdig 捕獲的結果如上所示,每列的意思分別為:

事件編號

時間戳

CPU 編號

進程名

線程 ID

事件方向,》 為進入事件,《 為退出事件

事件類型,比如 open、read 等

事件參數列表

過濾捕獲結果

在默認情況下,Sysdig 捕獲的信息非常多,要從中找到我們感 興趣的信息,這就需要類似 grep 的過濾功能。

按字段類別進行過濾:

sysdig -r system.scap proc.name=sysdig

這條命令過濾出進程名為 sysdig 的系統事件,結果為:

1 10:54:50.462463956 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

2 10:54:50.462603110 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

3 10:54:50.462729565 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

4 10:54:50.462859521 0 sysdig (29043) 》 sysdigevent event_type=1 event_data=0

5 10:54:50.463206317 0 sysdig (29043) 》 switch next=0 pgft_maj=0 pgft_min=1790 vm_size=35748 vm_rss=7164 vm_swap=0

Sysdig 提供包括 fd、process、evt、user、group、syslog 等字段 類別,可通過 sysdig -l 查詢。

除 = 外,Sysdig 的過濾表達式還支持 !=、《、《=、》、》= 及 contains 等比較操作符。

同時,也可以使用 and、or、not 等布爾操作符。例如:

sysdig -r system.scap proc.name=sysdig and evt.type=switch

Chisels

在 Sysdig 中,chisels 是通過 Lua 編寫的腳本,可以用來擴展 Sysdig 的過濾功能。

比如我們想看讀寫磁盤文件最頻繁的進程,可以使用 topprocs_file 這個 chisels:

sysdig -c topprocs_file

結果為:

Bytes Process

------------------------------

448.36KB mozStorage

220.38KB perl

1.69KB tmux

1.62KB sh

1.59KB Xorg

1.30KB urxvtd

更多 chisels,可通過 sysdig -cl 了解。當然,如果你熟悉 Lua, 那麼也可以編寫自己的 chisels。

上面就是Linux使用Sysdig的方法介紹了,通過使用Sysdig命令,及時捕獲Linux系統的故障信息,並針對問題進行相關修復,保證Linux系統的性能保持在最佳狀態。

Copyright © Linux教程網 All Rights Reserved