安裝Sysdig
html
對於本教程,因爲爲了簡便、縮短安裝流程以及版本的不可知,咱們將選擇使用官方網站提供的自動化安裝過程。在自動化過程當中,安裝腳本會自動檢測操做系統並安裝必需的依賴包。linux
以root身份運行如下命令來從官方apt/yum倉庫安裝sysdig:ios
# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bashapache
安裝完成後,咱們能夠經過如下方法調用sysdig來感覺一下它:安全
# sysdigbash
咱們的屏幕將立刻被系統上發生的全部事件填滿,對於這些信息,不便於咱們作更多操做。要進一步處理,咱們能夠運行:服務器
# sysdig -cl | less網絡
來查看可用的鑿子列表。less
默認有如下類目可用,各個類目中分佈有多個內建的鑿子。curl
CPU Usage:CPU使用量
Errors:錯誤
I/O
Logs:日誌
Misc:混雜
Net:網絡
Performance:性能
Security:安全
System State:系統狀態
要顯示指定鑿子上的信息(包括詳細的命令行用法),運行如下命令:
# sysdig -cl [鑿子名稱]
例如,咱們能夠檢查「網絡」類目下關於spy_port鑿子的信息:
# sysdig -i spy_port
鑿子能夠經過過濾器(可同時應用於實時數據和記錄文件)組合,以獲取更多有用的輸出。
過濾器聽從「類.字段」結構。例如:
fd.cip:客戶端IP地址。
evt.dir:事件方向,能夠是‘>’用於進入事件,或‘<’用於退出事件。
完整的過濾器列表能夠經過如下命令顯示:
# sysdig -l
在本教程剩餘部分,我將演示幾個sysdig的使用案例。
Sysdig實例: 服務器性能排障
假定你的服務器發生了性能問題(如,沒有迴應,或者重大的迴應延遲)。你可使用瓶頸鑿子來顯示當前10個最慢系統調用的列表。
使用如下命令在存活服務器上進行實時檢查。「-c」標識,後跟鑿子名稱告訴sysdig運行指定的鑿子。
# sysdig -c bottlenecks
或者,你能夠離線對服務器實施性能分析。在此種狀況下,你能夠保存完整的sysdig記錄到文件,而後像下面這樣針對記錄運行瓶頸鑿子。
首先,保存sysdige記錄(使用Ctrl+c來中止收集):
# sysdig -w trace.scap
收集完記錄後,你能夠運行如下命令來檢查捕獲間隔中最慢的系統調用:
# sysdig -r trace.scap -c bottlenecks
你須要關注欄#2,#3和#4,這些分別表示執行時間、進程名和PID。
Sysdig實例: 監控交互用戶活動
假定你做爲系統管理員想要監控系統中交互的用戶活動(如,用戶在命令行輸入了什麼命令,以及用戶去了什麼目錄),這時spy_user鑿子就派上用場了。
讓咱們首先經過一些額外選項來收集一個sysdig記錄。
# sysdig -s 4096 -z -w /mnt/sysdig/$(hostname).scap.gz
「-s 4096」告訴sysdig每一個事件捕獲4096字節。
「-z」 (與「-w」一塊兒使用)爲記錄文件啓用壓縮。
「-w 」保存sysdig記錄到指定的文件。
在上面的例子中,咱們自定義了基於每一個主機的壓縮的記錄文件的名稱。記住,你能夠在任什麼時候候按下Ctrl+c來打斷sysdig的執行。
在咱們收集到了合理數量的數據後,咱們能夠經過運行如下命令來查看每一個用戶的交互活動:
# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users
上面輸出的第一欄表示與指定用戶的活動相關進程的PID。
若是你想要定位一個指定的用戶,以及只監控該用戶的活動又怎麼樣呢?你能夠經過用戶名對spy_users鑿子的結果進行過濾:
# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users "user.name=xmodulo"
Sysdig實例: 監控文件I/O
咱們可使用「-p」標識來自定義sysdig記錄的輸出格式,並指定雙引號括起來的想要的字段(如用戶名、進程名,以及文件或套接口名稱)。在本例中,咱們將建立一個記錄文件,該文件將只包含在家目錄中的寫入事件(咱們從此可使用「sysdig -r writetrace.scap.gz」來檢測該文件)。
# sysdig -p "%user.name %proc.name %fd.name" "evt.type=write and fd.name contains /home/" -z -w writetrace.scap.gz
Sysdig實例: 監控網絡I/O
做爲服務器排障的一部分,你可能想要監聽網絡通訊,此工做一般由tcpdump作。對於sysdig,能夠很容易進行通訊嗅探,其風格更爲對用戶友好。
例如,你能夠檢查由特定IP地址,特定進程(如apache2)提供的數據(ASCII編碼格式):
# sysdig -s 4096 -A -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2
若是你想要監控原生數據傳輸(二進制格式),請把「-A」替換爲「-X」:
# sysdig -s 4096 -X -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2
原文: Gabriel Cánepa
譯文: GOLinux
連接:https://linux.cn/article-4341-1.html