AWS為EC2增加了診斷中斷(Diagnostic Interrupt)API,當EC2實例失去回應的時候,用戶就能使用這個API,遠端觸發核心錯誤(Kernel Panic),並視作業系統的設定,進行記憶體傾印與重新啟動等動作。

系統管理員在為沒有回應的伺服器除錯時,有時候必須實體按下非可封鎖中斷(non-maskable interrupt,NMI)按鈕,或是透過序列介面向命令控制器發送訊號,以觸發系統傾印核心狀態到檔案中,這個核心轉儲(Core Dump)的檔案會包含崩潰程序的記憶體映像檔、程式計數器以及系統暫存器等資訊,供系統管理員找出核心失去回應的原因。

而現在AWS為EC2增加了能讓使用者遠端觸發核心錯誤的API,EC2:SendDiagnosticInterrupt API會發送類似按下實體NMI按鈕的診斷中斷訊號到EC2實例上,並讓實例管理程式對作業系統發送NMI命令。當作業系統收到NMI中斷後,根據作業系統的配置執行動作,一般會產生核心轉儲資料檔案,並接著重載核心或是重新啟動系統。

AWS提到,用戶使用這個觸發核心錯誤API,總共有三個步驟,分別是配置作業系統、觸發核心錯誤,接著就能分析傾印的內容。在作業系統配置方面,EC2中的Windows Server AMI已經預設啟用記憶體傾印功能,且會在儲存完核心轉儲之後自動重新啟動。而Amazon Linux 2的用戶,則必須要自己安裝傾印工具,進行一次性設置,設定包括保留給核心轉儲的記憶體大小,以及收到中斷時觸發核心錯誤等。

當配置完成,用戶就能夠透過AWS CLI或是SDK,使用這個API觸發核心錯誤,系統會在傾印記憶體之後自動重新啟動系統,CLI並不會收到任何回傳值,AWS表示,這是正常的現象,而當實例重新啟動之後,用戶可以在/var/crash找到傾印的崩潰資料。最後,用戶就能夠分析傾印資料,在Linux上,用戶必須額外安裝分析核心轉儲用的公用程式。

AWS用戶可以在IAM政策中,設定組織中有權限傳送診斷中斷的成員。目前這個API已經在所有公共AWS區域開放使用


Advertisement

更多 iThome相關內容