该å¤å¿åæä¾äºä½¿ç¨ Sysdig ç常ç¨å½ä»¤åæ°åä½¿ç¨æ¡ä¾æ¸ å
sudo rpm --import https://download.sysdig.com/DRAIOS-GPG-KEY.public
sudo curl -s -o /etc/yum.repos.d/draios.repo https://download.sysdig.com/stable/rpm/draios.repo
sudo yum -y install sysdig
| åæ° | 说æ |
|---|---|
-C 5 | æ¯ä¸ªæä»¶ä¸è¶ è¿5M |
-W 10 | ä¿çä¸è¶ è¿10个æä»¶ |
-G 60 | æ¯ä¸ªæä»¶åªä¿çä¸åéå çç³»ç»æ´»å¨ |
-w dump.pcap | ä¿åå°æä»¶ |
-e 1000 | æ¯ä¸ªæä»¶åªæ1000个äºä»¶ |
-z | 忰坹ä¿åçå 容è¿è¡å缩 |
-A --print-ascii | æbuffer䏿°æ®æç §ASCIIæ ¼å¼æå°ï¼æ¹ä¾¿é 读 |
-x --print-hex | æbuffer䏿°æ®æç §åå è¿å¶æå° |
-X --printhex-ascii | æbuffer䏿°æ®åæ¶æç §ASCIIæ ¼å¼ååå è¿å¶æå° |
-s 1024 | æè·bufferçæ°æ®å¤§å°ï¼é»è®¤ä¸º80ï¼è®¾ç½®è¿å¤§ï¼æä»¶ä¼å¾å¤§ |
-N | ä¸ç¨æç«¯å£å·è½¬æå¯è¯»åå |
-r | ä»æä»¶è¯»å |
| äºä»¶ | 说æ |
|---|---|
evt.num | éå¢çäºä»¶å· |
evt.time | äºä»¶åççæ¶é´ |
evt.cpu | äºä»¶è¢«æè·æ¶æå¨cpu |
proc.name | çæäºä»¶çè¿ç¨åå |
thread.tid | 线ç¨idï¼å线ç¨å为è¿ç¨id |
evt.dir | äºä»¶æ¹å(direction), > 代表è¿å ¥äºä»¶ï¼ < 代表éåºäºä»¶ |
evt.type | äºä»¶çåç§°ï¼æ¯å¦openãstatçï¼ä¸è¬ä¸ºç³»ç»è°ç¨ |
evt.args | äºä»¶çåæ°ãå¦æä¸ºç³»ç»è°ç¨ï¼å对åºç³»ç»è°ç¨çåæ° |
| äºä»¶ | 说æ |
|---|---|
httplog | è¾åºææçhttpè¯·æ± |
topprocs_cpu | è¾åºæç §cpu使ç¨çæåº |
topprocs_net | æç §ç½ç»ä½¿ç¨æ åµå¯¹è¿ç¨æåº |
fdcount_by | æç §å»ºç«è¿æ¥ä¹¦å¯¹è¿ç¨æåº |
echo_fds | è¾åºè¿ç¨è¯»åæ°æ® |
netsata | ååºç½ç»è¿æ¥æ åµ |
spy_file | è¾åºæä»¶çè¯»åæ°æ®ï¼å¯ä»¥æä¾æä¸ªæä»¶åä½ä¸ºåæ° |
spy_ip | æåç»å®ipçæ°æ®äº¤æ¢ |
spy_port | æåç»å®ç«¯å£çæ°æ®äº¤æ¢ |
sysdig -l #äºä»¶ç±»å
sysdig -cl #chiselså·¥å
፱Ȍ
$ sysdig
$ sysdig -p"user:%user.name dir:%evt.arg.path" evt.type=chdir
user:ubuntu dir:/root
user:ubuntu dir:/root/tmp
user:ubuntu dir:/root/Download
åæ®µå¿
é¡»ç¨ % ä½ä¸ºåç¼ï¼ææ sysdig -l ååºæ¥çåæ®µé½å¯ä»¥ä½¿ç¨
妿æä¸ªåæ®µå¨æ¶é´ä¸ä¸åå¨ï¼é»è®¤è¿ä¸ªäºä»¶ä¼è¿æ»¤æï¼å¨è¿ä¸ªå符串æåé¢å ä¸ * 符å·ï¼ä¼æå°ææäºä»¶ï¼ä¸åå¨çåæ®µä¼åæ <NA>
$ sysdig -p"*%evt.type %evt.dir %evt.arg.name" evt.type=open
open > <NA>
open < /proc/1285/task/1399/stat
open > <NA>
open < /proc/1285/task/1400/io
open > <NA>
open < /proc/1285/task/1400/statm
open > <NA>
kubernetes pod 客æ·ç«¯ ip ç udp 请æ±# ååºå®¹å¨çå¬ç«¯å£
$ sudo sysdig -pc -A -c netstat container.name=aaa
# æåkubernetes pod ç客æ·ç«¯ip为172.119.100.16ï¼3000端å£çç请æ±å
容
$ sudo sysdig -A -c echo_fds k8s.pod.name contains datacenter-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.119.100.16 fd.proto=UDP
# æç
§å»ºç«è¿æ¥æ°é对è¿ç¨æåº å¹¶ä¿åå°sysdig.pcapæä»¶ä¸
$ sysdig -c fdcount_by fd.sport "evt.type=accept" -w sysdig.pcap
æå kubernetes pod 客æ·ç«¯ ip 为 172.119.100.16 ç udp 请æ±
æ¥ç io é误æå¤çè¿ç¨
$ sysdig -c topprocs_errors
æ¥çioé误æå¤çæä»¶
$ sysdig -c topfiles_errors
æ¥çç£çio失败çè°ç¨
$ sysdig fd.type=file and evt.failed=true
æ¥çhttpdæå¼å¤±è´¥çæä»¶
$ sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
æ¥çæè±è´¹æ¶é´çç³»ç»è°ç¨
$ sysdig -c topscalls_time
æ¥çç³»ç»è°ç¨å¤±è´¥è¿åæå¤çç³»ç»è°ç¨
$ sysdig -c topscalls "evt.failed=true"
æ¥çæå¼æä»¶å¤±è´¥
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
æå°å»¶è¿å¤§äº1msçæä»¶I/Oè°ç¨
$ sysdig -c fileslower 1
æ¥ç使ç¨ç¡¬ç带宽æå¤çè¿ç¨
$ sysdig -c topprocs_file
ååºå¤§éä½¿ç¨æä»¶æè¿°ç¬¦çè¿ç¨
$ sysdig -c fdcount_by proc.name "fd.type=file"
æ¥ç读åbytesæå¤çæä»¶
$ sysdig -c topfiles_bytes
æå°httpdè¿ç¨å·²ç»è¯»åä¸ååå ¥ä¸çæä»¶
$ sysdig -c topfiles_bytes proc.name=httpd
åºæ¬ opensnoop:snoop æä»¶å¨åçæ¶æå¼
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
æ¥çæ´»è·ä¸ç读ååæå¤çç®å½
sysdig -c fdbytes_by fd.directory "fd.type=file"
æ¥çç®å½/tmpæ´»è·ä¸ç读åæå¤çæä»¶
sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"
æ¥çæææä»¶å为passwdçi/Oæ´»å¨
sysdig -A -c echo_fds "fd.filename=passwd"
å±ç¤ºFDç±»åçæ´»è·I/O
sysdig -c fdbytes_by fd.type
æå kubernetes pod ç客æ·ç«¯ ip 为 172.119.100.17ï¼3000 端å£çç请æ±å
容
$ sudo sysdig -A -c echo_fds k8s.pod.name contains datacenter-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.119.100.17 fd.proto=UDP
æ¥çå ç¨ç½ç»å¸¦å®½æå¤çè¿ç¨
$ sysdig -c topprocs_net
#æ¾ç¤ºä¸»æº192.168.0.1çç½ç»ä¼ è¾æ°æ®
#ä½ä¸ºäºè¿å¶ï¼
$ sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
#ä½ä¸º ASCIIï¼
$ sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1
æ¥çè¿æ¥æå¤çæå¡å¨ç«¯å£
#å¨å·²å»ºç«çè¿æ¥æ¹é¢ï¼
$ sysdig -c fdcount_by fd.sport "evt.type=accept"
#å°±æ»åèæ°èè¨ï¼
$ sysdig -c fdbytes_by fd.sport
æ¥ç客æ·ç«¯è¿æ¥æå¤çip
#å¨å·²å»ºç«çèç³»æ¹é¢
$ sysdig -c fdcount_by fd.cip "evt.type=accept"
#å°±æ»åèæ°èè¨
$ sysdig -c fdbytes_by fd.cip
ååºææä¸æ¯è®¿é®apacheæå¡ç访é®è¿æ¥
$ sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
æ¾ç¤º wordpress1 容å¨å¨ç«¯å£ 80 ä¸åé忥æ¶çæ°æ®ï¼
$ sysdig -A -cecho_fds container.name=wordpress1 and fd.port=80
宿¶æå° mysql 容卿¥æ¶çæææ°è¿æ¥
$ sysdig -p"%fd.name" container.name=mysql and evt.type=accept
æ¥çåªäºæä»¶è±è´¹æ¶é´åå¤
$ sysdig -c topfiles_time
æ¥çhttpdè¿ç¨åªäºæä»¶è±è´¹æå¤æ¶é´
$ sysdig -c topfiles_time proc.name=httpd
æ¥çioé误æå¤çè¿ç¨
$ sysdig -c topprocs_errors
æ¥çioé误æå¤çæä»¶
$ sysdig -c topfiles_errors
æ¥çç£çio失败çè°ç¨
$ sysdig fd.type=file and evt.failed=true
æ¥çhttpdæå¼å¤±è´¥çæä»¶
$ sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
æ¥çæè±è´¹æ¶é´çç³»ç»è°ç¨
$ sysdig -c topscalls_time
æ¥çç³»ç»è°ç¨å¤±è´¥è¿åæå¤çç³»ç»è°ç¨
$ sysdig -c topscalls "evt.failed=true"
æ¥çæå¼æä»¶å¤±è´¥
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
æå°å»¶è¿å¤§äº1msçæä»¶I/Oè°ç¨
$ sysdig -c fileslower 1
å°äºä»¶æè·å°è·è¸ªæä»¶ä»¥ä¾ä»¥ååæ
$ sysdig âw myfile.scap
ä»è·è¸ªæä»¶ä¸è¯»åäºä»¶
$ sysdig âr myfile.scap
æ ¹æ®ç¹å®åæ®µè¿æ»¤äºä»¶
$ sysdig proc.name=httpd and evt.type!=open
è¿è¡å¿å以è·å¾é«çº§åè½
$ sysdig -c topprocs_cpu
ååºææå¯ç¨å段
$ sysdig -l
ååºææå¯ç¨çå¿å
$ sysdig -cl
æ¥çå ·æå®¹å¨ä¸ä¸æçè¿ç¨å表
$ sysdig -pc
æ¥ç wordpress1 容å¨ä¸è¿è¡çè¿ç¨çCPU使ç¨ç
$ sysdig -pc -c topprocs_cpu container.name=wordpress1
æ¥ç对åºäº Kubernetes ç mySQL æå¡ååºççé¨ HTTP 请æ±
$ sysdig -k http://127.0.0.1:8080 -c httptop k8s.svc.name=mysql
ååºä½¿ç¨æå¤æä»¶æ°çè¿ç¨
$ sysdig -c fdcount_by proc.name "fd.type=file"
è§å¯å为âpasswdâçæææä»¶ç I/O æ´»å¨
$ sysdig -A -c echo_fds "fd.filename=passwd"
æ¾ç¤º root 访é®çç®å½
$ sysdig -p "%evt.arg.path" "evt.type=chdir and user.name=root"
è§å¯ ssh æ´»å¨
$ sysdig -A -c echo_fds fd.name=/dev/ptmx and proc.name=sshd
æ¾ç¤ºæ¥èª python çææç³»ç»æ¥å¿æ¶æ¯
$ sysdig -c spy_syslog proc.name=python
è¶ å°¾ç³»ç»ä¸çæææ¥å¿æä»¶
$ sysdig -c spy_logs
$ csysdig -m http://127.0.0.1:8080
ä½¿ç¨ Mesos å æ°æ®è¿è¡ Csysdigï¼Sysdig åºäº curses ç UI