您好,登錄后才能下訂單哦!
本篇文章為大家展示了云函數(shù)SCF日志檢索的實踐過程,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
開發(fā)者在云函數(shù)的開發(fā)調(diào)試、在線運維過程中,難免會遇到函數(shù)調(diào)用失敗需要定位問題的情況,通常我們使用日志作為主要排障手段。
在云函數(shù)控制臺中,我們可以看到包含函數(shù)調(diào)用狀態(tài)的日志列表,直接篩選可過濾查看所有調(diào)用失敗的日志。
如果我們能夠從網(wǎng)關(guān)返回信息中拿到某個失敗請求的 RequestId ,我們還可以根據(jù) RequestId 檢索指定請求的日志。
這是最基礎(chǔ)的日志檢索使用方法。
實際定位問題的過程中,有可能出現(xiàn)以下幾種場景:
函數(shù)里的部分異常有進行捕獲,但函數(shù)的調(diào)用狀態(tài)依然是成功,此時怎么找到已捕獲的異常?
函數(shù)錯誤調(diào)用非常多,我只想查看某些指定模塊的日志信息怎么辦?
收到告警提示我函數(shù)運行時間超過 x 秒,我如何迅速找到指定運行時長范圍的調(diào)用日志?
我要查看的業(yè)務(wù)日志包含多個不同的關(guān)鍵詞,想要一次性找到多個關(guān)鍵詞所在的日志怎么辦?
針對以上場景,我們可以利用「高級日志」功能解決上述全部問題。
下面給大家分享一下已捕獲的異常
,查找函數(shù)運行時間大于 x 的請求
,關(guān)鍵詞組合檢索
中如何使用高級日志。
云函數(shù)比較多的使用場景是和 API 網(wǎng)關(guān)組合使用實現(xiàn) REST API ,以下我們結(jié)合一個實際的業(yè)務(wù)場景說明如何使用高級日志。
以下模擬一個 HTTP PUT 請求實現(xiàn)教師錄入學生信息的功能。
def teacher_put(): print('insert info') try: fh = open("/tmp/testfile", "w") fh.write("students info xxxx") except IOError: print("Error: cannot find the file or open file failed") else: print("write info success") fh.close() return('teacher_put success') def main_handler(event, context): print(str(event)) if event["pathParameters"]["user_type"] == "teacher": if event["pathParameters"]["action"] == "get": return teacher_get() if event["pathParameters"]["action"] == "put": return teacher_put()
由于上面寫文件時的 IO 異常已被捕獲,所以當找不到文件時,函數(shù)調(diào)用結(jié)果依然為成功,API 請求返回 null 。如果使用普通調(diào)用日志功能,需要逐條查看日志,這將會非常麻煩。
我們在代碼捕獲異常時有打印 Error 信息,在高級日志里可以直接檢索該關(guān)鍵詞:
如果想查看包含該請求的完整日志,則點擊該條日志的 RequestId 即可:
上面講述了如何查找已被捕獲的異常,直接檢索捕獲時打印的關(guān)鍵詞即可, 日志輸出方法沒有特殊要求,使用運行時原生日志即可。
如果我們收到告警或通過監(jiān)控圖表查看到某個函數(shù)的運行時間異常,如何迅速找到這些日志呢?
高級日志里提供了運行時間檢索的方法,比如我們想查找運行時間大于 150ms 的日志,我們可以在檢索框輸入 SCF_Duration>150
,即可找出該時間范圍的日志。
時間范圍和關(guān)鍵詞檢索可組合使用,在上述示例中會將所有日志都過濾出來。
如果我們只想查看有多少請求的運行時間是大于 150 ms ,我們可以組合關(guān)鍵詞過濾 SCF_Duration>150 and "Report RequestId"
進行檢索:
上述表達式的意思是,過濾運行時間大于 150 ms 且 包含 Report RequestId 關(guān)鍵詞的日志。Report RequestId這一行是函數(shù)每次請求結(jié)束后系統(tǒng)打印的語句,所以可以用它來達到篩選唯一請求日志的作用。
如果想過濾出 150<運行時間≤300
的日志,則可以使用 SCF_Duration in (150 300]
。
如果我們想同時檢索多個關(guān)鍵詞,比如 error
,userid
,region
我們可以使用 and
或者 or
連接這些關(guān)鍵詞。
如想要過濾出同時包含這些關(guān)鍵詞的日志,則可以使用 error and userid and region
。
如想要過濾出包含任一關(guān)鍵詞的日志,則可以使用 error or userid or region
。
上述內(nèi)容就是云函數(shù)SCF日志檢索的實踐過程,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。