首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用 Sysdig 监控服务器和 Docker 容器-2

用 Sysdig 监控服务器和 Docker 容器-2

Sysdig 的输出文件的基本操作Sysdig 语法和 tcpdump 类似,特别是保存和读取输出文件的时候。Sysdig 所有的输出都可以保存成一个文件。
写入输出文件:       
# sysdig -w <output file>
例如:
# sysdig -w cyq.scap
读取记录文件
你一旦写了一个输出文件,就需要用 Sysdig 读取这个文件,这可以通过 -r 参数:       
# sysdig -r output file
清单 1 是操作过程和输出界面。
清单 1. Sysdig 监控 Docker 容器的示意图
1
2
3
4
5
6
7
8
9
10
11
12
13
#sysdig -r cyq.scap
  1 23:44:57.964150879 0 <NA> (7) > switch next=6200(sysdig)
  2 23:44:57.966700100 0 rsyslogd (358) < read res=414 data=<6>
[ 3785.473354] sysdig_probe: starting capture.<6>[ 3785.473523] sysdig_probe:
  3 23:44:57.966707800 0 rsyslogd (358) > gettimeofday
  4 23:44:57.966708216 0 rsyslogd (358) < gettimeofday
  5 23:44:57.966717424 0 rsyslogd (358) > futex addr=13892708
op=133(FUTEX_PRIVATE_FLAG|FUTEX_WAKE_OP) val=1
  6 23:44:57.966721656 0 rsyslogd (358) < futex res=1
  7 23:44:57.966724081 0 rsyslogd (358) > gettimeofday
  8 23:44:57.966724305 0 rsyslogd (358) < gettimeofday
  9 23:44:57.966726254 0 rsyslogd (358) > gettimeofday
  10 23:44:57.966726456 0 rsyslogd (358) < gettimeofday




按 ASCII 格式输出
sysdig 默认按照二进制保存文件,但你可以通过使用 -A 标记得到 ASCII 格式的输出。
1
# sysdig -A




例如       
1
2
3
# sysdig -A > /tmp/cjhout.txt
# cat /tmp/cjhout.txt
1 22:26:15.076829633 0 <NA> (7) > switch next=11920(sysdig)




上面的例子把输出重定位到一个文本文件。如果你想保存文件并在一个没有安装 Sysdig 的系统上检查数据,就可以这样做。
Sysdig 的过滤器Sysdig 过滤器和 tcpdump 很像,Sysdig 命令也有过滤器,可以用来过滤输出,得到特定的信息 。通过过滤器(可同时应用于实时数据和记录文件)组合,以获取更多有用的输出。
过滤器遵从“类 . 字段”结构。例如:
fd.cip:客户端 IP 地址。
evt.dir:事件方向,可以是‘ > ’用于进入事件,或‘ < ’用于退出事件。
完整的过滤器列表可以通过以下命令显示:
1
# sysdig -l




使用过滤器例子
抓取特定的进程
你可以使用“proc.name” 过滤器去抓取特定进程的所有 Sysdig 事件。下面的例子中过滤了所有名字中包含 Docker 的进程。
1
# sysdig -r cyq.scap proc.name=docker




Sysdig 中的 chisel(凿子)chisel 是用 Lua 语言编写的脚本,用来分析和处理 Sysdig 产生的事件。 Sysidg 会在下列目录中查找 chisel:., ./chisels, ~/chisels 和 /usr/share/sysdig/chisels。
首先列出 Sysdig 所有可以使用的 chisel 如图 4 。
# sysdig -cl
图 4.Sysdig 的 chisel(凿子)默认有以下类目可用,各个类目中分布有多个内建的 chisel。
CPU Usage:CPU 使用量
Errors:错误
I/O
Logs:日志
Misc:混杂
Net:网络
Performance:性能
Security:安全
System State:系统状态
如果想查看关于某个 chisel 的详细信息,可以使用 -i 选项:
要显示指定 chisel 的信息(包括详细的命令行用法),运行以下命令:
1
# sysdig – i [chisel 名称 ]




例如,我们可以检查“CPU”类目下关于 topprocs_cpu 凿子的信息:
1
# sysdig – i topprocs_cpu




你可以通过 -c 标记和指定 chisel,让 Sysdig 来运行这个 chisel。
例如:
1
# sysdig -c topprocs_net




带过滤器运行 chisel
运行 chisel 时候,可以使用对特定的事件使用过滤器。例如抓取一个特定进程的所有网络流量
下面这个例子显示对 sshd 进程使用 echo_fds 凿子。
1
# sysdig -A -c echo_fds proc.name=sshd




抓取一个特定 IP 的网络流量交换
这里使用 echo_fds chisel 和 fd.cip 过滤器 ,显示单独一个 IP 所有的网络流量。
1
# sysdig -A -c echo_fds fd.cip=192.168.1.11




使用 csysdigcsysdig 就是运 ncurses 库的用户界面的 sysdig 软件包,Ncurses 是一个能提供功能键定义 ( 快捷键 ), 屏幕绘制以及基于文本终端的图形互动功能的动态库。在 sysdig 软件包里还提供了一个工具 csysdig,该工具执行后,运行界面和 top 命令类似。csysdig 工作界面如图 5。
图 5.csysdig 工作界面csysdig 使用如下快捷键:
P:暂停屏幕输出信息
Enter:进入当前突出显示的条目。
Ctrl+F:列表搜索。
F1- 帮助信息
F2- 显示视图选择器。这将让你切换到另一个视图。
F4- 使用过滤器
F5- 查看 IO 输出信息
F7 显示帮助页面当前显示的视图。
F8 打开视图的操作面板。
F9,打开列排序面板。
Q 放弃退出。
Arrows, PgUP, PgDn, Home, End:图标上下左右的移动控制。
下面看看两个例子
查看计算机上运行的容器列表及其资源使用情况 如图 6。
#csysdig -vcontainers
图 6.查看计算机上运行的容器列表及其资源使用情况查看容器上下文的进程列表如图 7 。
#csysdig -pc
图 7. 查看容器上下文的进程列表
返回列表