本篇文章為大家展示了云函數SCF日志檢索的實踐過程,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)始終致力于在企業(yè)網站建設領域發(fā)展。秉承“創(chuàng)新、求實、誠信、拼搏”的企業(yè)精神,致力為企業(yè)提供全面的網絡宣傳與技術應用整體策劃方案,為企業(yè)提供包括“網站建設、響應式網站、手機網站建設、微信網站建設、成都小程序開發(fā)、商城網站建設、平臺網站建設秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
開發(fā)者在云函數的開發(fā)調試、在線運維過程中,難免會遇到函數調用失敗需要定位問題的情況,通常我們使用日志作為主要排障手段。
在云函數控制臺中,我們可以看到包含函數調用狀態(tài)的日志列表,直接篩選可過濾查看所有調用失敗的日志。
如果我們能夠從網關返回信息中拿到某個失敗請求的 RequestId ,我們還可以根據 RequestId 檢索指定請求的日志。
這是最基礎的日志檢索使用方法。
實際定位問題的過程中,有可能出現(xiàn)以下幾種場景:
函數里的部分異常有進行捕獲,但函數的調用狀態(tài)依然是成功,此時怎么找到已捕獲的異常?
函數錯誤調用非常多,我只想查看某些指定模塊的日志信息怎么辦?
收到告警提示我函數運行時間超過 x 秒,我如何迅速找到指定運行時長范圍的調用日志?
我要查看的業(yè)務日志包含多個不同的關鍵詞,想要一次性找到多個關鍵詞所在的日志怎么辦?
針對以上場景,我們可以利用「高級日志」功能解決上述全部問題。
下面給大家分享一下已捕獲的異常
,查找函數運行時間大于 x 的請求
,關鍵詞組合檢索
中如何使用高級日志。
云函數比較多的使用場景是和 API 網關組合使用實現(xiàn) REST API ,以下我們結合一個實際的業(yè)務場景說明如何使用高級日志。
以下模擬一個 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 異常已被捕獲,所以當找不到文件時,函數調用結果依然為成功,API 請求返回 null 。如果使用普通調用日志功能,需要逐條查看日志,這將會非常麻煩。
我們在代碼捕獲異常時有打印 Error 信息,在高級日志里可以直接檢索該關鍵詞:
如果想查看包含該請求的完整日志,則點擊該條日志的 RequestId 即可:
上面講述了如何查找已被捕獲的異常,直接檢索捕獲時打印的關鍵詞即可, 日志輸出方法沒有特殊要求,使用運行時原生日志即可。
如果我們收到告警或通過監(jiān)控圖表查看到某個函數的運行時間異常,如何迅速找到這些日志呢?
高級日志里提供了運行時間檢索的方法,比如我們想查找運行時間大于 150ms 的日志,我們可以在檢索框輸入 SCF_Duration>150
,即可找出該時間范圍的日志。
時間范圍和關鍵詞檢索可組合使用,在上述示例中會將所有日志都過濾出來。
如果我們只想查看有多少請求的運行時間是大于 150 ms ,我們可以組合關鍵詞過濾 SCF_Duration>150 and "Report RequestId"
進行檢索:
上述表達式的意思是,過濾運行時間大于 150 ms 且 包含 Report RequestId 關鍵詞的日志。Report RequestId這一行是函數每次請求結束后系統(tǒng)打印的語句,所以可以用它來達到篩選唯一請求日志的作用。
如果想過濾出 150<運行時間≤300
的日志,則可以使用 SCF_Duration in (150 300]
。
如果我們想同時檢索多個關鍵詞,比如 error
,userid
,region
我們可以使用 and
或者 or
連接這些關鍵詞。
如想要過濾出同時包含這些關鍵詞的日志,則可以使用 error and userid and region
。
如想要過濾出包含任一關鍵詞的日志,則可以使用 error or userid or region
。
上述內容就是云函數SCF日志檢索的實踐過程,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。