溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

云函數(shù)SCF日志檢索的實踐過程

發(fā)布時間:2021-10-12 13:59:52 來源:億速云 閱讀:140 作者:柒染 欄目:云計算

本篇文章為大家展示了云函數(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 檢索指定請求的日志。

云函數(shù)SCF日志檢索的實踐過程

這是最基礎(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)鍵詞組合檢索中如何使用高級日志。

1. 已捕獲的異常

云函數(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)鍵詞:

云函數(shù)SCF日志檢索的實踐過程

如果想查看包含該請求的完整日志,則點擊該條日志的 RequestId 即可:

云函數(shù)SCF日志檢索的實踐過程

上面講述了如何查找已被捕獲的異常,直接檢索捕獲時打印的關(guān)鍵詞即可, 日志輸出方法沒有特殊要求,使用運行時原生日志即可。

2. 查找函數(shù)運行時間大于 x 的請求

如果我們收到告警或通過監(jiān)控圖表查看到某個函數(shù)的運行時間異常,如何迅速找到這些日志呢?

高級日志里提供了運行時間檢索的方法,比如我們想查找運行時間大于 150ms 的日志,我們可以在檢索框輸入 SCF_Duration>150,即可找出該時間范圍的日志。

云函數(shù)SCF日志檢索的實踐過程

時間范圍和關(guān)鍵詞檢索可組合使用,在上述示例中會將所有日志都過濾出來。

如果我們只想查看有多少請求的運行時間是大于 150 ms ,我們可以組合關(guān)鍵詞過濾 SCF_Duration>150 and "Report RequestId" 進行檢索:

云函數(shù)SCF日志檢索的實踐過程

上述表達式的意思是,過濾運行時間大于 150 ms 且 包含 Report RequestId 關(guān)鍵詞的日志。Report RequestId這一行是函數(shù)每次請求結(jié)束后系統(tǒng)打印的語句,所以可以用它來達到篩選唯一請求日志的作用。

如果想過濾出 150<運行時間≤300 的日志,則可以使用 SCF_Duration in (150 300]。

3. 關(guān)鍵詞組合檢索

如果我們想同時檢索多個關(guān)鍵詞,比如 error,useridregion我們可以使用 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è)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI