分析容器系统调用:Sysdig

2023-11-03

Sysdig is an open-source, cross-platform, powerful and flexible system monitoring and troubleshooting tool for Linux; it also works on Windows and Mac OSX but with limited functionality and can be used for system analysis, inspection and debugging.

Normally, you would employ a mix of various Linux performance monitoring and troubleshooting tools including these ones listed below to perform the Linux monitoring and debugging tasks:

  1. strace – discover system calls and signals to a process.
  2. tcpdump – raw network traffic monitoring.
  3. netstat – network connections monitoring.
  4. htop – real time process monitoring.
  5. iftop – real time network bandwidth monitoring.
  6. lsof – view which files are opened by which process.

However, sysdig integrates what all the above tools and many more, offer in a single and simple program, more so with amazing container support. It enables you to capture, save, filter and examine the real behavior (stream of events) of Linux systems as well as containers.

It comes with a command line interface and a powerful interactive UI (csysdig) which allow you to watch system activity in real time, or perform a trace dump and save for later analysis. 

Sysdig Features:

  • It is fast, stable and easy-to-use with comprehensively well documented.
  • Comes with native support for container technologies, including Docker, LXC.
  • It is scriptable in Lua; offers chisels (lightweight Lua scripts) for processing captured system events.
  • Supports useful filtering of output.
  • Supports system and application tracing.
  • It can be integrated with Ansible, Puppet and Logstash.
  • Enable sample advanced log analysis.
  • It also offers Linux server attack (forensics) analysis features for ethical hackers and lot’s more.

 

分析容器系统调用:Sysdig


Sysdig:一个非常强大的系统监控、分析和故障排查工具。 汇聚 strace+tcpdump+htop+iftop+lsof 工具功能于一身!(核心的功能就是将工具整合在一块)
sysdig 除了能获取系统资源利用率、进程、网络连接、系统调用等信息, 还具备了很强的分析能力,例如:
• 按照CPU使用率对进程排序
• 按照数据包对进程排序
• 打开最多的文件描述符进程
• 查看进程打开了哪些文件
• 查看进程的HTTP请求报文
• 查看机器上容器列表及资源使用情况
sysdig 通过在内核的驱动模块注册系统调用的 hook,这样当有系统调用发生和完成的时候,它会把系统调用信息拷贝到特定的buffer,然后用户态组件对数据信息处理(解压、解析、过滤等),
并最终通过 sysdig 命令行和用户进行交互。

 

 哪台机器有问题就可以去安装,使用这个工具

rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public 
curl -s -o /etc/yum.repos.d/draios.repo https://s3.amazonaws.com/download.draios.com/stable/rpm/draios.repo
yum install epel-release -y
yum install sysdig -y /usr/bin/sysdig-probe-loader # 加载驱动模块


[root@master ~]# lsmod | grep ip_vs
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  37 
ip_vs                 145458  43 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  10 ip_vs,xt_CT,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4,nf_conntrack_ipv6
libcrc32c              12644  3 ip_vs,nf_nat,nf_conntrack
[root@master ~]# lsmod | grep netfilter
br_netfilter           22256  0 
bridge                151336  1 br_netfilter
[root@master ~]# lsmod | grep sysdig
sysdig_probe          639433  0 
sysdig常用参数:
• -l, --list:列出可用于过滤和输出的字段
• -M <num_seconds> :多少秒后停止收集
• -p <output_format>, --print=<output_format> :指定打印事件时使用的格式
• 使用-pc或-pcontainer 容器友好的格式
• 使用-pk或-pkubernetes k8s友好的格式
• -c <chiselname> <chiselargs>:指定内置工具,可直接完成具体的数据聚合、分析工作
• -w <filename>:保存到文件中
• -r <filename>:从文件中读取

执行sysdig命令,实时输出大量系统调用。
示例:59509 23:59:19.023099531 0 kubelet (1738) < epoll_ctl
格式:%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info
• evt.num: 递增的事件号
• evt.time: 事件发生的时间
• evt.cpu: 事件被捕获时所在的 CPU,也就是系统调用是在哪个 CPU 执行的
• proc.name: 生成事件的进程名字
• thread.tid: 线程的 id,如果是单线程的程序,这也是进程的 pid
• evt.dir: 事件的方向(direction),> 代表进入事件,< 代表退出事件
• evt.type: 事件的名称,比如 open、stat等,一般是系统调用
• evt.args: 事件的参数。如果是系统调用,这些对应着系统调用的参数
自定义格式输出:sysdig -p "user:%user.name time:%evt.time proc_name:%proc.name"
[root@master ~]# sysdig -p "user:%user.name time:%evt.time proc_name:%proc.name" -M 3 -w xxx
[root@master ~]# sysdig -r  xxx

sysdig过滤:

• fd:根据文件描述符过滤,比如 fd 标号(fd.num)、fd 名字(fd.name)
• process:根据进程信息过滤,比如进程 id(proc.id)、进程名(proc.name)
• evt:根据事件信息过滤,比如事件编号、事件名
• user:根据用户信息过滤,比如用户 id、用户名、用户 home 目录
• syslog:根据系统日志过滤,比如日志的严重程度、日志的内容
• container:根据容器信息过滤,比如容器ID、容器名称、容器镜像
查看完整过滤器列表:sysdig -l

示例:
1、查看一个进程的系统调用
sysdig proc.name=kubelet
2、查看建立TCP连接的事件
sysdig evt.type=accept
3、查看/etc目录下打开的文件描述符
sysdig fd.name contains /etc
4、查看容器的系统调用
sysdig -M 10 container.name=web
注:还支持运算操作符,=、!=、>=、>、<、
<=、contains、in 、exists、and、or、not

Chisels: 实用的工具箱,一组预定义的功能集合,用来分析特定的场景。
sysdig –cl 列出所有Chisels,以下是一些常用的:
• topprocs_cpu:输出按照 CPU 使用率排序的进程列表,例如sysdig -c
• topprocs_net:输出进程使用网络TOP
• topprocs_file:进程读写磁盘文件TOP
• topfiles_bytes:读写磁盘文件TOP
• netstat:列出网络的连接情况

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分析容器系统调用:Sysdig 的相关文章

  • leetcode刷题:z字形变换

    题目 图解思路 实现代码如下 class Solution public string convert string s int numRows if numRows lt 2 return s vector
  • java复制文件及文件夹

    java复制文件及文件夹 文件复制 复制源文件到目标文件 param sourcePath 源文件路劲 param targetPath 目标文件路径 public static void copyByStream String sourc
  • [毕业设计]2023-2024年最新电子信息工程专业毕设选题题目推荐汇总

    文章目录 1前言 2 如何选题 3 选题方向 3 1 嵌入式开发方向 3 2 物联网方向 3 3 移动通信方向 3 4 人工智能方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最后 1前
  • matlab主成分分析散点图_主成分分析(PCA)的详细解释

    原作者 Zakaria Jaadi 翻译 钟胜杰 这篇文章的目的是提供主成分分析的完整同时比较简化的解释 特别是逐步回答它是如何工作的 这样每个人都可以理解它并利用它 而不必具有很高的数学水平 PCA实际上是一种使用很广的网络方法 但只有少
  • 【100%通过率 】【华为OD机试python】机房布局【2023 Q1

    2023华为OD机试 刷题指南 点这里 华为OD机试 题目列表 2023Q1 点这里 题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每 个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是
  • python之pefile模块(解析PE)

    发现很多的朋友经常用到PE格式相关的开发 如解析PE文件的格式 获取相关的内容 比如常常用到的静态的病毒启发式检测模型的建立 病毒样本分类 查壳脱壳等 搜索了一下发现论坛里面没有我要讲的这个东西 于是我在这里向大家推荐pefile这个pyt
  • C++ 实现 C# delegate 机制

    C 里的 delegate C 里的 delegate 作为语法特性的一部分 使用起来非常方便 首先按照函数签名 声明一个 delegate 类型 delegate void DelegateType 之后就可以用这个 delegate 类
  • 20个优秀的前端框架

    1 Twitter BootStrap Apache v2 0 响应式 时髦 直观并且强大的前端框架 让Web开发变得更加容易 2 Foundation MIT 响应式 最先进的响应式前端框架 3 960gs GPL MIT 响应式 960
  • AI软件记录

    1 AI裁剪图像 步骤1 裁剪图像 参考链接ai如何裁剪图片 百度知道 baidu com 步骤2 经过步骤1导出的图片有白框 去掉白框 只留需要的部分 参考链接 130条消息 AI中去掉剪切蒙版中的多余部分 ai剪切蒙版如何去掉多余部分
  • 攻防世界The_Maya_Society

    The Maya Society 这道题目有三个附件 一个素材 一个html网页 还有一个ELF文件 这里刚开始猜测为html网页逆向 但是网页逆向一般是要给一个js文件 该附件中是没有js文件的 所以应该不是网页逆向 那么猜测应该是附件中
  • vite vue3项目打包部署空白页面问题的处理

    问题 vite vue3项目打包部署上线后 发现是空白页面问题的处理 解决方法 1 在我们vite config js文件中检查是否有路径的指向 2 查看我们的路由模式 将路由模式修改为createWebHashHistory 总结 vit
  • 线上Elastcisearch遇到的问题 org.elasticsearch.transport.ReceiveTimeoutTransportException

    记录 本着使用ES能够快速方便的获取数据 线下搜索模块使用了ES 结果一直报错 org elasticsearch transport ReceiveTimeoutTransportException 10 2 2 121 9200 clu
  • 需求管理

    需求管理 Requirement management 是完整管理模式中的一环 同其他特性诸如完整性 一致性等不可分割 彼此相关而成一体 一套需求管理应当是已知系统需求的完整体现 每部分解决方案都是对总体需求一定比例的满足 甚至是充分满足
  • Redis——Redis介绍

    一 概述 Redis Remote Dictionary Server 即远程字典服务器 是开源免费的 用C语言编写的 高性能的 key value 分布式内存数据库 是一个遵守BSD协议 基于内存运行并支持持久化的NoSQL数据库 是当前
  • Ubuntu18.04安装PCL保姆级教程

    系统环境 Ubuntu18 04 6 LTS 1 安装依赖包 sudo apt get update sudo apt get install git build essential linux libc dev sudo apt get
  • 【Unity小帮手】VuforiaAR解决虚拟按键IVirtuaButtonEventHandler停用问题

    在最新的版本中 已经停用了IVirtuaButtonEventHandler 并且ReisterEventHandler this 使用方法发生了改变 1 修改后主要取消了继承IVirtuaButtonEventHandler类 2 修改R
  • fatal: You are not currently on a branch.To push the history leading to the current (detached HEAD)

    这个错误消息表示你当前处于 detached HEAD 状态 意味着你没有在任何分支上 这可能是由于你使用了git checkout命令切换到了一个特定的提交记录 而不是一个分支 要解决这个问题 你需要创建一个新的分支并将其推送到远程仓库
  • Mysql等保2.0测评

    Mysql等保2 0测评 后续会根据工作中的具体项目要求进行修改 一 身份鉴别 a 应对登录的用户进行身份标识和鉴别 身份标识具有唯一性 身份鉴别信息具有复杂度要求并定期更换 1 登录mysql查看是否使用了口令和密码的组合鉴别身份 mys

随机推荐

  • smop Matlab转成Python

    最近老板有一堆 m文件要我转成python文件 因为我们实验室不是每个人都装了matlab 但是这么多文件 自己写得猴年马月去 秉承能用程序就绝不动手的原则 我去GitHub上找到了smop小工具 这个是GitHub的链接 简述一下安装过程
  • 六、二手房数据分析

    六 二手房数据分析 6 1 背景介绍 6 1 1 实验背景 随着房地产市场发展 房价越来越高 为了的到影响房价的增长因素 现在从数据角度出发 分析以下左右房价的因素 数据介绍 CATE 城区 bedrooms 卧室数量 halls 客厅 A
  • c语言嵌入式web服务器,用C语言实现的简单Web服务器(Linux

    file http session c include include include include include include include include include include include include http
  • IT伦理与道德

    1 个人隐私问题 个人隐私包括传统的个人隐私和现代个人数据 传统的个人隐私有姓名 出生年月 身份证编号 婚姻家庭 教育等 现代个人数据有用户名和密码 IP地址等 合理合法的隐私应受到保护 在计算机时代 隐私极易受到侵害 这最直接的影响就是公
  • LVS负载均衡服务器搭建

    LVS简介 现在LVS已经是Linux标准内核的一部分 在Linux2 4内核以前 使用LVS时必须重新编译内核以支持LVS功能模块 但是从Linux2 4内核心之后 已经完全内置了LVS的各个功能模块 无需给内核打任何补丁 可以直接使用L
  • 异步复位信号的 recovery和removal

    简而言之 DFF的复位置位信号不要在clk的跳变沿附近变化 而是要远离clk沿 一般逻辑对此时序不用关心 比如很多模块的操作流程是复位完了 才开启模块时钟 再启动模块工作 这种流程可以保证不会出现recovery和removal的问题 因为
  • IO流总结

    1 什么是IO I Input O Output 通过IO可以完成硬盘文件的读和写 Java中所有的流都在java io 下 2 IO流的分类 有多种分类方式 输入流 输出流 字节流 字符流 1 一种方式是按照流的方向进行分类 以内存作为参
  • 【C++】空间配置器

    目录 一 空间配置器概念 二 为什么需要空间配置器 三 SGI STL空间配置器实现原理 3 1 一级空间配置器 3 2 二级空间配置器 3 2 1 内存池 3 2 2 SGI STL中二级空间配置器设计 3 2 3 SGI STL二级空间
  • spyder的使用(python编辑器)

    spyder是Anaconda种自带的一种python编辑器 这个编辑器里面保存的是py文件 spyder 创建工程 运行 1 运行整个脚本文件 2 运行当前代码块 3 运行当前代码块 并跳至下一个 4 运行当前命令行 或选中的命令行 5
  • 通过Function Score Query优化Elasticsearch搜索结果

    在使用Elasticsearch进行全文搜索时 搜索结果默认会以文档的相关度进行排序 如果想要改变默认的排序规则 也可以通过sort指定一个或多个排序字段 但是使用sort排序过于绝对 它会直接忽略掉文档本身的相关度 根本不会去计算 在很多
  • 面试笔记(六)---Js实现eventHandler

    js事件的监听器的使用 1 当同一个对象使用 onclick的写法触发多个方法的时候 后一个方法会把前一个方法覆盖掉 也就是说 在对象的onclick事件发生时 只会执行最后绑定的方法 而用事件监听则不会有覆盖的现象 每个绑定的事件都会被执
  • 【算法与数据结构】669、LeetCode修剪二叉搜索树

    文章目录 一 题目 二 解法 三 完整代码 所有的LeetCode题解索引 可以看这篇文章 算法和数据结构 LeetCode题解 一 题目 二 解法 思路分析 450 LeetCode删除二叉搜索树中的节点两道题的思路几乎是一样的 只不过终
  • 常用数据清洗方法

    常用的数据清洗方法有 缺失值处理 包括删除包含缺失值的行或列 用均值 中位数或众数来填充缺失值 异常值处理 包括删除异常值或使用其他方法进行修正 数据规约 包括去重 合并重复数据 转换数据格式等 文本数据处理 包括去除停用词 词干提取 分词
  • OpenLayers隐藏默认放大放小按钮

    div div import Map View from ol import TileWMS from ol source TileWMS import TileLayer from ol layer Tile import ScaleLi
  • 深度选择器/deep/,关于elementui样式修改不了的问题完美解决

    深度选择器 deep 在vue elementui写项目时 时常elementui的效果不理想 但是又没办法直接修改elementui的样式 因为我们无法通过普通的选择器获取到我们要更改的标签 elementui自己加了一层 通常的解决办法
  • git 导出指定文件的所有commits

    多个补丁一个文件 git format patch 提交个数 stdout drivers staging wlags49 h2 gt wlags49 patches all patch 每一个补丁一个文件 git format patch
  • 十大常用算法之马踏棋盘算法

    十大常用算法的完整实现 一 二分查找算法 https blog csdn net weixin 46635575 article details 121532149 二 分治算法 https blog csdn net weixin 466
  • [自用代码]基于python的遥感影像传统分割方法(直方图双峰法,阈值分割法,模糊C均值法,超像素分割法,K-means,snake)

    文章目录 待分割图片 直方图双峰阈值分割法 代码 分割结果 阈值分割法 代码 分割结果 模糊C均值 代码 分割结果 超像素分割 代码 分割结果 K means 分割结果 主动轮廓模型 snake代码 利用canny提取图片边缘 对图片进行闭
  • python随机矩阵生成_python生成随机数和随机矩阵

    生成随机数 使用 random 模块 random random 用于随机生成一个0到1的浮点数 random randint start stop 随机生成 start stop 区间内的整数 代码示例 import random pri
  • 分析容器系统调用:Sysdig

    Sysdig is an open source cross platform powerful and flexible system monitoring and troubleshooting tool for Linux it al