Sysdig: 系统故障排查利器

标签: Apps | 发表时间:2015-01-15 11:36 | 作者:Toy
出处:https://linuxtoy.org

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 <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 捕获的结果如上所示,每列的意思分别为:

  1. 事件编号
  2. 时间戳
  3. CPU 编号
  4. 进程名
  5. 线程 ID
  6. 事件方向,> 为进入事件,< 为退出事件
  7. 事件类型,比如 open、read 等
  8. 事件参数列表

过滤捕获结果

在默认情况下,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。

分类: Apps | 永久链接 | Email 给好友 | 无评论 | 捐助本站

相关 [sysdig 系统] 推荐:

Sysdig: 系统故障排查利器

- - LinuxTOY
Sysdig 在操作系统层面进行监听,并将系统调用及系统事 件等系统活动捕获下来,这使得它看起来极像面向系统的 tcpdump 或 Wireshark. 如果你打算对系统中的异常故障进行排查,那么 Sysdig 将成为你解决问题得心应手的利器. 在 Linux 上,可使用以下命令来安装 Sysdig:.

壳系统

- Vernsu - It Talks-魏武挥的blog
经常有人被我问到“你用什么浏览器”时的答案是:傲游啦360啦,但事实上,这些都不是真正的浏览器,从技术角度讲,充其量只是在IE浏览器上加一个壳罢了. 在国外,壳浏览器是以“皮肤”的形式存在,纯属为了美化浏览器而用. 但在中国,壳浏览器成了一门生意. 奇虎的主要收入来源并非来自那个由于一场商战而赫赫有名的安全卫士,而是来自于360浏览器(它有两个版本,分别以IE和Chrome为内核).

秒杀系统

- - 开源软件 - ITeye博客
秒杀系统架构分析与实战. (反馈非常好的文章,推荐). (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货. (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;. 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:.

Ext文件系统

- Haides - 博客园-首页原创精华区
  虽然从Ext2到Ext4,找数据的方式发生了变化,但是,磁盘的布局还是非常相似的. 其实这个东西也不需要变化,因为现在也没什么特别巧妙的方式,而且磁盘的吞吐量、效率的瓶颈也不在这里. 当然,这里排除那些根据自身文件特点设计的数据库,毕竟还是为了支持通用文件.   Boot在第一个块,放的应该是引导程序,超级块就放在了第二个块上,如果不是可以在mount的时候通过参数sb来设置.

HBase 系统架构

- - 博客园_首页
HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问. HBase的目标是存储并处理大型的数据. HBase是一个开源的,分布式的,多版本的,面向列的存储模型. 5 可在廉价PC Server搭建大规模结构化存储集群. HBase是Google BigTable的开源实现,其相互对应如下:.

Linux系统监控

- - CSDN博客系统运维推荐文章
查看所有的进程和端口使用情况:. 查看nginx并发(连接数)进程数:. 查看当网络连接状态中,已建立连接的数量:. 查看系统tcp连接中各个状态的连接数. 输出每个ip的连接数,以及总的各个状态的连接数. df -hl 查看磁盘使用情况 . df -hl 查看磁盘剩余空间. df -h 查看每个根路径的分区大小.

mysql 权限系统

- - 数据库 - ITeye博客
mysql 权限系统控制一个用户是否能进行连接,以及连接后能够针对那些对象进行什么操作. mysql权限控制包含两个阶段. 2:检查用户是否具有所执行动作的权限. 本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为:. 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利.

银行核心系统-贷款系统【信贷系统】

- - ITeye博客
一、         贷款业务. 贷款按期限分为短期、中期与长期贷款,短期贷款是指期限在1年以内的贷款,中期贷款是指期限在1年(含1年)至3年(含3年)之间的贷款,长期贷款是指期限超过3年的贷款. 贷款的种类目前有个人助学贷款和个人住房贷款:. l     个人助学贷款:须提供两位担保人,无须质押物,贷款额度不超过人民币10万元.

理解Linux系统负荷

- Adam - 阮一峰的网络日志
如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行). (另外,它们在苹果公司的Mac电脑上也适用. 你在终端窗口键入uptime,系统会返回一行信息. 这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小.

iPhone通知系统改进

- armgod - 月光博客
  不管是对比 Android 还是 WebOS ,iOS 的通知系统都只能用低能来形容,也是最让用户不满意的地方之一. 简单列举一些iOS的通知系统不足的地方. 你必须记得是哪个程序通知的你,不记得的话就只能在满屏的 app 中找到上一条或者上几条通知,实在是一件痛苦的事情. 不管你现在做什么都会被打断,只要来了通知就弹出,并且置顶获取焦点,比如你正在玩切水果,刚要破记录了,来一个短信,游戏暂停,短信置顶,节奏都被打乱了.