kubernetes 容器监控 Sysdig Falco

news/2024/12/29 2:46:52/

 开头语

写在前面:如有问题,以你为准,

目前24年应届生,各位大佬轻喷,部分资料与图片来自网络

内容较长,页面右上角目录方便跳转

Sysdig 监控容器系统调用

介绍 资料

Sysdig:一个非常强大的系统监控、分析和故障排查工具。

汇聚 strace+tcpdump+htop+iftop+lsof 工具功能于一身!

sysdig 除了能获取系统资源利用率、进程、网络连接、系统调用等信息,

还具备了很强的分析能力,例如:

  1. 按照CPU使用率对进程排序
  2. 按照数据包对进程排序
  3. 打开最多的文件描述符进程
  4. 查看进程打开了哪些文件
  5. 查看进程的HTTP请求报文

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

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

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

使用内核模块实现

安装

以容器方式启动

sudo docker run --rm -i -t --privileged --net=host \-v /var/run/docker.sock:/host/var/run/docker.sock \-v /dev:/host/dev \-v /proc:/host/proc:ro \-v /boot:/host/boot:ro \-v /src:/src \-v /lib/modules:/host/lib/modules:ro \-v /usr:/host/usr:ro \-v /etc:/host/etc:ro \docker.io/sysdig/sysdig

一键式安装

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash

二进制安装 (成功)

https://github.com/draios/sysdig/releases/[root@master bin]# pwd/root/k8s/cks/sysdig-falco/sysdig-0.34.1-x86_64/usr/bin[root@master bin]# ./scap-driver-loader[root@master bin]# cp ./syscdig /usr/bin/[root@master bin]# cp ./csyscdig /usr/bin/

命令与内容解析

命令介绍

./syscdig# 执行后所返回的就是工作在宿主机上所有进程系统调用信息./csyscdig# 显示以top方式显示

sysdig 常用参数:-l,--list:列出可用于过滤和输出的字段-M <num seconds>:多少秒后停止收集-p <output format>,-print:=<output format>:指定打印事件时使用的格式使用-pc或-pcontainer容器友好的格式使用-pk或-pkubernetes k8s友好的格式-c <chiselname><chiselargs>:指定内置工具,可直接完成具体的数据聚合、分析工作-w <filename>:保存到文件中-r <filename>:从文件中读取

输出格式

53774 02:04:16.549209075 0 sshd (29696.29696) > switch next=0 pgft_maj=8 pgft_min=529 vm_size=165912 vm_rss=3420 vm_swap=0evt.num: 53774evt.time: 02:04:16.549209075evt.cpu: 0proc.name: sshdthread.tid: (29696.29696)

指定格式输出

 sysdig -p "user:%user.name time:%evt.time proc name:%proc.name"# 10秒之后暂停sysdig  -M 10 -p "user:%user.name time:%evt.time proc name:%proc.name"

示例

# 指定输出kubelet相关进程sysdig proc.name=kubelet# 查看指定容器中的系统调用,执行后可以在另一个端口使用curl访问一下docker run -d  --name web nginx:1.17.1

chisels

使用的工具箱,一组预定义的功能集合,用于分析特定的场景

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

  1. topprocs_cpu: 输出按照CPU使用率排序的进程列表,例如sysdig-c
  2. topprocs_net: 输出进程使用网络TOP
  3. topprocs file: 进程读写磁盘文件TOP
  4. topfiles bytes: 读写磁盘文件TOP
  5. netstat: 列出网络的连接情况
sysdig -c topprocs_cpuCPU%                Process             PID--------------------------------------------------------------------------------5.00%               kube-apiserver      21184263.00%               sysdig              28794203.00%               calico-node         16115912.00%               etcd                15840582.00%               gvfs-udisks2-vo     34942.00%               dockerd             15811541.00%               containerd-shim     21177771.00%               systemd             11.00%               vmtoolsd            10741.00%               kubelet             2118147可以看出哪个进程占cpu比较高

Falco 监控容器运行时 (未成功)

介绍 资料

Falco 是一个Linux安全工具,它使用系统调用来保护和监控系统。

Falco 最初是由Sysdig开发的,后来加入CNCF孵化器,成为首个加入CNCF的运行时安全项目。

Falco 提供了一组默认规侧,可以监控内核态的异常行为,例如:

  1. 对于系统目录/etc,/usr/bin,/usr/sbin的读写行为
  2. 文件所有权、访问权限的变更
  3. 从容器打开shell会话
  4. 容器生成新进程
  5. 特权容器启动

项目地址

https://github.com/falcosecurity/falco

架构

也是使用内核模块实现

安装

# 源码https://github.com/falcosecurity/falco/releases/tag/0.36.2# 源安装https://falco.org/zh-cn/docs/installation/rpm --import https://falco.org/repo/falcosecurity-packages.asccurl -s -o /etc/yum.repos.d/falcosecurity.repo https://falco.org/repo/falcosecurity-rpm.repo# yum list dkms 查看有没有这个包依赖没有则安装# yum install epel-release && yum -y install  dkmsyum -y install falco
 # 加载模块falco-driver-loadersystemctl start falco-bpf.service && systemctl enable falco-bpf.service[root@master sysdig-falco]# systemctl list-units | grep falcofalco-bpf.service                                                                                                                             loaded activating auto-restart Falco: Container Native Runtime Security with ebpf  falcoctl-artifact-follow.service                                                                                                              loaded active     running      Falcoctl Artifact Follow: automatic artifacts update service

配置文件

falco 配置文件目录 :/etc/falco

falco.yaml falco 配置与输出告警通知方式

falco rules.yaml 规侧文件,默认已经定义很多威胁场景(已经内置一些规则)

falco_rules.local.yaml 自定义扩展规则文件(专门给用户自定义的)

k8 s audit rules..yaml  Ka8s审计日志规则

[root@master ~]# tree /etc/falco//etc/falco/├── aws_cloudtrail_rules.yaml├── falco_rules.local.yaml├── falco_rules.yaml├── falco.yaml├── k8s_audit_rules.yaml└── rules.d

字段解析 falco_rules.local.yaml

编写示例

nginx容器里面执行不属于nginx的进程,就进行警告输出到 /var/log/messages

 

更改输出位置

falco.yaml

以json格式输出

指定输出文件

默认是 /var/log/messages

 

 命令

[root@master ~]# falcoSun Nov 19 21:20:29 2023: Falco version: 0.36.2 (x86_64)Sun Nov 19 21:20:29 2023: Falco initialized with configuration file: /etc/falco/falco.yamlSun Nov 19 21:20:29 2023: Loading rules from file /etc/falco/falco_rules.yamlSun Nov 19 21:20:29 2023: Loading rules from file /etc/falco/falco_rules.local.yamlSun Nov 19 21:20:29 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)Sun Nov 19 21:20:29 2023: Starting health webserver with threadiness 2, listening on port 8765Sun Nov 19 21:20:29 2023: Loaded event sources: syscallSun Nov 19 21:20:29 2023: Enabled event sources: syscallSun Nov 19 21:20:29 2023: Opening 'syscall' source with Kernel module^CSun Nov 19 21:21:28 2023: SIGINT received, exiting...Syscall event drop monitoring:- event drop detected: 0 occurrences- num times actions taken: 0Events detected: 0Rule counts by severity:Triggered rules by rule name:

查看监控信息

tail -f /var/log/messages

实操

touch /root/test

会出现 /var/log/messages

docker run -d --name web nginx:1.17.1

可视化监控(FalcoSideKick)

架构 资料

# FalcoSideKick: 一个集中收集并指定输出,支持大量方式输出,例如Influxdb、Elasticsearch等https://github.com/falcosecurity/falcosidekick# FalcoSideKick-ui: 告警通知集中图形展示系统https://github.com/falcosecurity/falcosidekick-ui

安装

docker run -d -p 2801:2801 --name falcosidekick -e WEBUI_URL=http://192.168.100.53:2802 falcosecurity/falcosidekickdocker run -d -p 2802:2802 --name falcosidekick-ui falcosecurity/falcosidekick-ui

修改输出方式

修改了输出方式才能将数据接入ui

示例

特权容器启动

在bin下创建文件


http://www.ppmy.cn/news/1297356.html

相关文章

CAN FD和传统CAN的组网技术

在汽车领域&#xff0c;特别是新能源汽车技术的发展&#xff0c;对汽车内部的数据传输带宽提出了越来越高的要求&#xff0c;因此新的总线协议CAN FD应运而生&#xff0c;其最大传输速率可达8Mbps。然而由于历史原因以及成本因素&#xff0c;在相当长的一段时间内&#xff0c;传…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

Vue项目nginx部署到线上,访问时加前缀解决方案

一、业务场景&#xff1a; 最近项目开发完了&#xff0c;需要部署一个测试版本和正式版本到线上&#xff0c;测试版本前面需要加一个dev前缀&#xff0c;遇到了一些坑&#xff0c;分享给大家 二、目前效果 三、具体实现步骤&#xff1a; &#xff08;1&#xff09;实现静态文…

Spring学习 基于注解的AOP配置

5.1.创建工程 5.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

探索无尽音乐创作之旅:Ableton Live Suite 11的全面升级

音乐创作是一种独特的艺术形式&#xff0c;能够引导我们进入一个无限的创造力世界。而在这个充满无限可能性的世界中&#xff0c;Ableton Live Suite 11是您最值得信赖的创作伴侣。 Ableton Live Suite 11是一款专为音乐创作者而设计的软件&#xff0c;它融合了创新的功能和直…

python筛选数据库中表的数量

import pymysqldb pymysql.connect(host,port,user,password) cursor db.cursor()def get_table_list(in_db, in_table_name):"""获取数据库中的表数量"""sql fshow tables from {in_db};cursor.execute(sql)data cursor.fetchall()table_li…

Dockerfile语法和简单镜像构建

Dockerfile是一个用于定义Docker镜像的文本文件&#xff0c;包含了一系列的指令和参数&#xff0c;用于指示Docker在构建镜像时应该执行哪些操作&#xff0c;例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等。 Dockerfile文件的内容主要有几个部分组成&#xff0c…

【YOLO系列】 YOLOv4思想详解

前言 以下内容仅为个人在学习人工智能中所记录的笔记&#xff0c;先将目标识别算法yolo系列的整理出来分享给大家&#xff0c;供大家学习参考。 本文未对论文逐句逐段翻译&#xff0c;而是阅读全文后&#xff0c;总结出的YOLO V4论文的思路与实现路径。 若文中内容有误&#xf…