找出程式消失的“案發現場”
-
問題來源:
Kafka服務出現訪問異常
-
問題分析:
檢視Broker日誌,JVM程式在沒有任何異常的情況下,直接被呼叫shutdownhook,退出應用。
從Kafka服務來看,無法確診問題。通常此類狀態是由於OS中執行的監控管理程式或者其他服務傳送kill訊號將程式殺掉。如果能夠找出傳送訊號的程式,就可以進 一步分析原因。那麼如何查詢出“罪魁禍首”?
-
查詢“罪魁禍首”
The Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s) 。藉助OS審計日誌可以找出是否有其他程式,什麼程式,什麼時候對Kafka的Broker程式傳送什麼訊號導致Kafka的Broker程式退出。那麼該如何操作呢?
-
首先確保審計服務正常
使用 service auditd status 檢視審計服務的執行情況
如果執行異常,可使用service auditd restart 重啟服務 -
在審計服務中新增審計kill操作的審計規則
auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k my_temporary_kill_audit
新增完畢後,可以使用auditctl -l命令檢視是否新增成功[root@yj01 ~]# auditctl -l No rules [root@yj01 ~]# auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k my_temporary_kill_audit [root@yj01 ~]# auditctl -l -a always,exit -F arch=b64 -S kill,tkill,tgkill -F a1!=0x0 -F key=my_temporary_kill_audit
-
使用指令碼kill掉程式以便測試
[root@yj01 ~]# cat kill_test.sh #!/bin/bash p=`ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $2}'` echo "kill ing kafka process $p" kill -9 $p echo $$ echo "killed"
-
測試審計日誌資訊
-
在kafka的broker程式所在節點執行test.sh,列印如下:
[root@yj01 ~]# date Mon Jan 28 10:55:46 CST 2019 [root@yj01 ~]# sh kill_test.sh kill ing kafka process 687802 688289 killed [root@yj01 ~]# date Mon Jan 28 10:55:50 CST 2019
-
檢視審計日誌記錄的kill資訊
使用命令ausearch -k my_temporary_kill_audit
檢視審計日誌,如下可以看出,被kill的程式為687802,與上述日誌列印的kafka程式號一致。起16進製為a7eba,與SYSCALl中中的a0一致,起a1表示接收到的為-9,即表示使用“kill -9”命令殺掉的kafka,Broker程式。而執行kill命令的程式為pid為688289,與上述指令碼中列印的命令一致。如上資訊可以說明是執行的kill_test.sh指令碼殺掉了Kafka的broker程式。
-
-
相關文章
- 找出消失的已引入的類庫
- hive迷案之消失的分割槽檔案Hive
- mac下將找出的檔案進行復制Mac
- 巧用檔案影像比較工具Kaleidoscope,幫您找出檔案的不同
- 用 pprof 找出程式碼效能瓶頸
- 消失的《行者》
- 找出文字中每個字母出現的次數
- js找出陣列中出現最多的元素和次數JS陣列
- 如何找出兩個文字檔案中有相同欄位的行
- 如何在 Linux shell 中找出所有包含指定文字的檔案Linux
- IBM AI“新藥發現”專案停止市場擴充IBMAI
- weblogic程式自動消失解決方法WebC程式
- SESSION處於KILLED狀態下如何找出對應的程式Session
- 找出陣列中只出現一次的數字陣列
- 不要現場程式設計程式設計
- Java 如何找出兩個文字檔案中有相同欄位的行Java
- 365天的消失
- 開啟maven專案之後,右邊的maven突然消失Maven
- 案發現場:被注入的軟體及 ORA-600 16703 災難的恢復
- 《.NET 5.0 背鍋案》第6集-案發現場回顧:故障情況下 Kubernetes 部署表現
- Windows 根據埠號,找出檔案安裝位置Windows
- 加速發展的低程式碼市場
- 找出能讓服裝企業發揮最大能力的“球”
- 使用JDK自帶的工具jstack找出造成執行程式死鎖的原因JDKJS行程
- 那些 “被消失” 的缺陷
- 艾偉也談專案管理,找出軟體開發過程中的BUG,你需要火眼金睛專案管理
- 找出陣列中第 k 大的數字及其出現次數陣列
- 記錄一次 Homestead 專案消失事件事件
- 程式塢裡的啟動臺圖示消失瞭如何解決?
- 如何找出被鎖定的行
- 找出N以內的偶數
- 通過程式碼審計找出網站中的XSS漏洞實戰(三)網站
- 通過程式碼審計找出網站中的 XSS 漏洞實戰 (三)網站
- 消失的遊戲祕籍遊戲
- 所以,愛是會消失的
- 如何捕捉太快消失的 toastAST
- Python實用技法第11篇:找出序列中出現次數最多的元素Python
- Oracle修改字符集前如何找出可能出現問題的資料?Oracle