2024年11月Linux如何使用Sysdig排查系统故障

发布时间:

  ⑴Sysdig是一款系统调试工具,能够对系统进行故障排查和监控,在系统故障的时候非常实用,下面小编就给大家介绍下Linux使用Sysdig排除故障的方法,感兴趣的朋友可以来了解下。

  ⑵在 Linux 上,可使用以下命令来安装 Sysdig:

  ⑶curl -s | sudo bash

  ⑷这将把 Sysdig 安装到 rpm 或 deb 系的 Linux 系统。

  ⑸实时捕获,结果打印到标准输出:

  ⑹将捕获结果保存到文件 system.scap,方便稍后分析:

  ⑺sysdig -w system.scap

  ⑻捕获指定的事件数 并保存到文件:

  ⑼sysdig -n -w system.scap

  ⑽读取已捕获的文件:

  ⑾sysdig -r system.scap

  ⑿( ( ( ( ( ( ( (

  ⒀ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ⒁ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ⒂ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ⒃ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ⒄ ::. sysdig ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒅ ::. 《NA》 ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒆ ::. 《NA》 ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒇ ::. 《NA》 ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒈ ::. 《NA》 ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒉ ::. 《NA》 ( 》 switch next=(ml pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒊ ::. ml ( 《 poll res= fds=

  ⒋ ::. ml ( 》 poll fds= timeout=

  ⒌ ::. ml ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒍ ::. 《NA》 ( 》 switch next=(memcached pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒎ ::. memcached ( 《 epoll_wait res=

  ⒏ ::. memcached ( 》 epoll_wait maxevents=

  ⒐ ::. memcached ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒑ ::. 《NA》 ( 》 switch next=(plugin-containe pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⒒ ::. plugin-containe ( 《 poll res= fds=

  ⒓ ::. plugin-containe ( 》 getrlimit resource=(RLIMIT_STACK

  ⒔通过 Sysdig 捕获的结果如上所示,每列的意思分别为:

  ⒕事件方向,》 为进入事件,《 为退出事件

  ⒖事件类型,比如 open、read 等

  ⒗在默认情况下,Sysdig 捕获的信息非常多,要从中找到我们感 兴趣的信息,这就需要类似 grep 的过滤功能。

  ⒘按字段类别进行过滤:

  ⒙sysdig -r system.scap proc.name=sysdig

  ⒚这条命令过滤出进程名为 sysdig 的系统事件,结果为:

  ⒛ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ① ::. sysdig ( 》 sysdigevent event_type= event_data=

  ② ::. sysdig ( 》 sysdigevent event_type= event_data=

  ③ ::. sysdig ( 》 sysdigevent event_type= event_data=

  ④ ::. sysdig ( 》 switch next= pgft_maj= pgft_min= vm_size= vm_rss= vm_swap=

  ⑤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

  ⑨在 Sysdig 中,chisels 是通过 Lua 编写的脚本,可以用来扩展 Sysdig 的过滤功能。

  ⑩比如我们想看读写磁盘文件最频繁的进程,可以使用 topprocs_file 这个 chisels:

  Ⅰsysdig -c topprocs_file

  ⅡBytes Process

  Ⅲ------------------------------

  Ⅳ.KB mozStorage

  Ⅴ.KB perl

  Ⅵ.KB tmux

  Ⅶ.KB X

  Ⅷ.KB urxvtd

  Ⅸ更多 chisels,可通过 sysdig -cl 了解。当然,如果你熟悉 Lua, 那么也可以编写自己的 chisels。

  Ⅹ上面就是Linux使用Sysdig的方法介绍了,通过使用Sysdig命令,及时捕获Linux系统的故障信息,并针对问题进行相关修复,保证Linux系统的性能保持在最佳状态。