日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

解析Java報錯日志

在大數(shù)據(jù)、高并發(fā)場景下的Java應(yīng)用中,通過有效方式分析Java報錯日志并提供運(yùn)維指導(dǎo),能有效減輕產(chǎn)品運(yùn)營維護(hù)成本。日志服務(wù)支持采集各云產(chǎn)品的Java報錯日志,通過數(shù)據(jù)加工解析Java錯誤日志。

前提條件

已采集各SLS、OSS、SLB、RDS的Java錯誤日志到cloud_product_error_log的Logstore。具體操作,請參見Logtail采集日志

場景描述

某企業(yè)基于阿里云OSS、SLS等產(chǎn)品開發(fā)Java應(yīng)用A過程中,在華東1(杭州)地域創(chuàng)建了名為cloud_product_erro_log的Logstore,用于存儲調(diào)用各云產(chǎn)品接口發(fā)生的Java報錯日志。該企業(yè)需要使用日志服務(wù)定期分析調(diào)用接口發(fā)生的Java報錯日志,便于制定Java報錯處理措施。

為實(shí)現(xiàn)以上需求,您需要解析日志中的時間、錯誤碼、狀態(tài)碼、產(chǎn)品信息、錯誤碼信息、請求方法和出錯行號,存儲到各產(chǎn)品的Logstore中,用于錯誤日志分析。

原始日志樣例如下:

__source__:192.0.2.10
__tag__:__client_ip__:203.0.113.10
__tag__:__receive_time__:1591957901
__topic__:
message: 2021-05-15 16:43:35 ParameterInvalid 400
com.aliyun.openservices.log.exception.LogException:The body is not valid json string.
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2161)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2312)
   at com.aliyun.openservice.log.Client.PullLogsk(Client.java:1397)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2265)
   at com.aliyun.openservice.log.Client.GetCursor(Client.java:1123)
   at com.aliyun.openservice.log.Client.PullLogs(Client.java:2161)
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2426)
   at transformEvent.main(transformEvent.java:2559)

總體流程

通過Logtail采集應(yīng)用A的報錯日志到名稱為cloud_product_error_log的Logstore中,然后再經(jīng)過數(shù)據(jù)加工后投遞到各自產(chǎn)品的Logstore中,最后對各個產(chǎn)品的錯誤日志做分析。總體流程如下:

image
  1. 設(shè)計數(shù)據(jù)加工語句:數(shù)據(jù)加工分析,編寫數(shù)據(jù)加工語句。

  2. 創(chuàng)建數(shù)據(jù)加工任務(wù):根據(jù)產(chǎn)品不同,將日志分發(fā)至不同產(chǎn)品的錯誤分析Logstore。

  3. 查詢和分析數(shù)據(jù):在各產(chǎn)品的錯誤分析Logstore中進(jìn)行日志分析。

步驟一:設(shè)計數(shù)據(jù)加工語句

加工流程

為便于錯誤日志分析,需要:

  1. 提取message字段中的時間、錯誤碼、狀態(tài)碼、產(chǎn)品信息、錯誤碼信息、請求方法和出錯行號。

  2. 將錯誤日志存儲到各產(chǎn)品的Logstore。

etl-needs

加工邏輯分析

分析原始日志字段中的時間、錯誤碼、狀態(tài)碼、產(chǎn)品信息、錯誤碼信息、請求方法和出錯行號,為提取每種字段設(shè)計正則表達(dá)式。etl_logic

語法詳解

  1. 使用regex_match函數(shù)匹配出此條日志中是否有LogException。更多信息,請參見regex_match

  2. 如果匹配上則按照解析SLS錯誤日志的規(guī)則進(jìn)行處理;如果匹配上OSSException則按照解析OSS錯誤日志的規(guī)則進(jìn)行處理。更多信息,請參見e_switch

  3. 使用e_regex正則解析函數(shù)解析相應(yīng)的錯誤日志。更多信息,請參見e_regex

  4. 刪除原字段message信息,并投遞到相應(yīng)產(chǎn)品的Logstore。更多信息,請參見e_drop_fieldse_output、e_coutput

  5. 更多信息,請參見正則表達(dá)式-分組

加工語法分析

以使用正則表達(dá)式解析SLS錯誤日志為例,具體如下:語法解析

具體的加工語法為:

e_switch(
    regex_match(v("message"), r"LogException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("sls-error"),
    ),
    regex_match(v("message"), r"OSSException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("oss-error"),
    ),
)

步驟二:創(chuàng)建數(shù)據(jù)加工任務(wù)

  1. 進(jìn)入數(shù)據(jù)加工頁面。

    1. 在Project列表區(qū)域,單擊目標(biāo)Project。

    2. 日志存儲 > 日志庫頁簽中,單擊目標(biāo)Logstore。

    3. 在查詢和分析頁面,單擊數(shù)據(jù)加工

  2. 在頁面右上角,選擇數(shù)據(jù)的時間范圍。

    請確保在原始日志頁簽中有Log。

  3. 在編輯框中,輸入數(shù)據(jù)加工語句。

    e_switch(
        regex_match(v("message"), r"LogException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("sls-error"),
        ),
        regex_match(v("message"), r"OSSException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("oss-error"),
        ),
    )
  4. 單擊預(yù)覽數(shù)據(jù)

    預(yù)覽

  5. 創(chuàng)建數(shù)據(jù)加工任務(wù)。

    1. 單擊保存數(shù)據(jù)加工

    2. 創(chuàng)建數(shù)據(jù)加工任務(wù)面板,配置如下信息,然后單擊確定

      參數(shù)

      說明

      任務(wù)名稱

      數(shù)據(jù)加工任務(wù)的名稱。例如test。

      授權(quán)方式

      選擇默認(rèn)角色讀取源Logstore數(shù)據(jù)。

      存儲目標(biāo)

      目標(biāo)名稱

      存儲目標(biāo)的名稱。例如sls-error和oss-error。

      目標(biāo)Region

      選擇目標(biāo)Project所在地域。例如華東1(杭州)。

      目標(biāo)Project

      用于存儲數(shù)據(jù)加工結(jié)果的目標(biāo)Project名稱。

      目標(biāo)庫

      用于存儲數(shù)據(jù)加工結(jié)果的目標(biāo)Logstore名稱。例如sls-error和oss-error。

      授權(quán)方式

      選擇擇默認(rèn)角色將數(shù)據(jù)加工結(jié)果寫入目標(biāo)日志庫。

      加工范圍

      時間范圍

      時間范圍選擇所有

    創(chuàng)建數(shù)據(jù)加工任務(wù)后,日志服務(wù)默認(rèn)為每個加工任務(wù)創(chuàng)建一個儀表盤,您可以在儀表盤中查看數(shù)據(jù)加工任務(wù)運(yùn)行指標(biāo)。診斷

    通過異常詳情圖表,可以查到具體哪一條日志沒有解析出來,然后再調(diào)整正則表達(dá)式。

    • 如果解析Log失敗,上報WARNING級別日志。該類報錯不會影響到整個加工任務(wù)繼續(xù)執(zhí)行。

    • 如果上報ERROR級別日志,則會影響到整個加工任務(wù)的繼續(xù)執(zhí)行。需要逐步查找定位問題,并修改正則表達(dá)式,直到加工任務(wù)能夠成功解析各個不同類型的錯誤日志。

步驟三:分析錯誤日志數(shù)據(jù)

基于加工后的錯誤日志,可以進(jìn)行錯誤日志數(shù)據(jù)分析。本文只對日志服務(wù)的Java錯誤日志做分析。

  1. 在Project列表區(qū)域,單擊目標(biāo)Project。

  2. 日志存儲 > 日志庫頁簽中,單擊目標(biāo)Logstore。

  3. 在搜索框中輸入查詢和分析語句。

    • 統(tǒng)計每個調(diào)用方法出現(xiàn)錯誤的數(shù)量。

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • 統(tǒng)計PutLogs中哪一類的錯誤信息占比最大。

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • 統(tǒng)計各個錯誤碼出現(xiàn)的錯誤次數(shù)。

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • 設(shè)置報錯時間軸,實(shí)時查看調(diào)用接口錯誤信息。

      * | SELECT date_format(data_time, '%Y-%m-%d %H:%m:%s') as date_time,status,product_exception,error_line, error_message,method ORDER BY date_time desc
  4. 單擊15分鐘(相對),設(shè)置查詢分析的時間范圍。

    您可以設(shè)置相對時間、整點(diǎn)時間和自定義時間。

    說明

    查詢結(jié)果有1 min以內(nèi)的誤差。

  5. 單擊查詢/分析,查看查詢分析結(jié)果。