系統之鍬sysdig:Linux伺服器監控和排障利器
| 2014-11-30 21:31 評論: 67 收藏: 7 分享: 147
當你需要追蹤某個程式產生和接收的系統呼叫時,首先浮現在你腦海中的是什麼?你可能會想到strace,那麼你是對的。你會使用什麼樣的命令列工具來監控原始網路通訊呢?如果你想到了tcpdump,你又作出了一個極佳的選擇。而如果你碰到必須追蹤開啟的檔案(在Unix意義上:一切皆檔案)的需求,可能你會使用lsof。
strace、tcpdump以及lsof,確實是些偉大的工具,它們應該成為每個系統管理員工具集之中的一部分,而這也正是你為什麼應該愛上sysdig的原因。它是一個強大的開源工具,用於系統級別的勘察和排障,它的建立者在介紹它時稱之為“strace+tcpdump+lsof+上面點綴著lua櫻桃的絕妙醬汁”。拋開幽默不說,sysdig的最棒特性之一在於,它不僅能分析Linux系統的“現場”狀態,也能將該狀態儲存為轉儲檔案以供離線檢查。更重要的是,你可以自定義sysdig的行為,或者甚至透過內建的(你也可以自己編寫)名為鑿子(chisel)的小指令碼增強其功能。單獨的鑿子可以以指令碼指定的各種風格分析sysdig捕獲的事件流。
在本教程中,我們將探索sysdig的安裝及其基本用法,在Linux上實施系統監控和排障。
安裝Sysdig
對於本教程,由於為了簡便、縮短安裝流程以及版本的不可知,我們將選擇使用官方網站提供的自動化安裝過程。在自動化過程中,安裝指令碼會自動檢測作業系統並安裝必需的依賴包。
以root身份執行以下命令來從官方apt/yum倉庫安裝sysdig:
# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash
安裝完成後,我們可以透過以下方法呼叫sysdig來感受一下它:
# sysdig
我們的螢幕將馬上被系統上發生的所有事件填滿,對於這些資訊,不便於我們做更多操作。要進一步處理,我們可以執行:
# sysdig -cl | less
來檢視可用的鑿子列表。
預設有以下類目可用,各個類目中分佈有多個內建的鑿子。
- 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
要獲取更多資訊、例項以及案例分析,你可以查閱專案網站。相信我,會有著無限可能,但請不要僅僅侷限於我所寫的這些。安裝sysdig,請從今天開始深入挖掘吧!
via: http://xmodulo.com/monitor-troubleshoot-linux-server-sysdig.html
作者:Gabriel Cánepa 譯者:GOLinux 校對:wxy
相關文章
- 【工具】tsar 監控Linux系統狀態的利器Linux
- Go 系統監控利器-gopsutilGo
- 系統效能監控利器-collectd詳解
- Linux系統監控命令之iotopLinux
- linux常用系統監控工具之vmstatLinux
- 容器編排系統K8s之Prometheus監控系統+Grafana部署K8SPrometheusGrafana
- 使用 Sysdig 監控您的Docker容器Docker
- Linux系統監控之磁碟I/O篇Linux
- linux效能監控利器20個Linux
- linux 系統監控工具Linux
- Linux 系統監控指南Linux
- 監控Linux系統下的host和serviceLinux
- 入門系列之使用Sysdig監視您的Ubuntu 16.04系統Ubuntu
- shell實戰之Linux主機系統監控Linux
- 伺服器監控系統部署文件伺服器
- 伺服器監控之 ping 監控伺服器
- linux系統 物理硬碟監控Linux硬碟
- 監控linux系統資源Linux
- Linux系統監控神器--CollectlLinux
- Nrpe 監控Linux系統Linux
- 監控linux系統的shellLinux
- Linux系統監控命令薦Linux
- UNIX和linux系統效能監控工具oswatcherLinux
- SRE 必備利器:域名 DNS 探測排障工具DNS
- MySQL監控利器-InnotopMySql
- 伺服器監控系統部署與配置伺服器
- 運維文件:伺服器監控系統運維伺服器
- Linux 常用系統效能監控命令Linux
- nmon 監控AIX,linux系統工具AILinux
- Solaris linux 系統監控指令碼Linux指令碼
- 使用 SNMP 和 Cacti 監控 Linux 伺服器Linux伺服器
- iStat Menus:Mac系統狀態監控的終極利器Mac
- Linux 伺服器監控Linux伺服器
- Linux優化之IO子系統監控與調優Linux優化
- 微服務架構之「 監控系統 」微服務架構
- 分散式監控系統之Zabbix proxy分散式
- 運維文件 - 伺服器效能監控系統運維伺服器
- 開源監控利器grafanaGrafana