in container, linux, network

Sysdig: 容器故障排除工具

前言

Sysdig 是一個具備 strace + tcpdump + htop + iftop + lsof 多樣監控功能的工具,過去較常用在監控或撈系統上的資料,因近期 Container 的盛行,Troubleshooting 細粒度越來越要求,像 Sysdig 這類整合監控的工具就非常好用,尤其是查網路問題的時候,以下文章基於 Katacoda 內容撰寫而成。

Installation

Run Sysdig on container

[root@master1 ~]# docker run -it --rm --name=sysdig --privileged=true \
   --volume=/var/run/docker.sock:/host/var/run/docker.sock \
   --volume=/dev:/host/dev \
   --volume=/proc:/host/proc:ro \
   --volume=/boot:/host/boot:ro \
   --volume=/lib/modules:/host/lib/modules:ro \
   --volume=/usr:/host/usr:ro \
   sysdig/sysdig
...
...
root@dc029b36cf1d:/#
  • 該指令會運行後,exit 後即會刪除,若有想讓 sysdig 長久運行,請自行加入 -d,並用 exec 進入 Sysdig container,若不是需要長久監控除錯,建議是採用一次性執行後關閉的做法,

Run Useful Command

  • 每3秒抓一次資訊和顯示在螢幕上 (謹慎使用,資訊超多)
    • sysdig -M 3
  • 顯示可使用的鑿子 (chisels)
    • sysdig -cl
  • 列出所有運行中的 Containers
    • sysdig -c lscontainers
  • 列出每個 Container 的 CPU 使用率
    • sysdig -c topcontainers_cpu
    • -c: --chisel
  • 列出每個 Container processes 的 CPU 使用率
    • sysdig -pc -c topprocs_cpu
    • -pc: container-friendly format
    • -pk: kubernetes-friendly format
  • 列出每個 Container 網路流量
    • sysdig -pc -c topcontainers_net
  • 列出每個 Container processes 的網路流量
    • sysdig -pc -c topprocs_net
  • 列出所有網路的連接資訊
    • sysdig -pc -c topconns
  • 列出每個 Container 的 I/O 使用率
    • sysdig -c topcontainers_file
  • 列出每個 Container processes 的 I/O 使用率
    • sysdig -pc -c topprocs_file
  • 監控特定 Container IP 的傳輸內容
    • sysdig -c echo_fds fd.cip=172.18.0.2
  • 顯示 Container http 裡的 /var/www 是否有被 process apache2 開啟使用
    • sysdig "container.name=http and fd.type=file and evt.type=open and fd.name contains /var/www and proc.name=apache2"
  • 檢查 Container http 是否有正常從 /etc/hosts 解析 DNS
    • sysdig -c echo_fds "container.name=http and fd.name=/etc/hosts"
  • 列出傳輸大於 1000ms 的網路請求
    • sysdig -c netlower 1000
  • 運行 Text UI,類同于 htop 的顯示,連結裡有詳細的畫面解說
    • csysdig

Reference