2

我們最近在其中一臺測試服務器上設置了AWS日誌代理。我們的日誌文件通常包含多行事件。我們的日誌事件的e.g之一是:AWS日誌代理安裝

[10-Jun-2016 07:30:16 UTC] SQS Post Response: Array 
(
    [Status] => 200 
    [ResponseBody] => <?xml version="1.0"?><SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"><SendMessageResult><MessageId>053c7sdf5-1e23-wa9d-99d8-2a0cf9eewe7a</MessageId><MD5OfMessageBody>8e542d2c2a1325a85eeb9sdfwersd58f</MD5OfMessageBody></SendMessageResult><ResponseMetadata><RequestId>4esdfr30-c39b-526b-bds2-14e4gju18af</RequestId></ResponseMetadata></SendMessageResponse> 
) 

日誌代理參考文檔說,使用這樣的日誌「multi_line_start_pattern」選項。我們的AWS日誌代理配置如下:

[httpd_info.log] 
file = /var/log/httpd/info.log* 
log_stream_name = info.log 
initial_position = start_of_file 
log_group_name = test.server.name 
multi_line_start_pattern = '(\[)+\d{2}-[a-zA-Z]{3}+-\d{4}' 

但是,日誌代理報告會中斷上述和類似事件。它被報告給CloudWatch的日誌的方式如下:

事件1:

[10-Jun-2016 11:21:26 UTC] SQS Post Response: Array 

事件2:

([Status] => 200 [ResponseBody] => <?xml version="1.0"?><SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"><SendMessageResult><MessageId>053c7sdf5-1e23-wa9d-99d8-2a0cf9eewe7a</MessageId><MD5OfMessageBody>8e542d2c2a1325a85eeb9sdfwersd58f</MD5OfMessageBody></SendMessageResult><ResponseMetadata><RequestId>4esdfr30-c39b-526b-bds2-14e4gju18af</RequestId></ResponseMetadata></SendMessageResponse> 

事件3:

) 

儘管的事實上,它只有一個單一的事件。任何線索發生了什麼事?

回答

1

我想你需要補充的是以下您awslogs.conf

datetime_format = %d-%b-%Y %H:%M:%S UTC 
time_zone = UTC 
multi_line_start_pattern = {datetime_format} 

http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html

multi_line_start_pattern

指定用於標識日誌消息的開始的模式。日誌消息由匹配模式的行和與模式不匹配的任何後續行組成。有效值是正則表達式或{datetime_format}。使用{datetime_format}時,應指定datetime_format選項。默認值是'^ [^ \ s]',因此任何以非空白字符開頭的行都會關閉前一條日誌消息並啓動一條新的日誌消息。

如果該日期時間格式不起作用,您需要更新您的正則表達式以實際匹配您的特定日期時間。我不認爲你上面列出的那個實際上適用於你給定的格式。

你可以嘗試這比如:

[\ d {2} - [\ W] {3} - \ d {4} \ S {1} \ d {2}:\ d {2 }:\ d {2} \ S {1} \ W +]

確實匹配

[10君-2016 11時21分26秒UTC]

在這裏看到:http://www.regexpal.com/?fam=96811

完成後,請重新啓動該服務並檢查其是否正確解析。

$ sudo service awslogs restart