kubernetes--分析容器系统调用:Sysdig

news2024/9/22 13:27:40

目录

Sysdig介绍:

sysdig工作流程

安装Sysdig

sysdig常用参数:

sysdig过滤:

sysdig之Chisels(工具箱):

其他常用命令


Sysdig介绍:

       Sysdig是一个非常强大的系统监控分析和故障排查工具。汇聚strace+tcpdump+iftop+lsof工具功能为一身。

       sysdig除了能获取系统资源利用率、进程、网络连接、系统调等信息,还具备了很强的分析能力,例如:

       1.按照CPU使用率对进程排序

       2.按照数据包对进程排序

       3.打开最多文件描述符进程

       4.查看进程打开了哪些文件

       5.查看进程HTTP请求报文

       6.查看机器上容器列表及资源使用情况

项目地址:https://github.com/draios/sysdig

文档:https://github.com/draios/sysdig/wiki

sysdig工作流程

sysdig通过内核的驱动模块注册系统调用hook,这样当有系统调用发生和完成的时候,它会把系统调用信息拷贝到特定的bugger,然后用户态组件对数据信息处理(解压、解析、过滤等,)并最终通过sysdig命令行和用户进行交互

在内核中加入了模块,通过该模块获取了系统调用的信息,该模块类似与拦截器,当有系统调用时,就会把系统调用所涉及的信息捕捉,用户层面的模块会对该数据就行解析过滤。

安装Sysdig

先升级下内核

【】yum -y install kernel-3.10.0-1160.el7.x86_64

【】yum -y install kernel-devel-3.10.0-1160.el7.x86_64

【】awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

【】grub2-set-default 0

自动安装

curl -s https://download.sysdig.com/stable/install-sysdig | sudo bash

上面是一个shell 脚本,会识别常用的linux发行版本,并根据对应的版本配置源,最后是安装sysdig包。在redhat/centos上首先会配置的是epel ,配置该源的目的是安装dkms包;然后会配置draios源,通过该源可以安装sysdig包。最后在装sysdig包之前还会先安装kernel-devel包。

手动安装

默认源里少个依赖需要repo源

【】rpm --import https://download.sysdig.com/DRAIOS-GPG-KEY.public

 

【】curl -s -o /etc/yum.repos.d/draios.repo https://download.sysdig.com/stable/rpm/draios.repo

【】yum install epel-release -y

【】yum install sysdig -y

【】yum -y install kernel-devel-$(uname -r)

 

【】/usr/bin/sysdig-probe-loader # 加载驱动模块

 

执行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 事件的名称,比如 openstat等,一般是系统调用

• evt.args 事件的参数。如果是系统调用,这些对应着系统调用的参数

自定义格式输出:sysdig -p "user:%user.name time:%evt.time proc_name:%proc.name"

sysdig -l列出支持字段

sysdig常用参数:

sysdig命令直接执行后显示的是个进程对linux的系统调用

• -l, --list:列出可用于过滤和输出的字段

• -M <num_seconds> :多少秒后停止收集

• -p <output_format>, --print=<output_format> :指定打印事件时使用的格式

    • 使用-pc-pcontainer 容器友好的格式

    • 使用-pk-pkubernetes k8s友好的格式

• -c <chiselname> <chiselargs>:指定内置工具,可直接完成具体的数据聚合、分析工作

• -w <filename>:保存到文件中

• -r <filename>:从文件中读取

sysdig过滤:

• fd:根据文件描述符过滤,比如 fd 标号(fd.num)、fd 名字(fd.name

• process:根据进程信息过滤,比如进程 idproc.id)、进程名(proc.name

• evt:根据事件信息过滤,比如事件编号、事件名

• user:根据用户信息过滤,比如用户 id、用户名、用户 home 目录

• syslog:根据系统日志过滤,比如日志的严重程度、日志的内容

• container:根据容器信息过滤,比如容器ID、容器名称、容器镜像

示列:

1、查看一个进程的系统调用

【】sysdig proc.name=kubelet

2、查看建立TCP连接的事件

【】sysdig evt.type=accept

3、查看/etc目录下打开的文件描述符

【】sysdig fd.name contains /etc

4、查看容器的系统调用

【】docker run -d --name=web --image=nginx

【】sysdig -M 10 container.name=web

注:还支持运算操作符,=、!=、>=、>、<、<=、contains、in 、exists、and、or、not

被黑后可用观察资源占用大的节点,通过sysdig对容器逐个分析

sysdig之Chisels(工具箱):

Chisels:实用的工具箱,一组预定义的功能集合,用来分析特定的场景。

sysdig –cl 列出所有Chisels以下是一些常用的:

• topprocs_cpu:输出按照 CPU 使用率排序的进程列表,例如sysdig -c

• topprocs_net:输出进程使用网络TOP

• topprocs_file:进程读写磁盘文件TOP

• topfiles_bytes:读写磁盘文件TOP

• netstat:列出网络的连接情况

网络

# 查看使用网络的进程TOP

sysdig -c topprocs_net

# 查看建立连接的端口10秒内

sysdig -c fdcount_by fd.sport "evt.type=accept" -M 10

# 查看建立连接的端口10秒内

sysdig -c fdbytes_by fd.sport

# 查看建立连接的IP10秒内

sysdig -c fdcount_by fd.cip "evt.type=accept" -M 10

# 查看建立连接的IP

sysdig -c fdbytes_by fd.cip

硬盘

# 查看进程磁盘I/O读写

sysdig -c topprocs_file

# 查看进程打开的文件描述符数量

sysdig -c fdcount_by proc.name "fd.type=file" -M 10

# 查看读写磁盘文件

sysdig -c topfiles_bytes

sysdig -c topfiles_bytes proc.name=etcd

# 查看/tmp目录读写磁盘活动文件

sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"

CPU

# 查看CPU使用率TOP

sysdig -c topprocs_cpu

# 查看容器CPU使用率TOP

sysdig -pc -c topprocs_cpu container.name=web

sysdig -pc -c topprocs_cpu container.id=web

容器

# 查看机器上容器列表及资源使用情况

csysdig –vcontainers

# 查看容器资源使用TOP  CPU  net  file

sysdig -c topcontainers_cpu/topcontainers_net/topcontainers_file

其他常用命令

csysdig #图形化所有进程

sysdig -c netstat  #查看所有网络连接

sysdig -c ps    #类似于os命令

sysdif -c lsof     #查看所有打开的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition

目录1 问题定义2 算法步骤3 代码4 效果1 问题定义 本博客以最小化问题为例 f1x2f2(x−2)2min⁡f(f1(x),f2(x))\begin{aligned} f_1 & x ^2 \\ f_2 & (x - 2) ^2 \\ \min f & (f_1(x), f_2(x)) \end{aligned} f1​f2​minf​x2(x−2)2(f1​(x),f2​(x))​ 代码…

二十、常用调优工具概述与Jprofiler演示

常用调优工具 1.JDK命令行 2.Eclipse:Memory Analyzer Tool 3.Jconsole 4.VisualVM 5.Jprofiler 6.Java Flight Recorder 7.GCViewer 8.GC Easy jprofiler 简介&#xff1a; 他把CPU、执行引擎和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合…

集成学习boosting、bagging、stacking

目录 一、介绍 二、三种架构学习 &#xff08;1&#xff09;boosting &#xff08;2&#xff09;bagging &#xff08;3&#xff09;stacking 一、介绍&#xff1a; 对于单个模型来说很难拟合复杂的数&#xff0c;模型的抗干扰能力较低&#xff0c;所以我们希望可以集成多…

ElasticSearch 8 学习笔记总结(五)

文章目录一、ElasticSearch 8 版本二、ES8 集群 环境安装1. 生成安全证书2. 生成http证书3. 配置第一个节点4. 配置其他节点三、ES集群 关联问题解决四、 Kibana 安装和使用五、kibana 基础操作1. 索引操作2. 文档操作3. 文档搜索4. 索引模板六、分词器七、文档评分机制1. 什么…

上拉电阻与下拉电阻总结

文章目录相关概念介绍IO引脚的三态输出之高阻态---将逻辑门与系统其他部分隔离&#xff0c;电平外部控制IO引脚输出模型 推挽电路 与 开漏电路---单独开漏无高电平驱动能力原理介绍什么是上下拉电阻&#xff1f;---把IO口用电阻拉到正压VCC&#xff08;上拉&#xff09; 或 接地…

如何使用Docker容器部署O2OA(翱途)开发平台与OnlyOffice的集成版本?

O2OA(翱途)开发平台[下称O2OA平台或者O2OA]默认可以和OnlyOffice进行集成来实现在线文档编辑以及流程集成。开发者可以直接安装O2OA官网的OnlyOfficeO2Server的Docker版本用于体验。本文将详细介绍如何安装O2OA OnlyOffice的Docker版本。OnlyOffice Docs Sever可以单独安装,O2…

aws apigateway 使用httpapi私有集成ecs服务

参考资料 https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/http-api-private-integration.htmlhttps://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/http-api-develop-integrations-private.html 在《aws apigateway 基础概念和入门示…

Vue2.0开发之——购物车案例-Goods组件封装-把购买数量传给counter组件(52)

一 概述 Goods组件中导入Counter组件设置Counter组件的数量 二 Goods组件中导入Counter组件 2.1 Goods组件中导入Counter组件 import Counter from "/components/Counter/Counter.vue";2.2 Goods组件中注册Counter组件 components:{Counter }2.3 Goods组件中使用…

GDKOI2023游记+一周模拟赛题解

温馨提示&#xff1a; 1)有些链接需要在本校OJ上的博客里才能打开。2)没更新完。 Day -6&#xff08;3.4&#xff09; 晚上打了场AtCoder&#xff0c;rank1515rank 1515rank1515&#xff0c;切了5题&#xff0c;信心。 zswangziye的atcoder账号 打T5的时候心态不稳&#xff…

2022年MathorCup数学建模A题大规模指纹图像检索的模型与实现解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 A题 大规模指纹图像检索的模型与实现 原题再现 在生物特征识别领域&#xff0c;指纹作为最具独特性与持久性的生物特征之一&#xff0c;被广泛应用于身份识别。   指纹识别过程分为特征提取和比对两个环节。其中特征提取环节会提取用于…

matplotlib: 绘制柱状图

通过matplotlib绘制柱形图 第一个例子 from matplotlib import pyplot as plty [10, 11, 12, 11, 9, 8, 13, 10] # 创建y轴坐标 x list(range(1,9)) # 创建x轴坐标# 创建x轴显示的参数&#xff08;此功能在与在图像中x轴仅显示能被10整除的刻度&#xff0c;避免刻度过多分…

比亚迪:全球最大电动汽车制造商的坎坷成长之路

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 特斯拉&#xff08;TSLA&#xff09;首席执行官埃隆马斯克表示&#xff0c;特斯拉最接近的竞争对手可能是一家中国电动汽车公司。猛兽财经认为&#xff0c;沃伦•巴菲特支持的比亚迪&#xff08;0211&#xff09;可能是马斯…

在ubuntu上部署与使用docker(python)

1.安装Docker首先&#xff0c;更新现有的包列表sudo apt update接下来安装一些允许童HTTPS才能使用的软件包&#xff1a;sudo apt install apt-transport-https ca-certificates curl software-properties-common然后将官方Docker存储库的GPG秘钥添加到您的系统curl -fsSL http…

关于 C# 引用参数和值参数

关于 C# 引用参数和值参数 C# 数据类型分为值类型和引用类型&#xff0c;两者的区别在于值类型的数据存储在栈中&#xff0c;而引用类型的数据存储在堆中&#xff0c;但是栈中会存放指向存储数据的堆的位置。 传递参数时&#xff0c;传递的是数据栈中的值&#xff0c;实参将数…

高等数学——一元函数微分学

文章目录导数与微分概念几何意义连续、可导、可微之间的关系求导法则基本初等函数的导数公式有理运算法则复合函数求导法奇偶性和周期性隐函数求导反函数求导参数方程求导对数求导法高阶导数概念常用的高阶导数公式微分中值定理和导数的应用微分中值定理导数的应用函数的单调性…

巾帼绽芬芳 一起向未来(下篇)

编者按&#xff1a;为了隆重纪念纪念“三八”国际妇女节113周年&#xff0c;快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇&#xff08;节日简介、节日发展和节日意义&#xff09;、中篇&#xff08;节日活动宗旨和世界各国庆祝方式&#xff09;和下篇&…

Linux学习第二十节-NTP网络时间协议

1.概念 NTP(Network Time Protocol&#xff09;网络时间协议基于UDP用于网络时间同步的协议&#xff0c;使网络中的计算机时钟同步到UTC(世界统一时间)&#xff0c;再配合各个时区的偏移调整就能实现精准同步对时功能。 chrony是网络时间协议NTP的实现方式&#xff0c; Chron…

three.js 纹理贴图的使用

刚刚入门的小伙伴请先查看 three.js 基础认识与简单应用 本文章中的两个注意点&#xff0c;下面也有提到&#xff0c;分别是&#xff1a; 1、 vue项目中使用的贴图路径-->需要把 static文件夹 放到 public文件夹下,并使用 static 开头的绝对路径。 2、使用环境遮挡贴图时&a…

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成-阿里云物联网手动接入步骤

基础资料基于Air780E开发板&#xff1a;Air780E文档中心简介&#xff1a;AT开发探讨重点本系列主要探讨MQTT手动接入腾讯云物理网平台的基本操作及手动鉴权步骤、信息订阅及发布的基本原理。参考阅读&#xff1a;物联网模组AT命令接入云平台&#xff08;1&#xff09;-MQTT基本…

移动硬盘怎么恢复数据?怎么恢复硬盘删除的数据

移动硬盘可以随时插上或拔下&#xff0c;小巧而便于携带的硬盘存储器&#xff0c;以较高的速度与系统进行数据传输。由于其存储空间较大&#xff0c;性价比较高&#xff0c;存储和传输数据快速简便&#xff0c;是很多职场人士必备的外置设备之一。移动硬盘怎么恢复数据&#xf…