您在使用Logtail採集日誌時,可以使用processor_log_to_sls_metric外掛程式將採集到的日誌轉成SLS Metric。本文介紹processor_log_to_sls_metric外掛程式的參數說明和配置樣本。
功能入口
當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail採集配置時,添加外掛程式配置。具體操作,請參見處理外掛程式概述。
配置說明
Logtail 1.7.1及以上版本支援processor_log_to_sls_metric外掛程式。
表單配置方式
配置處理器類型為Log轉Metric,相關參數說明如下表所示。
參數說明
參數
說明
MetricTimeKey
指定日誌中的時間欄位,該欄位將與時序資料中的
__time_nano__
欄位對應。預設提取日誌中__time__
欄位的值。確保指定的欄位是合法的、符合格式的時間戳記。目前支援以second(10位長度)、millisecond(13位長度)、microsecond(16位長度)、nanosecond(19位長度)為單位的Unix時間戳記。
MetricLabelKeys
指定
__labels__
欄位的Key列表,Key需遵循Regex^[a-zA-Z_][a-zA-Z0-9_]*$
。Value不能包含豎線(|)和#$#
。更多資訊,請參見時序資料(Metric)。不支援在MetricLabelKeys參數中添加
__labels__
欄位。如果原始欄位中存在__labels__
欄位,該值將被追加到新的__labels__
欄位中。MetricValues
用於指定Metric名稱和Metric值。
Metric名稱對應
__name__
欄位,需遵循Regex^[a-zA-Z_:][a-zA-Z0-9_:]*$
。Metric值對應
__value__
欄位,需為Double類型。
更多資訊,請參見時序資料(Metric) 。
CustomMetricLabels
自訂的
__labels__
欄位, Key需遵循Regex^[a-zA-Z_][a-zA-Z0-9_]*$
,Value不能包含豎線(|)和#$#
。更多資訊,請參見時序資料(Metric) 。IgnoreError
當沒有匹配日誌時是否輸出Error日誌。
配置樣本
原始日誌
{ "script_md5":"8c6aebe9****c27f", "remote_addr":"123.XX.XX.123", "remote_user":"-", "time_local":"15/Aug/2023:12:03:20", "method":"GET", "url":"/www.a.com", "protocol":"HTTP/1.1", "status":"404", "body_bytes_sent":"4146", "http_referer":"-", "http_user_agent":"curl/7.74.0", "http_x_forwarded_for":"-", "__labels__":"field1#$#field1|field2#$#field2|tag1#$#tag1|tag2#$#tag2", "body_bytes_sent_name":"body_bytes_sent", "status_name":"status", "httptime":"1692101000", "__time__":"1692101000" }
Logtail外掛程式處理配置
處理結果
第一條時序資料
{ "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"body_bytes_sent", "__value__":"4146", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
第二條時序資料
{ "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"status", "__value__":"404", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
JSON配置方式
配置type為processor_log_to_sls_metric,detail說明如下表所示。
參數說明
參數
類型
是否必選
說明
MetricTimeKey
String
否
指定日誌中的時間欄位,該欄位將與時序資料中的
__time_nano__
欄位對應。預設提取日誌中__time__
欄位的值。確保指定的欄位是合法的、符合格式的時間戳記。目前支援以second(10位長度)、millisecond(13位長度)、microsecond(16位長度)、nanosecond(19位長度)為單位的Unix時間戳記。
MetricLabelKeys
[]String
是
指定
__labels__
欄位的Key列表,Key需遵循Regex^[a-zA-Z_][a-zA-Z0-9_]*$
。Value不能包含豎線(|)和#$#
。更多資訊,請參見時序資料(Metric)。不支援在MetricLabelKeys參數中添加
__labels__
欄位。如果原始欄位中存在__labels__
欄位,該值將被追加到新的__labels__
欄位中。MetricValues
Map
是
用於指定Metric名稱和Metric值。
Metric名稱對應
__name__
欄位,需遵循Regex^[a-zA-Z_:][a-zA-Z0-9_:]*$
。Metric值對應
__value__
欄位,需為Double類型。
更多資訊,請參見時序資料(Metric) 。
CustomMetricLabels
Map
否
自訂的
__labels__
欄位, Key需遵循Regex^[a-zA-Z_][a-zA-Z0-9_]*$
,Value不能包含豎線(|)和#$#
。更多資訊,請參見時序資料(Metric) 。IgnoreError
Boolean
否
當沒有匹配日誌時是否輸出Error日誌。預設值為false,表示不輸出。
配置樣本
原始日誌
{ "script_md5":"8c6aebe9****c27f", "remote_addr":"123.XX.XX.123", "remote_user":"-", "time_local":"15/Aug/2023:12:03:20", "method":"GET", "url":"/www.a.com", "protocol":"HTTP/1.1", "status":"404", "body_bytes_sent":"4146", "http_referer":"-", "http_user_agent":"curl/7.74.0", "http_x_forwarded_for":"-", "__labels__":"field1#$#field1|field2#$#field2|tag1#$#tag1|tag2#$#tag2", "body_bytes_sent_name":"body_bytes_sent", "status_name":"status", "httptime":"1692101000", "__time__":"1692101000" }
Logtail外掛程式處理配置
{ "processors":[ { "detail":{ "CustomMetricLabels":{ "nginx":"test" }, "IgnoreError":false, "MetricLabelKeys":[ "url", "method" ], "MetricTimeKey":"httptime", "MetricValues":{ "body_bytes_sent_name":"body_bytes_sent", "status_name":"status" } }, "type":"processor_log_to_sls_metric" } ] }
處理結果
第一條時序資料
{ "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"body_bytes_sent", "__value__":"4146", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
第二條時序資料
{ "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"status", "__value__":"404", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }