許 鵬
(杜比實驗室國際技術服務 (上海)有限公司,上海200030)
眾所周知,數字電影播放服務器是以傳統計算機硬件架構所組成的,運行在Linux操作系統上,符合DCI規范的專用電影播放服務器。在實際使用中若播放服務器出現故障,如何快速準確地定位故障,找到故障根本原因,除了使用排除法、替換法、比較法等常規故障排摸方法,熟練掌握播放服務器日志分析法這一技能將事半功倍。
播放服務器系統日志是指播放服務器在運行過程中產生的事件記錄。這些記錄被系統程序收集歸檔并存放到文件中,生成系統日志文件。日志文件詳細記載著所發生事件的類型、時間、相關進程、操作描述及信息級別。數字電影播放服務器日志不僅有常規的操作系統日志,比如系統內核 (kernel)日志,網絡服務日志 (Apache)等,還包含了多個專用的設備日志,如播放日志、安全管理器日志等全面記錄播放服務器的歷史事件。顯然,日志中包含了很多有用的信息和線索,通過查看日志可大體掌握設備的配置信息、歷史事件、維護狀態和告警及錯誤消息,有利于快速判斷故障。雖然日志分析很有用,但是日志中信息量巨大,學習掌握難度也大。如要在巨量的數據中提取有用的信息,必須擁有扎實的基礎知識并掌握一些實用的技巧。如果沒有掌握有效的方法和知識的積累,那么只會在信息的海洋中迷失,從而無功而返。
首先,最重要的是了解播放服務器日志的結構和相關原理,以下以杜比服務器Show Vault的日志為例作具體說明。如圖1所示。

圖1 杜比服務器Show Vault的日志
下載的杜比播放服務器日志是一個以.tgz擴展名結尾的壓縮文件,例如drmreport_230068_2019_10_05.tgz。從命名中可以得知該播放服務器的媒體模塊序列號為230068,日志獲取的時間為2019年10月5日。當解壓縮該文件后,會得到另外兩個壓縮文件drmreport.tgz和sbcreport.tgz,還有一個重要的文本文件drmreport.txt。當在用戶界面點擊下載播放服務器日志時,系統會在后臺執行多個命令,并把這些指令和運行結果存放到這個日志文件中。因此可以把drmreport.txt看作為播放服務器的系統報告,里面包含了軟件版本、安全時鐘、磁盤陣列、硬盤信息、網絡信息等諸多內容,非常重要。當再次解壓縮drmreport.tgz文件,進入/doremi/log目錄中,會發現大量帶有后綴名為.log的文件。這就是播放服務器的設備日志,其總體數量在120個左右,每個日志文件記錄著不同軟件子系統的事件信息。由此可見,杜比播放服務器根據軟件子系統的功能將日志文件分門別類列出,不僅數量多,而且信息量大。必須搞清楚主要日志文件的功能屬性和工作原理,避免大海撈針,才能有的放矢地去正確的位置尋找線索。表1挑出了重要的日志文件做簡要說明。

表1 重要日志文件的簡要說明
例如,通過bootseq.log 日志可檢查用戶非法關機的行為。當發現日志中每天都重復出現“[WARNG]:boot sequence-check:Invalid boot sequence detected”這條記錄時,可明確判定用戶是否按照正常流程關閉服務器,因此當下一次開機時,系統會在日志中自動記錄非法關機的行為。這類操作的不良后果可能會導致系統文件丟失甚至操作系統崩潰,需及時提醒用戶改變操作習慣,防范于未然。又如,drm_errorsummary.log收集了播放服務器歷史上所有的錯誤時間,并做了故障歸類。分析日志時應優先打開該日志,快速掌握全局情況,再到相關日志中查找線索,驗證細節。這樣可大量節約時間,提高效率。
了解日志文件的結構和其功能屬性后,還需要結合計算機、英語等綜合知識,才能更好地理解并分析日志。筆者根據自身經驗總結了6條經驗法則以供參考:
(1)日志分析應具備良好英語能力和Linux系統知識
日志的語言環境是英語,雖然每條日志不長,語法不難,但是需要掌握大量的英語專業詞匯,理解其特殊的含義,這是讀懂日志的基礎。例如,杜比播放服務器日志中有一個頻繁出現的單詞是“Dolphin”,普通意譯為 “海豚”,在播放服務器環境中它是媒體模塊的代號。其次,還要掌握Linux系統的相關知識,包括Linux文件和目錄、操作指令等。
上述提到的drmreport.txt文件里包含了大量在系統生成日志時執行的指令和返回的結果。了解這些指令的意義,可直接判斷該子模塊的狀態。例如:其中一條命令為 “cat/etc/timezone”,返回結果為 “Asia/Shanghai”,便可得知服務器所在的時區。
(2)日志分析應具備較強的邏輯推理能力
日志文件是由大量的信息所組成的,有用的信息可能散布在一個或多個不同的文件中。這就需要我們有較強的邏輯推理能力,根據故障發生的時間節點,在不同日志文件中找尋線索,反復比對在該時間點所發生的事件,串聯起來推理問題,綜合判斷故障的原因。
(3)善于查找關鍵詞
所謂關鍵詞是指日志中頻繁出現并賦有特殊意義的英語單詞,它們的反復出現往往暗示著故障已經發生。善于利用關鍵詞的查找,無疑是日志初學者快速定位故障的捷徑。例如關鍵詞 “underflow”表示數據溢出,可能是硬盤或節目包的問題。又如“decoder crash”表示出現了解碼錯誤,故障大多與媒體模塊IMB板有關。通過搜索關鍵詞,可節省大量時間,快速找到相關線索。
(4)運用合適的工具能事半功倍
日志文件的內容大多是可讀的本文,如果直接用windows自帶的記事本打開的話,所顯示的日志會是雜亂無章,看得人一頭霧水。建議大家使用notepad++或UltraEdit打開日志文件,這類軟件會將每條日志有序排列,并標注行號,這樣可以一目了然獲取每行日志的時間、信息級別、相關程序及事件描述等信息。另外,還可以運用軟件的高級搜索、關鍵字標記、雙屏閱讀等功能提高日志的可讀性。其次,還應該充分利用每家設備廠商的定制化日志分析軟件和工具。杜比播放服務器使用的是在線日志分析網站,用戶可以將日志上傳到網站,系統會自動分析日志后,詳細列出播放服務器的基本信息,警告和故障條目,并逐一給出故障解決方案。
(5)日志不是萬能的,不是所有問題都記錄
這是初學日志分析需要注意的地方,日志中不會包含所有的信息,也不會記錄所有的問題。比如杜比播放服務器電源發生故障,是不會記錄在任何日志中。又如,當影廳內出現雜音的情況,由于播放服務器不能對音頻信號輸出做監控和檢查,日志中自然不會記錄這類故障。日志分析只是故障判斷的一個輔助手段,大多時候很有用,但也不是萬能的。
(6)部分日志是研發代碼和機器語言,不要奢望完全讀懂日志
當讀取日志文件時,總會發現一些令人百思不得其解的專業代碼和機器語言,這是很正常的。除非你參與了整個產品的研發過程,否則很難面面俱到,從頭到尾弄清楚每一行日志的含義。運用日志分析的目的,在于從信息的海洋中找到有效、易懂的信息,來輔助判斷問題。只要能夠掌握大部分有用的信息,并理解它表示的含義,同樣的可達到較好的效果,而不必過分咬文嚼字,糾結于細節。
下面通過三個實際案例來更好地說明如果利用日志來查找線索,分析故障可能發生的原因。
案例1:Show Vault播放服務器放映中頻繁出現卡頓的故障現象
根據此現象,不難判斷出是由播放服務器磁盤陣列中的一塊或多塊硬盤或媒體模塊解碼故障所引起的。首先,解壓縮日志后打開rm_errorsummary.log,該日志的功能是收集所有子系統的錯誤日志并歸檔列出。在這個案例中,日志里列出了大量有關硬盤的錯誤記錄如圖2所示。

圖2 硬盤報警日志
md0是存儲節目的系統分區,SDC和ata3都對應于第三塊硬盤,從中看出該硬盤發生了大量的讀寫錯誤,并被系統標記為媒體錯誤。隨后,再打開關于硬盤狀態的drmreport.log去找尋更多的線索。搜索關鍵詞mdstat可快速定位磁盤陣列和硬盤狀態的相關信息如圖3和圖4所示。

圖3 磁盤陣列狀態
md1的標記符 [4/3][UU_U]表示了擁有4塊硬盤的磁盤陣列系統已經處于降低運行,第三塊硬盤SDC已經被磁盤陣列移除。

圖4 硬盤SMART 信息
隨后進一步檢查第三塊硬盤的SMART 值,其中1、5、197項的數值顯示異常,遠超出標準范圍,表明該硬盤有存在大量底層讀寫錯誤和重新分配的扇區數,已無法自行修復,必須及時更換。
最后,可以打開播放日志odeticsd.log,從中搜索關鍵詞underflow,匹配出多個錯誤記錄,同時顯示了當時所播放的節目信息。如圖5所示。

圖5 odeticsd日志
由此可見,經過多個日志的驗證和分析,可以準確地定位到第三塊硬盤是發生卡片故障的根本原因。考慮到硬盤故障可能是隱形的,即圖形界面中不告警,狀態指示燈仍有可能是綠色,因此通過日志來判斷無疑更加直觀準確。
案例2:Show Vault播放服務器放映中圖像異常
與圖像有關的問題應先定位故障的源頭是放映機還是播放服務器,可通過檢查放映機通道設置并播放放映機內部測試圖來檢查。如果排除了放映機的嫌疑,仍有條紋或閃爍這類故障現象,應重點考慮播放服務器的解碼部分。同樣先打開drm_errorsummary.log,可以發現日志里出現了大量從kernel.log收集到的解碼錯誤 (Decoders Crashed)如圖6所示。

圖6 Kernel日志

圖7 odeticsd日志
其次,查看odestic.log 日志,發現負責解碼dolphin子系統有連接超時和傳輸數據的錯誤,進一步證實了故障源于解碼部分,即媒體模塊IMB 板。另外,odestic.log日志完整記錄每場電影播放的事件,對于偶發性故障,應在日志中重點檢查影院所反饋的故障時間點,從而有效地縮小檢索范圍,準確定位故障。如圖7所示。
因此,可以刷新或升級媒體模塊的固件來進一步觀察故障是否解決,如故障仍然存在,需更換IMB板塊。
案例3:Show Vault播放服務器無法正常播放節目,顯示不能加載播放列表
通常此類故障,在圖像化界面提示的信息較少,且涉及到的故障可能較多,很難快速做出判斷,日志分析是一個很好的手段。
首先,打開drm _errorsummary.log,發現安全管理器SM 的版本顯示為丟失,根據DCI規范,當播放服務器的SMS子系統無法與安全管理器SM連接的情況下,是無法加載播放列表和播放電影。如圖8所示。

圖8 服務器型號和版本信息
其次,逐一檢查與加載播放列表有關的日志文件odestc.log 和drmplaylistd.log 這兩個日志。發現這兩個日志中都存在相關錯誤,特別是在drmplaylistd.log中更為明顯,顯示播放服務器反復啟動卻始終無法連接到安全管理器。如圖9所示。

圖9 drmplaylistd日志
因此,故障解決的思路是檢查IMB板與放映機之間的網絡通信,應通過排查網絡中的設備,包括網線、交換機、放映機的控制板及IMB板來定位故障。
通過以上案例分析,可以看出日志分析絕非易事,它不僅需要有良好的英語基礎,而且要對設備的工作原理和各個子系統熟練掌握,才能成功地在大量的數據中找到線索,并結合對設備的硬件和軟件的理解,最終定位故障。
總而言之,日志分析應遵循從易到難,簡單的可通過關鍵詞搜索,復雜的情況需根據故障發生的時間點,反復對比不同的日志,從而找到有價值的線索和關鍵突破點。希望通過此文能拋磚引玉,提供對播放服務器日志分析的思路和方法,幫助影院技術人員從中收獲啟發,并舉一反三,掌握好這個故障診斷的利器。
注釋
①杜比公司于2014年收購Doremi公司并延用Doremi的核心技術,本文提到的Show Vault服務器現為杜比公司所有。
② 杜 比 日 志 在 線 分 析 網 站 www.http ://loganalyzer.dolbycustomer.com/,用戶可上傳日志文件做在線分析。
③S.M.A.R.T.全稱為 “Self-Monitoring Analysis and Reporting Technology”,即 “自我監測、分析及報告技術”,是一種自動的硬盤狀態檢測與預警系統和規范。