摘要:?操作系統(tǒng)配置不當或程序過載可能會造成ECS系統(tǒng)內(nèi)核崩潰,這將導致夯機、異常重啟或無法正常啟動等問題。為了分析根本原因,運維人員通常要查看系統(tǒng)日志,但此時也許實例已經(jīng)無法正常遠程連接,使得分析診斷非常困難。阿里云提供了一鍵查看系統(tǒng)日志和屏幕截圖功能,為運維人員提供一個方便的工具,支持系統(tǒng)故障的分析。
云服務器 ECS(Elastic Compute Service)是一種彈性可伸縮的計算服務,助您降低 IT 成本,提升運維效率,使您更專注于核心業(yè)務創(chuàng)新。阿里云使用嚴格的IDC標準、服務器準入標準以及運維標準,保證云計算整個基礎框架的高可用性、數(shù)據(jù)的可靠性以及云服務器ECS的高可用性。但在使用ECS實例的過程中,仍然有可能會出現(xiàn)由于操作系統(tǒng)配置不當或程序過載等原因?qū)е孪到y(tǒng)內(nèi)核崩潰的情況,這將導致系統(tǒng)夯機、異常重啟或無法正常啟動等問題。為了分析根本原因而避免問題反復發(fā)生,運維人員通常依靠查看系統(tǒng)日志來做分析診斷,然而此時也許實例已經(jīng)無法正常SSH遠程連接,讓定位故障原因的過程變得非常困難。現(xiàn)在阿里云提供了一鍵查看系統(tǒng)日志和屏幕截屏的功能,為運維人員提供了一個方便的工具,給系統(tǒng)異常故障的分析診斷提供更多的支持。
為什么需要系統(tǒng)串口日志
當ECS實例發(fā)生了夯機、異常重啟、或者無法正常啟動時,運維人員需要定位導致問題發(fā)生的根本原因,及時解決問題并且避免該問題反復發(fā)生。
ECS實例運行的穩(wěn)定性會受多方面影響,概括來說會存在于兩個層面,一方面是承載ECS實例運行的基礎設施硬件和軟件環(huán)境,另一方面是ECS實例操作系統(tǒng)內(nèi)部的運行環(huán)境。如果實例的異常狀態(tài)是由于承載其運行的基礎設施硬件或軟件出現(xiàn)故障而導致的,阿里云會向用戶提供系統(tǒng)事件信息,便于您了解這方面問題對實例運行的影響;如果實例的異常狀態(tài)是由于操作系統(tǒng)內(nèi)部內(nèi)核bug、系統(tǒng)配置不當或程序過載等原因而導致的,就需要查看操作系統(tǒng)層面的日志信息來診斷問題了。
(如果您希望了解更多ECS系統(tǒng)事件的信息,可以查看幫助文檔和云棲博客讓運維更高效:關(guān)于ECS系統(tǒng)事件)
在Linux操作系統(tǒng)層面,經(jīng)過設置后,啟動日志和異常故障等信息會通過服務器的串口(串行端口,Serial Port)打印輸出。如果是物理服務器,運維人員通常會通過IPMI帶外接口獲得操作系統(tǒng)通過串口打印輸出的日志信息。對于云服務器,運維人員同樣需要這方面的日志信息幫助對異常故障做診斷分析,因此,云服務器的系統(tǒng)串口日志是運維診斷的重要一環(huán)。
系統(tǒng)串口日志會包含什么信息
系統(tǒng)通過串口打印輸出的日志會包含兩種類型的信息,一類是系統(tǒng)啟動開機時的日志內(nèi)容,另一類是系統(tǒng)內(nèi)核故障或異常時的日志內(nèi)容。
1. Linux操作系統(tǒng)啟動開機時,默認會將開機過程產(chǎn)生的日志信息輸出到串口。開機信息會被系統(tǒng)內(nèi)核存儲在ring buffer中,會顯示系統(tǒng)架構(gòu)、CPU、RAM、掛載的硬件以及軟件啟動相關(guān)的系統(tǒng)信息。這類信息幫助系統(tǒng)管理員了解系統(tǒng)是否正常啟動,檢查預先設定的應用程序是否隨系統(tǒng)啟動等情況。
2. 內(nèi)核故障或異常錯誤發(fā)生時,系統(tǒng)會按照配置的日志級別(由內(nèi)核參數(shù)kernel.printk決定,默認級別為4 - KERN_WARNING)將對應信息輸出到串口。內(nèi)核錯誤(Kernel panic)是指操作系統(tǒng)在監(jiān)測到內(nèi)部的致命錯誤,并無法安全處理此錯誤時采取的動作。操作系統(tǒng)內(nèi)核中處理Kernel panic的子程序通常被設計用來向串口控制臺輸出錯誤信息,以便用于故障的調(diào)試,然后等待系統(tǒng)被手動重新引導,或自動重新引導。該程序提供的技術(shù)性信息通常是用來幫助系統(tǒng)管理員或者軟件開發(fā)者診斷問題的。
附:內(nèi)核日志級別:
日志級別對應名稱說明0KERN_EMERGThe system is unusable.1KERN_ALERTActions that must be taken care of immediately.2KERN_CRITCritical conditions.3KERN_ERRNoncritical error conditions.4KERN_WARNINGWarning conditions that should be taken care of.5KERN_NOTICENormal, but significant events.6KERN_INFOInformational messages that require no action.7KERN_DEBUGKernel debugging messages, output by the kernel if the developer enabled如何使用系統(tǒng)串口日志
使用ECS控制臺時,對于狀態(tài)為“運行中”的ECS實例,您可以通過實例列表或?qū)嵗斍榈牟僮鞑藛?,獲取實例系統(tǒng)日志。
控制臺操作
登錄 ECS管理控制臺。
單擊左側(cè)導航欄中的?實例。
選擇?地域。
找到需要排查異常故障的實例的?操作?菜單。
單擊?更多?>?運維和診斷?>?獲取實例系統(tǒng)日志?查看日志。
也可以選中需要排查異常故障的實例,單擊實例進入?實例詳情頁,點擊?更多?>?獲取實例系統(tǒng)日志?查看日志。
如下圖所示,當系統(tǒng)正常啟動時,會顯示啟動過程中的相關(guān)日志內(nèi)容:
當系統(tǒng)出現(xiàn)內(nèi)核錯誤時,會顯示相關(guān)錯誤信息:
結(jié)合日志中所顯示的內(nèi)容,可以幫助運維人員檢查系統(tǒng)啟動是否正常,以及診斷操作系統(tǒng)層面發(fā)生的異常故障。
此外,在某些時刻系統(tǒng)也會將異常信息輸出到顯示器(比如Windows系統(tǒng)“藍屏”),由于云服務器沒有連接物理顯示器,因此可以使用獲取實例屏幕截圖的功能查看異常狀態(tài)下輸出到屏幕的信息,為問題分析提供輔助。
使用OpenAPI時,您可以使用?GetInstanceConsoleOutput?,獲得通過Base64編碼輸出的日志內(nèi)容。使用?GetInstanceScreenshot?,獲得通過Base64編碼輸出的屏幕內(nèi)容。
請注意,目前只有在?運行中?狀態(tài)的實例可以查看系統(tǒng)日志和屏幕截屏。
寫在最后
讓ECS更好用是我們持續(xù)追求的目標。ECS主動運維和系統(tǒng)事件機制,可以提前發(fā)現(xiàn)基礎設施層面對ECS運行的影響,并通過事件讓運維人員及時感知并采取預防性措施,避免對在行業(yè)務的影響;而今天介紹的診斷日志功能,可以幫助運維人員在面對實例個體由于操作系統(tǒng)內(nèi)部原因出現(xiàn)異常的情況下,分析原因避免同樣的問題反復發(fā)生威脅業(yè)務連續(xù)性。后續(xù)我們會推出更多的運維工具和能力,讓您使用ECS的過程更放心、更透明。敬請期待!
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
評論