如何通过sysdig深入探究容器内具体系统调用细节?
摘要:使用sysdig查看容器里的系统调用,sysdig -p '*%evt.num %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.args&#x
目录一.系统环境二.前言三.系统调用简介四.Sysdig简介五.使用sysdig查看容器里的系统调用5.1 以二进制包的形式安装sysdig5.2 使用sysdig查看容器里的系统调用5.3 以容器的方式运行sysdig六.总结:
一.系统环境
本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。
服务器版本
docker软件版本
Kubernetes(k8s)集群版本
CPU架构
Ubuntu 18.04.5 LTS
Docker version 20.10.14
v1.22.2
x86_64
Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。
服务器
操作系统版本
CPU架构
进程
功能描述
k8scludes1/192.168.110.128
Ubuntu 18.04.5 LTS
x86_64
docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico
k8s master节点
k8scludes2/192.168.110.129
Ubuntu 18.04.5 LTS
x86_64
docker,kubelet,kube-proxy,calico
k8s worker节点
k8scludes3/192.168.110.130
Ubuntu 18.04.5 LTS
x86_64
docker,kubelet,kube-proxy,calico
k8s worker节点
二.前言
在现代的微服务架构中,容器化技术已经成为了标准。然而,随着服务的复杂性增加,监控和调试也变得越来越困难。Sysdig是一种强大的系统和网络安全监控工具,它可以帮助我们深入理解容器内部的系统调用。本文将介绍如何使用Sysdig来查看容器内的系统调用。
使用sysdig查看容器里的系统调用的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/17632858.html。
三.系统调用简介
系统调用是操作系统提供的接口,应用程序可以通过它来请求操作系统的服务。例如,读写文件、创建进程等。通过分析系统调用,我们可以更好地理解应用程序的行为。
四.Sysdig简介
Sysdig是一个强大的系统和网络安全监控工具,它可以捕获和分析系统和网络活动。Sysdig可以提供实时的系统和网络视图,以及详细的事件信息。它支持多种平台,包括Linux、macOS和Windows。
默认情况下,sysdig 在一行中打印每个事件的信息,格式如下:
root@k8scludes3:~# sysdig
34378 12:02:36.269753803 2 echo (7896) > close fd=3(/usr/lib/locale/locale-archive)
34379 12:02:36.269754164 2 echo (7896) < close res=0
34380 12:02:36.269781699 2 echo (7896) > fstat fd=1(/dev/pts/3)
*%evt.num %evt.time %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.args
evt.num 是增量事件编号
evt.time 是事件时间戳
evt.cpu 是捕获事件的 CPU 编号
proc.name 是生成事件的进程的名称
thread.tid 是产生事件的TID,对应单线程进程的PID
evt.dir 是事件方向,> 表示进入事件,< 表示退出事件
evt.type 是事件的名称,例如 ‘open’ 或 ‘read’
evt.args 是事件参数的列表。
