系統之鍬sysdig:Linux服務器監控和排障利器

當你需要追蹤某個進程產生和接收的系統調用時,首先浮現在你腦海中的是什么?你可能會想到strace,那么你是對的。你會使用什么樣的命令行工具來監控原始網絡通信呢?如果你想到了tcpdump,你又作出了一個極佳的選擇。而如果你碰到必須追蹤打開的文件(在Unix意義上:一切皆文件)的需求,可能你會使用lsof。

strace、tcpdump以及lsof,確實是些偉大的工具,它們應該成為每個系統管理員工具集之中的一部分,而這也正是你為什么應該愛上sysdig的原因。它是一個強大的開源工具,用于系統級別的勘察和排障,它的創建者在介紹它時稱之為“strace+tcpdump+lsof+上面點綴著lua櫻桃的絕妙醬汁”。拋開幽默不說,sysdig的最棒特性之一在于,它不僅能分析Linux系統的“現場”狀態,也能將該狀態保存為轉儲文件以供離線檢查。更重要的是,你可以自定義sysdig的行為,或者甚至通過內建的(你也可以自己編寫)名為鑿子(chisel)的小腳本增強其功能。單獨的鑿子可以以腳本指定的各種風格分析sysdig捕獲的事件流。

系統之鍬sysdig:Linux服務器監控和排障利器

在本教程中,我們將探索sysdig的安裝及其基本用法,在Linux上實施系統監控和排障。

安裝Sysdig

對于本教程,由于為了簡便、縮短安裝流程以及版本的不可知,我們將選擇使用官方網站提供的自動化安裝過程。在自動化過程中,安裝腳本會自動檢測操作系統并安裝必需的依賴包。

以root身份運行以下命令來從官方apt/yum倉庫安裝sysdig:

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

系統之鍬sysdig:Linux服務器監控和排障利器

安裝完成后,我們可以通過以下方法調用sysdig來感受一下它:

[php]sysdig[/php]

我們的屏幕將馬上被系統上發生的所有事件填滿,對于這些信息,不便于我們做更多操作。要進一步處理,我們可以運行:

[php] sysdig -cl | less[/php]

來查看可用的鑿子列表。

系統之鍬sysdig:Linux服務器監控和排障利器

默認有以下類目可用,各個類目中分布有多個內建的鑿子。

  1. CPU Usage:CPU使用量
  2. Errors:錯誤
  3. I/O
  4. Logs:日志
  5. Misc:混雜
  6. Net:網絡
  7. Performance:性能
  8. Security:安全
  9. System State:系統狀態

要顯示指定鑿子上的信息(包括詳細的命令行用法),運行以下命令:

[php] sysdig -cl [鑿子名稱][/php]

例如,我們可以檢查“網絡”類目下關于spy_port鑿子的信息:

[php]sysdig -i spy_port[/php]

系統之鍬sysdig:Linux服務器監控和排障利器

鑿子可以通過過濾器(可同時應用于實時數據和記錄文件)組合,以獲取更多有用的輸出。

過濾器遵從“類.字段”結構。例如:

  1. fd.cip:客戶端IP地址。
  2. evt.dir:事件方向,可以是‘>’用于進入事件,或‘<’用于退出事件。

完整的過濾器列表可以通過以下命令顯示:

[php]sysdig -l[/php]

在本教程剩余部分,我將演示幾個sysdig的使用案例。

Sysdig實例: 服務器性能排障

假定你的服務器發生了性能問題(如,沒有回應,或者重大的回應延遲)。你可以使用瓶頸鑿子來顯示當前10個最慢系統調用的列表。

使用以下命令在存活服務器上進行實時檢查?!?c”標識,后跟鑿子名稱告訴sysdig運行指定的鑿子。

[php] sysdig -c bottlenecks[/php]

或者,你可以離線對服務器實施性能分析。在此種情況下,你可以保存完整的sysdig記錄到文件,然后像下面這樣針對記錄運行瓶頸鑿子。

首先,保存sysdige記錄(使用Ctrl+c來停止收集):

[php] sysdig -w trace.scap[/php]

收集完記錄后,你可以運行以下命令來檢查捕獲間隔中最慢的系統調用:

[php] sysdig -r trace.scap -c bottlenecks[/php]

系統之鍬sysdig:Linux服務器監控和排障利器

你需要關注欄#2,#3和#4,這些分別表示執行時間、進程名和PID。

Sysdig實例: 監控交互用戶活動

假定你作為系統管理員想要監控系統中交互的用戶活動(如,用戶在命令行輸入了什么命令,以及用戶去了什么目錄),這時spy_user鑿子就派上用場了。

讓我們首先通過一些額外選項來收集一個sysdig記錄。

[php] sysdig -s 4096 -z -w /mnt/sysdig/$(hostname).scap.gz[/php]

  1. “-s 4096”告訴sysdig每個事件捕獲4096字節。
  2. “-z” (與“-w”一起使用)為記錄文件啟用壓縮。
  3. “-w ”保存sysdig記錄到指定的文件。

在上面的例子中,我們自定義了基于每個主機的壓縮的記錄文件的名稱。記住,你可以在任何時候按下Ctrl+c來打斷sysdig的執行。

在我們收集到了合理數量的數據后,我們可以通過運行以下命令來查看每個用戶的交互活動:

[php] sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users[/php]

系統之鍬sysdig:Linux服務器監控和排障利器

上面輸出的第一欄表示與指定用戶的活動相關進程的PID。

如果你想要定位一個指定的用戶,以及只監控該用戶的活動又怎么樣呢?你可以通過用戶名對spy_users鑿子的結果進行過濾:

[php] sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users "user.name=xmodulo"[/php]

系統之鍬sysdig:Linux服務器監控和排障利器

Sysdig實例: 監控文件I/O

我們可以使用“-p”標識來自定義sysdig記錄的輸出格式,并指定雙引號括起來的想要的字段(如用戶名、進程名,以及文件或套接口名稱)。在本例中,我們將創建一個記錄文件,該文件將只包含在家目錄中的寫入事件(我們今后可以使用“sysdig -r writetrace.scap.gz”來檢測該文件)。

[php] sysdig -p "%user.name %proc.name %fd.name" "evt.type=write and fd.name contains /home/" -z -w writetrace.scap.gz[/php]

系統之鍬sysdig:Linux服務器監控和排障利器

Sysdig實例: 監控網絡I/O

作為服務器排障的一部分,你可能想要監聽網絡通信,此工作通常由tcpdump做。對于sysdig,可以很容易進行通信嗅探,其風格更為對用戶友好。

例如,你可以檢查由特定IP地址,特定進程(如apache2)提供的數據(ASCII編碼格式):

[php]sysdig -s 4096 -A -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2[/php]

如果你想要監控原生數據傳輸(二進制格式),請把“-A”替換為“-X”:

[php]sysdig -s 4096 -X -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2[/php]

要獲取更多信息、實例以及案例分析,你可以查閱項目網站。相信我,會有著無限可能,但請不要僅僅局限于我所寫的這些。安裝sysdig,請從今天開始深入挖掘吧!

原文鏈接:http://linux.cn/article-4341-1.html

原創文章,作者:追馬,如若轉載,請注明出處:http://www.www58058.com/378

(0)
追馬追馬
上一篇 2015-02-09 11:19
下一篇 2015-02-10 04:38

相關推薦

  • Linux 第四天: (07月28日) 練習和作業

    Linux 第四天: (07月28日) 練習和作業         定義別名命令baketc, 每天將/etc/目錄下所有文件, 備份到/testdir獨立的子目錄下, 并要求子目錄格式為backupYYYY-mm-dd, 備份過程可見 alias baketc='cp -a /etc/ /testdir/b…

    Linux干貨 2016-08-08
  • 馬哥教育網絡班20期+第2周課程練習

    馬哥教育網絡班20期+第2周課程練習 練習題: 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。3、請使用命令行展開功能來完成以下練習:   (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d  …

    Linux干貨 2016-06-23
  • SELinux

    軟件的安全性 提高軟件的安全性 選擇安全系數較高的系統 提高現有系統的安全性 計算機的安全等級 D:最低的安全級別,提供最少的安全防護,系統訪問無限制。DOS C:訪問控制的權限,能夠實現可控的安全防護,個人賬戶管理,審計和資源隔離 Unix Linux windowNT B:支持多級安全,通過硬件對安全數據進行保護 A:最高級別,提供驗證設計,要求數據從生…

    Linux干貨 2017-05-21
  • 關于grub的一些實驗

    關于grub的一些實驗 手動引導進入系統 也就是寫 grub.conf文件 改grub界面圖片 1、進入/root/grub目錄發現里面有很多東西,查看grub.conf可以知 2、我們查看下圖片的格式 這是一個gzip壓縮的圖片文件 用vim可以查看開頭經查得知這是一個640*480的文件而且只支持14色 3、自定義圖片 先照一張圖片用工具改成這種想要的格…

    Linux干貨 2016-09-16
  • 馬哥linux2014|2015全套教程

    1、本課程全程將基于集成了Openstack云環境、支持高精度時間(PTP)及虛擬化性能大大提升的RHEL 6.5或CentOS 6.6,間或介紹CentOS 7系統的使用; 2、此文章給出的只是個課程知識點框架,實際講解過程相當精細;另外,知識點講授的次序未必同此文章所標示的順序相同; 3、第15期面授班定于2015年3月24號開課;本期將會是馬哥教育數年…

    Linux干貨 2015-07-14
  • redis主從復制(2)— replication buffer與replication backlog

    1、redis主從復制過程先不解釋replication buffer和replication backlog,而先看看redis主從復制的過程。 redis的主從復制分為兩個階段: 1)同步(sync rdb snapshot):slave復制master的某時間點(t)的全量數據,t為master接收到slave的sync命令后執行rdb bgsave的…

    Linux干貨 2016-04-05
欧美性久久久久