Sysdig 在操作系统层面进行监听,并将系统调用及系统事 件等系统活动捕获下来,这使得它看起来极像面向系统的 tcpdump 或 Wireshark。如果你打算对系统中的异常故障进行排查,那么 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 (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 (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 (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 (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 (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 (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 (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。

sysdig_Sysdig: 系统故障排查利器相关推荐

  1. 性能调优之综合篇 - Linux系统性能监控和故障排查利器Sysdig

    Sysdig绝对是可以跟SystemTap相媲美的工具,都是系统故障排查的利器,不论是开发人员还是运维人员都必须要掌握的一个工具.今天先介绍一下Sysdig的一些特性.官网上说Sysdig是Strac ...

  2. Linux系统故障排查和修复技巧

    (一)单用户模式 Linux系统提供了单用户模式(类似Windows安全模式),可以在最小环境中进行系统维护.在单用户模式(运行级别1)中,Linux引导进入根shell,网络被禁用,只有少数进程运行 ...

  3. linux系统日志排故方案,Linux系统故障排查思路与常见案例

    Linux系统故障排查思路与常见案例 1.Linux系统日志与分类 内核及系统日志 这种日志数据由系统服务syslog统一管理,根据其主配置文件"/etc/syslog.conf" ...

  4. 运维人员打字耍不要快_Linux运维人员应该知道的系统故障排查及修复方法

    今天小编要跟大家分享的文章是关于Linux运维人员应该知道的系统故障排查及修复方法.熟悉Linux的小伙伴都知道,Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,小编在文章中分享了几个 ...

  5. java线上排查利器arthas

    当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支 ...

  6. Linux 系统故障排查和修复技巧

    点击上方"民工哥技术之路"选择"置顶或星标" 每天10点为你分享不一样的干货 来源:csghjnbj blog.chinaunix.net/uid-265677 ...

  7. Linux启动hbase的shell命令出现警告_Linux 系统故障排查和修复技巧

    我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应用单用户模式.GRUB命令操作.Linux救援模式的故障修复案例帮助大家了解此类问题的解决. (一)单用户模式 ...

  8. 信息系统故障分析案例---------记一次性能检测系统故障排查

    2018年10月10日凌晨2点接到信调值班员电话,单位信息运维统一监管(I6XXX)系统报警显示公司门户和网站系统性能检测报警,页面访问响应时长和模拟登录功能异常,实际情况是网站和门户系统运行正常,稍 ...

  9. linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高

    摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...

  10. EMAS远程日志 - 移动端问题排查利器

    远程日志是什么?具体做了哪些事情?内部是怎么实现的?本文将从 功能.架构.体验优化三个方面来介绍一下远程日志发展过程及展望. 阿里云 云原生应用研发平台EMAS 张月(此间) 前言 当 App 发布到 ...

最新文章

  1. 你必须拥有的Python调试神器
  2. SCCM 2007 R2部署、操作详解系列之部署篇
  3. ecmobile实现支付宝支付和百度云推送遇到的问题及解决方案(android)
  4. windows桌面快捷方式图标上面怎么老是会产生一个问号解决方案
  5. 手动为 SAP Spartacus 添加 SSR 支持的步骤
  6. reactor多线程模型_网络编程模型的演进之路
  7. matebookxpro上鸿蒙系统,华为MateBook X Pro对比MacBook Pro该买谁?
  8. Java剪切板操作大全
  9. 生产系统服务器是啥意思,生产系统服务器主机名怎么看
  10. Linux内存管理:分页机制
  11. indexOf与includes的区别
  12. 用wxpython编写登录界面_wxpython+pymysql实现用户登陆功能
  13. 黑苹果EFI大全下载,拥有各种电脑机型配置!
  14. python文档中文版下载,python帮助文档中文版
  15. 文件或图片上传到服务器的流程,2019中级报名照片上传流程,及报名照片审核处理工具使用方法...
  16. 清华大学计算机系本科自考,清华大学自考专业有哪些
  17. python八皇后问题递归算法_八皇后问题--递归回溯算法(Python实现)
  18. localhost拒绝连接解决办法
  19. 通过图形界面对MySQL数据库进行操作
  20. 最小生成树:Prim算法 /Kruskal算法(待深入复习理解)

热门文章

  1. Graph U-Nets [gPool gUnpool] 图分类 节点分类 图池化 ICML 2019
  2. 因为毕业半年挣了100万,帅地在CSDN被喷上热榜
  3. 力扣刷题 DAY_77 贪心
  4. vue.esm.js:632 [Vue warn]: Unknown custom element: <router-link> - did you register the component co
  5. 居然打不开msi文件?
  6. 计算机网络辅助英语写作,基于计算机网络的英语写作教学
  7. 减法公式运算法则_六年级数学各种运算法则与学习方法
  8. 火狐浏览器打开IE窗口/IE跳谷歌页面等 --- 自定义协议---手动执行注册表
  9. Spark on Hive Hive on Spark,傻傻分不清楚
  10. camera 添加外挂pmic进行供电的涉及