歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~
介紹
Sysdig是一個全面的開源系統活動監控,捕獲和分析應用程式。它具有強大的過濾語言和可自定義的輸出,以及可以使用稱為chisels 的Lua指令碼擴充套件的核心功能。
應用程式通過訪問核心來工作, 核心允許它檢視每個系統呼叫以及通過核心傳遞的所有資訊。這也使其成為監視和分析系統上執行的應用程式容器生成的系統活動和事件的出色工具。
核心Sysdig應用程式監視其安裝的伺服器。但是,該專案背後的公司提供了一個名為Sysdig Cloud的託管版本,可以遠端監控任意數量的伺服器。
獨立應用程式可在大多數Linux發行版上使用,但在Windows和macOS上也可用,功能更為有限。除了sysdig
命令列工具,Sysdig還帶有一個csysdig
帶有類似選項的互動式UI 。
在本教程中,您將安裝並使用Sysdig來監視Ubuntu 16.04伺服器。您將流式傳輸實時事件,將事件儲存到檔案,過濾結果以及瀏覽csysdig
互動式UI。
準備
要完成本教程,您需要:
- 一臺Ubuntu 16.04 的伺服器,已經設定好一個可以使用
sudo
命令的非root
的賬戶。
第1步 – 使用官方指令碼安裝Sysdig
在Ubuntu儲存庫中有一個Sysdig包,但它通常是當前版本的一兩個版本。例如,在釋出時,使用Ubuntu的軟體包管理器安裝Sysdig將為您提供Sysdig 0.8.0。但是,您可以使用專案開發頁面中的官方指令碼來安裝它,這是推薦的安裝方法。這是我們將使用的方法。
但首先,更新包資料庫以確保您擁有最新的可用包列表:
$ sudo apt-get update
複製程式碼
現在curl
使用以下命令下載Sysdig的安裝指令碼:
$ curl https://s3.amazonaws.com/download.draios.com/stable/install-sysdig -o install-sysdig
複製程式碼
這會將安裝指令碼下載install-sysdig
到當前資料夾的檔案中。您需要使用提升的許可權執行此指令碼,並且執行從Internet下載的指令碼是危險的。在執行指令碼之前,通過在文字編輯器中開啟它或使用less
命令在螢幕上顯示內容來稽核其內容:
$ less ./install-sysdig
複製程式碼
一旦您熟悉指令碼將執行的命令,請使用以下命令執行指令碼:
$ cat ./install-sysdig | sudo bash
複製程式碼
命令將安裝所有依賴項,包括核心標頭檔案和模組。安裝的輸出類似於以下內容:
* Detecting operating system
* Installing Sysdig public key
OK
* Installing sysdig repository
* Installing kernel headers
* Installing sysdig
...
sysdig-probe:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.4.0-59-generic/updates/dkms/
depmod....
DKMS: install completed.
Processing triggers for libc-bin (2.23-0ubuntu5) ...
複製程式碼
現在您已經安裝了Sysdig,讓我們看一下使用它的一些方法。
第2步 – 實時監控您的系統
在本節中,您將使用 sysdig
命令檢視Ubuntu 16.04伺服器上的某些事件。 sysdig
命令需要root許可權才能執行,並且它需要任意數量的選項和過濾器。執行 命令最簡單的方法是不帶任何引數。這將為您提供每兩秒重新整理一次的系統資料的實時檢視:
$ sudo sysdig
複製程式碼
但是,正如您在執行命令時所看到的那樣,分析正在寫入螢幕的資料可能很困難,因為它會持續流動,並且您的伺服器上發生了很多事件。按下CTRL+C
停止sysdig
。
在我們使用一些選項再次執行命令之前,讓我們通過檢視命令的示例輸出來熟悉輸出:
253566 11:16:42.808339958 0 sshd (12392) > rt_sigprocmask
253567 11:16:42.808340777 0 sshd (12392) < rt_sigprocmask
253568 11:16:42.808341072 0 sshd (12392) > rt_sigprocmask
253569 11:16:42.808341377 0 sshd (12392) < rt_sigprocmask
253570 11:16:42.808342432 0 sshd (12392) > clock_gettime
253571 11:16:42.808343127 0 sshd (12392) < clock_gettime
253572 11:16:42.808344269 0 sshd (12392) > read fd=10(<f>/dev/ptmx) size=16384
253573 11:16:42.808346955 0 sshd (12392) < read res=2 data=..
複製程式碼
輸出的列是:
%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info
複製程式碼
以下是每列的含義:
- evt.num是增量事件編號。
- evt.outputtime是事件時間戳,您可以自定義。
- evt.cpu是捕獲事件的CPU編號。在上面的輸出中,evt.cpu為0,這是伺服器的第一個CPU。
- proc.name是生成事件的程式的名稱。
- thread.tid是生成事件的TID,它對應於單執行緒程式的PID。
- evt.dir是事件方向。您將看到**>用於輸入事件和<**用於退出事件。
- evt.type是事件的名稱,例如`open`,`read`,`write`等。
- evt.info是事件引數列表。在系統呼叫的情況下,這些往往對應於系統呼叫引數,但情況並非總是如此:出於簡單性或效能原因,排除了一些系統呼叫引數。
像上一個sysdig
命令一樣,執行幾乎沒有任何價值,因為流入的資訊太多了。但是您可以使用以下語法對命令應用選項和過濾器:
$ sudo sysdig [option] [filter]
複製程式碼
您可以使用以下方法檢視可用過濾器的完整列表:
$ sysdig -l
複製程式碼
有一個廣泛的過濾器列表,涵蓋了幾個類或類別。以下是一些課程:
- fd:過濾檔案描述符(FD)資訊,如FD編號和FD名稱。
- process:過濾程式資訊,例如生成事件的程式的id和名稱。
- evt:過濾事件資訊,如事件編號和時間。
- user:過濾使用者資訊,如使用者ID,使用者名稱,使用者主目錄或登入shell。
- group:過濾組資訊,例如組ID和名稱。
- syslog:過濾syslog資訊,如設施和嚴重性。
- fdlist:過濾輪詢事件的檔案描述符。
由於本教程中的每個過濾器都不實用,所以讓我們嘗試一下,從syslog類中的syslog.severity.str過濾器開始,它允許您檢視以特定嚴重性級別傳送到syslog的訊息。此命令顯示在“資訊”級別傳送到syslog的訊息:
$ sudo sysdig syslog.severity.str=info
複製程式碼
**注意:**根據伺服器上的活動級別,在輸入此命令後可能看不到任何輸出,或者在看到任何輸出之前可能需要很長時間。要強制發出問題,請開啟另一個終端模擬器並執行將向syslog生成訊息的操作。例如,執行包更新,升級系統或安裝任何包。
按下CTRL+C
即可終止命令。
輸出應 很容易解釋,看起來應 是這樣的:
10716 03:15:37.111266382 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:37 sudo: pam_unix(sudo:session): session opened for user root b
618099 03:15:57.643458223 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:57 sudo: pam_unix(sudo:session): session closed for user root
627648 03:16:23.212054906 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session opened for user root b
629992 03:16:23.248012987 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session closed for user root
639224 03:17:01.614343568 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session): session opened for user
639530 03:17:01.615731821 0 cron (27043) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27043]: (root) CMD ( cd / && run-parts --report /etc/
640031 03:17:01.619412864 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session):
複製程式碼
您還可以過濾單個流程。例如,從nano
上檢視事件,請執行以下命令:
$ sudo sysdig proc.name=nano
複製程式碼
由於此命令檔案管理器已啟用nano
,您必須使用nano
文字編輯器開啟檔案以檢視任何輸出。開啟另一個終端編輯器,連線到您的伺服器,然後使用nano
開啟文字檔案。寫幾個字元並儲存檔案。然後返回原始終端。
然後,您將看到類似於此的一些輸出:
21840 11:26:33.390634648 0 nano (27291) < mmap res=7F517150A000 vm_size=8884 vm_rss=436 vm_swap=0
21841 11:26:33.390654669 0 nano (27291) > close fd=3(<f>/lib/x86_64-linux-gnu/libc.so.6)
21842 11:26:33.390657136 0 nano (27291) < close res=0
21843 11:26:33.390682336 0 nano (27291) > access mode=0(F_OK)
21844 11:26:33.390690897 0 nano (27291) < access res=-2(ENOENT) name=/etc/ld.so.nohwcap
21845 11:26:33.390695494 0 nano (27291) > open
21846 11:26:33.390708360 0 nano (27291) < open fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) name=/lib/x86_64-linux-gnu/libdl.so.2 flags=4097(O_RDONLY|O_CLOEXEC) mode=0
21847 11:26:33.390710510 0 nano (27291) > read fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) size=832
複製程式碼
再次,通過按下CTRL+C
來終止命令。
獲取系統事件的實時檢視sysdig
並不總是使用它的最佳方法。幸運的是,還有另一種方法 – 將事件捕獲到檔案中以便稍後進行分析。我們來看看如何。
第3步 – 使用Sysdig捕獲系統活動到檔案
使用系統事件捕獲檔案可以sysdig
讓您在以後分析這些事件。為了節省系統事件記錄到檔案中,傳遞sysdig
的-w
選項,並指定目標檔名,如下所示:
$ sudo sysdig -w sysdig-trace-file.scap
複製程式碼
Sysdig將繼續將生成的事件儲存到目標檔案,直到您按下為止CTRL+C
。隨著時間的推移, 檔案可能會變得非常大。但是,使用-n
選項,您可以指定希望Sysdig捕獲的事件數。捕獲目標事件數後,它將退出。例如,要將300個事件儲存到檔案,請輸入:
$ sudo sysdig -n 300 -w sysdig-file.scap
複製程式碼
雖然您可以使用Sysdig將指定數量的事件捕獲到檔案中,但更好的方法是使用**-C**選項將捕獲分解為特定大小的較小檔案。為了不淹沒本地儲存,您可以指示Sysdig只保留一些儲存的檔案。換句話說,Sysdig支援在一個命令中將事件捕獲到具有檔案輪換的日誌。
例如,要將事件連續儲存到大小不超過1 MB的檔案中,並且只保留最後五個檔案(這是**-W**選項的作用),請執行以下命令:
$ sudo sysdig -C 1 -W 5 -w sysdig-trace.scap
複製程式碼
列出使用的檔案ls -l sysdig-trace*
,你會看到與此類似的輸出,有五個日誌檔案:
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap0
-rw-r--r-- 1 root root 952K Nov 23 04:14 sysdig-trace.scap1
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap2
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap3
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap4
複製程式碼
與實時捕獲一樣,您可以對已儲存的事件應用過濾器。例如,要儲存程式生成的200個事件nano
,請輸入以下命令:
$ sudo sysdig -n 200 -w sysdig-trace-nano.scap proc.name=nano
複製程式碼
然後,在連線到伺服器的另一個終端中,開啟檔案nano
並通過輸入文字或儲存檔案生成一些事件。將捕獲事件sysdig-trace-nano.scap
直到sysdig
記錄200個事件。
您將如何捕獲伺服器上生成的所有寫入事件?你會像這樣應用過濾器:
$ sudo sysdig -w sysdig-write-events.scap evt.type=write
複製程式碼
片刻之後按下CTRL+C
退出。在將系統活動儲存到檔案時,您可以做更多的事情sysdig
,但是這些示例應 讓您非常清楚如何去做。我們來看看如何分析這些檔案。
第4步 – 使用Sysdig讀取和分析事件資料
使用Sysdig從檔案中讀取捕獲的資料就像將**-r**開關傳遞給sysdig
命令一樣簡單,如下所示:
$ sudo sysdig -r sysdig-trace-file.scap
複製程式碼
這會將檔案的整個內容轉儲到螢幕上,這不是最好的方法,特別是如果檔案很大的話。幸運的是,您可以在讀取寫入時應用的檔案時應用相同的過濾器。
例如,要讀取sysdig-trace-nano.scap
您建立的跟蹤檔案,但只檢視特定型別的事件(如寫入事件),請輸入以下命令:
$ sysdig -r sysdig-trace-nano.scap evt.type=write
複製程式碼
輸出應類似於:
21340 13:32:14.577121096 0 nano (27590) < write res=1 data=.
21736 13:32:17.378737309 0 nano (27590) > write fd=1 size=23
21737 13:32:17.378748803 0 nano (27590) < write res=23 data=#This is a test file..#
21752 13:32:17.611797048 0 nano (27590) > write fd=1 size=24
21753 13:32:17.611808865 0 nano (27590) < write res=24 data= This is a test file..#
21768 13:32:17.992495582 0 nano (27590) > write fd=1 size=25
21769 13:32:17.992504622 0 nano (27590) < write res=25 data=TThis is a test file..# T
21848 13:32:18.338497906 0 nano (27590) > write fd=1 size=25
21849 13:32:18.338506469 0 nano (27590) < write res=25 data=hThis is a test file..[5G
21864 13:32:18.500692107 0 nano (27590) > write fd=1 size=25
21865 13:32:18.500714395 0 nano (27590) < write res=25 data=iThis is a test file..[6G
21880 13:32:18.529249448 0 nano (27590) > write fd=1 size=25
21881 13:32:18.529258664 0 nano (27590) < write res=25 data=sThis is a test file..[7G
21896 13:32:18.620305802 0 nano (27590) > write fd=1 size=25
複製程式碼
讓我們看一下您在上一節中儲存的檔案的內容:sysdig-write-events.scap
檔案。我們知道儲存到檔案中的所有事件都是寫事件,所以讓我們檢視內容:
$ sudo sysdig -r sysdig-write-events.scap evt.type=write
複製程式碼
這是部分輸出。如果捕獲事件時伺服器上有任何SSH活動,您將看到類似的內容:
42585 19:58:03.040970004 0 gmain (14818) < write res=8 data=........
42650 19:58:04.279052747 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42651 19:58:04.279128102 0 sshd (22863) < write res=28 data=.8c..jp...P........s.E<...s.
42780 19:58:06.046898181 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
42781 19:58:06.046969936 0 sshd (12392) < write res=28 data=M~......V.....Z.....o...N..
42974 19:58:09.338168745 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42975 19:58:09.338221272 0 sshd (22863) < write res=28 data=66..J.._s&U.UL8..A....U.qV.*
43104 19:58:11.101315981 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43105 19:58:11.101366417 0 sshd (12392) < write res=28 data=d).(...e....l..D.*_e...}..!e
43298 19:58:14.395655322 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43299 19:58:14.395701578 0 sshd (22863) < write res=28 data=.|.o.......V...2.$_...{3.3|
43428 19:58:16.160703443 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43429 19:58:16.160788675 0 sshd (12392) < write res=28 data=..Hf.%.Y.,.s...q...=..(.1De.
43622 19:58:19.451623249 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43623 19:58:19.451689929 0 sshd (22863) < write res=28 data=.ZT^U.pN....Q.z.!.i-Kp.o.y..
43752 19:58:21.216882561 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
複製程式碼
請注意,前面輸出中的所有行都包含11.11.11.11:51282->22.22.22.22:ssh。這些是從客戶端的外部IP地址11.11.11.11
到伺服器22.22.22.22
的IP地址的事件。這些事件發生在與伺服器的SSH連線上,因此需要這些事件。但是有沒有其他SSH寫事件不是來自這個已知的客戶端IP地址?這很容易找到。
您可以使用Sysdig的許多比較運算子。你看到的第一個是**=。其他的是!=,>,> =,<和<=。在以下命令中,fd.rip過濾遠端IP地址。我們將使用!=**比較運算子來查詢來自以下IP地址的事件:
$ sysdig -r sysdig-write-events.scap fd.rip!=11.11.11.11
複製程式碼
以下輸出中顯示了部分輸出, 輸出顯示存在來自客戶端IP地址以外的IP地址的寫入事件:
294479 21:47:47.812314954 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294480 21:47:47.812315804 0 sshd (28766) < read res=1 data=T
294481 21:47:47.812316247 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294482 21:47:47.812317094 0 sshd (28766) < read res=1 data=Y
294483 21:47:47.812317547 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294484 21:47:47.812318401 0 sshd (28766) < read res=1 data=.
294485 21:47:47.812318901 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294486 21:47:47.812320884 0 sshd (28766) < read res=1 data=.
294487 21:47:47.812349108 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=4(F_GETFL)
294488 21:47:47.812350355 0 sshd (28766) < fcntl res=2(<f>/dev/null)
294489 21:47:47.812351048 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=5(F_SETFL)
294490 21:47:47.812351918 0 sshd (28766) < fcntl res=0(<f>/dev/null)
294554 21:47:47.813383844 0 sshd (28767) > write fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=976
294555 21:47:47.813395154 0 sshd (28767) < write res=976 data=........zt.....L.....}....curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-s
294691 21:47:48.039025654 0 sshd (28767) > read fd=3(<4t>221.229.172.117:49802->45.55.71.190:ssh) size=8192
複製程式碼
進一步調查還顯示,流氓IP地址33.33.33.33
屬於中國的一臺機器。這是值得擔心的事情!這只是一個例子,說明如何使用Sysdig密切注意伺服器上的流量。
讓我們看一下使用一些額外的指令碼來分析事件流。
第5步 – 使用Sysdigchisels進行系統監控和分析
在Sysdig的說法中,chisels是可以使用的Lua指令碼,用於分析Sysdig事件流以執行有用的操作。每個Sysdig安裝都附帶有近50個指令碼,您可以使用以下命令檢視系統上可用的chisels列表:
$ sysdig -cl
複製程式碼
一些更有趣的chisels包括:
- netstat:列出(並可選擇過濾)網路連線。
- shellshock_detect:列印shellshock攻擊
- spy_users:顯示互動式使用者活動。
- list login shells:列出登入shell ID。
- spy_ip:顯示使用給定IP地址交換的資料。
- spy_port:顯示使用給定IP埠號交換的資料。
- spy_file:回顯任何程式對所有檔案的讀取或寫入。(可選)您可以提供檔名,以僅攔截對檔案的讀取或寫入。
- httptop:顯示最熱門的HTTP請求
有關chisels的更詳細描述(包括任何相關引數),請使用-i
標誌,然後使用chisels的名稱。因此,例如,要檢視有關netstat
chisels的更多資訊,請輸入:
$ sysdig -i netstat
複製程式碼
既然您已經瞭解了使用 netstat
chisels所需要知道的一切,請通過執行以下方式來監控系統:
$ sudo sysdig -c netstat
複製程式碼
輸出應類似於以下內容:
Proto Server Address Client Address State TID/PID/Program Name
tcp 22.22.22.22:22 11.11.11.11:60422 ESTABLISHED 15567/15567/sshd
tcp 0.0.0.0:22 0.0.0.0:* LISTEN 1613/1613/sshd
複製程式碼
如果您在“ 客戶端地址”列中看到來自您的IP地址以外的ESTABLISHED SSH連線,那麼這應 是一個紅色標記,您應 進行更深入的探測。
一個更有趣的chiselsspy_users
,它允許您檢視系統上的互動式使用者活動。
退出此命令:
$ sudo sysdig -c spy_users
複製程式碼
然後,開啟第二個終端並連線到您的伺服器。在第二個終端中執行一些命令,然後返回到終端執行sysdig
。您在第一個終端中輸入的命令將在您執行sysdig -c spy_users
命令的終端上回顯。
接下來,讓我們探索一個圖形工具Csysdig。
第6步 – 使用Csysdig進行系統監控和分析
Csysdig是Sysdig附帶的另一個實用程式。它具有互動式使用者介面,提供與命令列相同的功能sysdig
。這就像top
,htop
和strace
,但功能豐富的多。
與sysdig
命令一樣, csysdig
命令可以執行實時監視,並可以將事件捕獲到檔案中以供以後分析。但是csysdig
,您可以每兩秒重新整理一次更實用的系統資料實時檢視。要檢視示例,請輸入以下命令:
$ sudo csysdig
複製程式碼
這將開啟如下圖所示的介面, 介面顯示受監控主機上的所有使用者和應用程式生成的事件資料。
Csysdig的主介面
在介面的底部有幾個按鈕,您可以使用它們來訪問程式的不同方面。最值得注意的是“ 檢視”按鈕,它類似於收集的指標類別csysdig
。開箱即用的檢視有29個,包括程式,系統呼叫,執行緒,容器,程式CPU,頁面錯誤,檔案和目錄。
當您在csysdig
沒有引數的情況下啟動時 ,您將從“ **程式”**檢視中看到實時事件。通過單擊“ **檢視”**按鈕或F2
按鍵,您將看到可用檢視列表,包括列的說明。您還可以通過F7
按鍵或單擊“ **圖例”**按鈕來檢視列的說明。csysdig
通過F1
按鍵或單擊“ **幫助”**按鈕,可以訪問應用程式本身()的摘要手冊頁。
下圖顯示了應用程式的Views介面的列表。
Csysdig檢視視窗
**注意:**對於每個按鈕,按鈕的左側都有相應的鍵盤快捷鍵或熱鍵。按兩次快捷鍵將返回上一個視窗。按下
ESC
鍵將獲得相同的結果。
雖然你可以在csysdig
沒有任何選項和引數的情況下執行,但命令的語法與sysdig
s一樣,通常採用以下形式:
$ sudo csysdig [option]... [filter]
複製程式碼
最常見的選項是**-d**,用於修改更新之間的延遲(以毫秒為單位)。例如,要檢視csysdig
每10秒更新一次的輸出,而不是預設值2秒,請輸入:
$ sudo csysdig -d 10000
複製程式碼
您可以使用**-E**選項從檢視中排除使用者和組資訊:
$ sudo csysdig -E
複製程式碼
這可以使csysdig
啟動更快,但在大多數情況下速度增益可以忽略不計。
要指示csysdig
在一定數量的事件後停止捕獲,請使用**-n**選項。應用程式將在達到 數字後退出。被捕獲事件的數量必須在五個數字中; 否則你甚至不會看到csysdig
UI:
$ sudo csysdig -n 100000
複製程式碼
分析跟蹤檔案,通過csysdig
了**-r**選項,如下所示:
$ sudo csysdig -r sysdig-trace-file.scap
複製程式碼
您可以使用與之相同的過濾器sysdig
來限制csysdig
輸出。因此,例如,您可以通過csysdig
使用以下命令啟動使用者來過濾使用者輸出,而不是檢視系統上所有使用者生成的事件資料, 命令將顯示僅由root使用者生成的事件資料:
$ sudo csysdig user.name=root
複製程式碼
輸出應類似於下圖中顯示的輸出,但輸出將反映伺服器上正在執行的內容:
root生成的Csysdig資料
要檢視生成事件的可執行檔案的輸出,請將過濾器的名稱傳遞給不帶路徑的二進位制檔案。以下示例將顯示 nano
命令生成的所有事件。換句話說,它將顯示文字編輯器所在的所有開啟檔案nano
:
$ sudo csysdig proc.name=nano
複製程式碼
有幾十個可用的過濾器,您可以使用以下命令檢視:
$ sudo csysdig -l
複製程式碼
您會注意到,這與您用於檢視sysdig
命令可用的過濾器的選項相同。所以sysdig
,csysdig
幾乎是一樣的。主要區別在於csysdig
滑鼠友好的互動式UI。要csysdig
隨時退出,請按Q
鍵盤上的鍵。
結論
Sysdig可幫助您監控伺服器並對其進行故障排除。它將使您深入瞭解受監視主機上的所有系統活動,包括應用程式容器生成的活動。雖然本教程未特別涵蓋容器,但監視容器生成的系統活動的能力使Sysdig與類似的應用程式區別開來。專案主頁上提供了更多資訊。
Sysdig的chisels是核心Sysdig功能的強大擴充套件。它們是用Lua編寫的,所以你總是可以自定義它們或者從頭開始編寫它們。要了解有關製作chisels的更多資訊,請訪問 專案的官方chisels 頁面。
如果您對其他監視系統的工具,例如:使用Ubuntu 16.04上的osquery監視系統安全性,可以訪問騰訊雲訪問更多的教程。
參考文獻:《How To Monitor Your Ubuntu 16.04 System with Sysdig》
問答
相關閱讀
此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1172074?fromSource=waitui
歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社群!