定位服务器问题时, 我们需要各式各样的武器, 诸如 iftop, ifstat, netstat, tcpdump, iostat。dstat 等, 因此工具箱需要装满很多工具, 在面对问题的时候才能显得不费吹灰之力, 迅速定位问题并解决, 保障服务稳定运行。Sysdig 的横空出世, 对我们而言, 就是一把瑞士军刀, 灵活小巧, 武艺多端.
安装
1 2 3 4
| curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add - curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list apt-get update apt-get -y install sysdig
|
常用操作
sysdig 有很多 chisel, chisel 意为 铲子, 可以理解为定位某类问题的工具, sysdig 采用 Lua 编写的。
- 过滤器可以帮助我们从各种输出信息中, 筛选出我们需要的, 比如
proc.name=foo
,
如果你记住不了太多过滤器也无妨, 我们可以借助如下命令查看过滤器
1 2
| sysdig -w tracefile.cap sysdig -r tracefile.dump proc.name=sshd
|
高效的实战
- 服务器上经常需要查看哪个服务带宽占用使用较高, 特别是被 DDOS 的时候。
1
| sudo sysdig -c topprocs_net
|
1
| sudo sysdig -s2000 -A -c echo_fds fd.cip=127.0.0.1
|
- 查看非请求 redis-server 的其他请求进程和句柄
1
| sudo sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=redis-server"
|
1
| sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
|
1
| sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
|
1
| sysdig -c topscalls_time
|
1
| sysdig -A -c echo_fds "fd.filename=syslog"
|
1
| sudo sysdig -c fileslower 1
|
- 监视某个文件是否被操作, 从安全出发想象空间很大哦
1
| sudo sysdig evt.type=open and fd.name contains /etc
|
Sysdig 官网