全部產品
Search
文件中心

Simple Log Service:提取日誌時間

更新時間:Jul 27, 2024

在使用Logtail採集日誌時,可以使用processor_gotime外掛程式或processor_strptime外掛程式解析原始日誌中的時間欄位。本文介紹兩種外掛程式的參數說明和配置樣本。

功能入口

當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail採集配置時,添加外掛程式配置。具體操作,請參見處理外掛程式概述

Go語言時間格式

processor_gotime外掛程式使用Go語言時間格式解析原始日誌中的時間欄位,並支援將解析結果設定為Log Service中的日誌時間。

重要
  • Logtail 0.16.28及以上版本支援processor_gotime外掛程式。

  • 表單配置方式:採集文本日誌和容器標準輸出時可用。

  • JSON配置方式:採集文本日誌時不可用。

表單配置方式

  • 參數說明

    配置處理外掛程式類型提取日誌時間(Go語言時間格式)

    image

    相關參數說明如下表所示。

    參數

    說明

    原始時間欄位

    原始欄位名。

    原始時間格式

    原始時間的格式。

    原始時間時區

    原始時間的時區。選擇機器時區時,表示Logtail所在主機或容器的時區。

    結果時間欄位

    解析後的目標欄位。

    結果時間格式

    解析後的時間格式。

    自訂結果時間時區

    解析後的時區。選擇機器時區時,表示原生時區。

    進階參數>設為日誌時間

    選中該選項後,系統會將解析後的時間設定為日誌時間。

    進階參數>保留原始欄位

    選中該選項後,解析後的日誌中將保留原始欄位。

    進階參數>原始欄位缺失報錯

    選中該選項後,如果原始日誌中無您所指定的原始欄位,系統將報錯。

    進階參數>提取失敗報錯

    選中該選項後,如果提取日誌時間失敗,系統將報錯。

  • 樣本

    原始時間(s_key欄位)的格式為2006-01-02 15:04:05(東八區),現將原始時間解析為2006/01/02 15:04:05(東九區)格式,添加到d_key欄位中,並設定解析結果為Log Service中的日誌時間。

    • 原始日誌

      "s_key":"2022-07-05 19:28:01"
    • Logtail外掛程式處理配置提取日誌時間(Go語言時間格式)

    • 處理結果

      "s_key":"2022-07-05 19:28:01"
      "d_key":"2022/07/05 20:28:01"

JSON配置方式

  • 參數說明

    配置typeprocessor_gotimedetail說明如下表所示。

    參數

    類型

    是否必選

    說明

    SourceKey

    String

    原始欄位名。

    SourceFormat

    String

    原始時間的格式。

    SourceLocation

    Int

    原始時間的時區。參數值為空白時,表示Logtail所在主機或容器的時區。

    DestKey

    String

    解析後的目標欄位。

    DestFormat

    String

    解析後的時間格式。

    DestLocation

    Int

    解析後的時區。參數值為空白時,表示本機時區。

    SetTime

    Boolean

    是否將解析後的時間設定為日誌時間。

    • true(預設值):是

    • false:否

    KeepSource

    Boolean

    被解析後的日誌中是否保留原始欄位。

    • true(預設值):保留

    • false:不保留

    NoKeyError

    Boolean

    原始日誌中無您所指定的原始欄位時,系統是否報錯。

    • true(預設值):報錯

    • false:不報錯

    AlarmIfFail

    Boolean

    提取日誌時間失敗,系統是否報錯。

    • true(預設值):報錯

    • false:不報錯

  • 樣本

    原始時間(s_key欄位)的格式為2006-01-02 15:04:05(東八區),現將原始時間解析為2006/01/02 15:04:05(東九區)格式,添加到d_key欄位中,並設定解析結果為Log Service中的日誌時間。

    • 原始日誌

      "s_key":"2019-07-05 19:28:01"
    • Logtail外掛程式處理配置

      {
        "processors":[
          {
            "type":"processor_gotime",
            "detail": {
              "SourceKey": "s_key",
              "SourceFormat":"2006-01-02 15:04:05",
              "SourceLocation":8,
              "DestKey":"d_key",
              "DestFormat":"2006/01/02 15:04:05",
              "DestLocation":9,
              "SetTime": true,
              "KeepSource": true,
              "NoKeyError": true,
              "AlarmIfFail": true
            }
          }
        ]
      }
    • 處理結果

      "s_key":"2019-07-05 19:28:01"
      "d_key":"2019/07/05 20:28:01"

strptime時間格式

processor_strptime外掛程式使用Linux strptime時間格式解析日誌中的時間欄位,並支援將解析結果設定為日誌時間。

重要

Logtail 0.16.28及以上版本支援processor_strptime外掛程式。

表單配置方式

  • 參數說明

    配置處理器類型提取日誌時間(strptime時間格式),相關參數說明如下表所示。

    參數

    說明

    原始欄位

    原始欄位名。

    原始時間格式

    原始時間的格式。

    保留原始欄位

    選中該選項後,被解析後的日誌中將保留原始欄位。

    提取失敗報錯

    選中該選項後,如果提取日誌時間失敗,系統將報錯。

    進行時間位移

    選中該選項後,您可以設定時間位移秒數。

    時間位移秒數

    時間位移秒數。例如28800表示東八區,-3600代表西一區。

  • 配置樣本

    %Y/%m/%d %H:%M:%S格式的原始時間(log_time欄位的值)解析為對應的日誌時間,時區使用機器所在時區。假設時區為東八區。

    • 原始日誌

      "log_time":"2022/01/02 12:59:59"
    • Logtail外掛程式處理配置 strptime時間格式

    • 處理結果

      "log_time":"2022/01/02 12:59:59"
      Log.Time = 1451710799
  • 常見的時間運算式

    說明

    processor_strptime外掛程式支援%f格式解析,表示秒的小數部分,最高精度為納秒。

    樣本

    時間運算式

    2016/01/02 12:59:59

    %Y/%m/%d %H:%M:%S

    2016/01/02 12:59:59.1

    %Y/%m/%d %H:%M:%S.%f

    2016/01/02 12:59:59.987654321 +0700 (UTC)

    %Y/%m/%d %H:%M:%S.%f %z (%Z)

    2016/Jan/02 12:59:59,123456

    %Y/%b/%d %H:%M:%S,%f

    2019-07-15T04:16:47:123Z

    %Y-%m-%dT%H:%M:%S:%f

JSON配置方式

  • 參數說明

    配置typeprocessor_strptimedetail說明如下表所示。

    參數

    類型

    是否必選

    說明

    SourceKey

    String

    原始欄位名。

    Format

    String

    原始時間的格式。

    AdjustUTCOffset

    Boolean

    是否調整時區。

    • true:是。

    • false(預設值):否

    UTCOffset

    Int

    用於調整的時區位移秒數。例如28800表示東八區。

    AlarmIfFail

    Boolean

    提取日誌失敗時,系統是否報錯。

    • true(預設值):報錯。

    • false:不報錯。

    KeepSource

    Boolean

    被解析後的日誌中,是否保留原始欄位。

    • true(預設值):保留。

    • false:不保留。

    EnablePreciseTimestamp

    Boolean

    是否提取高精度時間。

    • true:是。

    • false(預設值):否。

    設定為true後,該外掛程式會將SourceKey參數對應的欄位值解析為毫秒層級的時間戳記,並存入PreciseTimestampKey參照中對應的欄位。

    重要
    • 設定該參數為true前,請確保SourceKey參數對應的欄位值(原始時間)支援相應的時間精度(ms、us或ns)。

    • 僅Logtail 1.0.32及以上版本支援。

    PreciseTimestampKey

    String

    儲存高精度時間戳記的欄位。預設值為precise_timestamp欄位。

    PreciseTimestampUnit

    String

    高精度時間戳記的單位。預設值為ms。取值包括ms(毫秒)、us(微秒)、ns(納秒)。

  • 樣本

    %Y/%m/%d %H:%M:%S格式的原始時間(log_time欄位的值)解析為對應的日誌時間,時區使用機器所在時區。

    • 樣本1:假設時區為東八區。

      • 原始日誌

        "log_time":"2016/01/02 12:59:59"
      • Logtail外掛程式處理配置

        {
          "processors":[
            {
              "type":"processor_strptime",
              "detail": {
                "SourceKey": "log_time",
                "Format": "%Y/%m/%d %H:%M:%S"
              }
            }
          ]
        }
      • 處理結果

        "log_time":"2016/01/02 12:59:59"
        Log.Time = 1451710799
    • 樣本2:假設時區為東七區。

      • 原始日誌

        "log_time":"2016/01/02 12:59:59"
      • Logtail外掛程式處理配置

        {
          "processors":[
            {
              "type":"processor_strptime",
              "detail": {
                "SourceKey": "log_time",
                "Format": "%Y/%m/%d %H:%M:%S",
                "AdjustUTCOffset": true,
                "UTCOffset": 25200
              }
            }
          ]
        }
      • 處理結果

        "log_time":"2016/01/02 12:59:59"
        Log.Time = 1451714399
    • 樣本3:假設時區為東七區。

      • 原始日誌

        "log_time":"2016/01/02 12:59:59.123"
      • Logtail外掛程式處理配置

        {
          "processors":[
            {
              "type":"processor_strptime",
              "detail": {
                "SourceKey": "log_time",
                "Format": "%Y/%m/%d %H:%M:%S.%f",
                "EnablePreciseTimestamp": true
              }
            }
          ]
        }
      • 處理結果

        "log_time":"2016/01/02 12:59:59.123"
        "precise_timestamp": 1451714399123
        Log.Time = 1451714399
  • 常見的時間運算式

    說明

    processor_strptime外掛程式支援%f格式解析,表示秒的小數部分,最高精度為納秒。

    樣本

    時間運算式

    2016/01/02 12:59:59

    %Y/%m/%d %H:%M:%S

    2016/01/02 12:59:59.1

    %Y/%m/%d %H:%M:%S.%f

    2016/01/02 12:59:59.987654321 +0700 (UTC)

    %Y/%m/%d %H:%M:%S.%f %z (%Z)

    2016/Jan/02 12:59:59,123456

    %Y/%b/%d %H:%M:%S,%f

    2019-07-15T04:16:47:123Z

    %Y-%m-%dT%H:%M:%S:%f