Fur*_* S. 4 amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs
我们最近在其中一台测试服务器上设置了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>
)
Run Code Online (Sandbox Code Playgroud)
日志代理参考文档说对此类日志使用“ multi_line_start_pattern”选项。我们的AWS Log代理配置如下:
[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}'
Run Code Online (Sandbox Code Playgroud)
但是,日志代理报告会中断上述事件和类似事件。将其报告给CloudWatch Logs的方式如下:
事件1:
[10-Jun-2016 11:21:26 UTC] SQS Post Response: Array
Run Code Online (Sandbox Code Playgroud)
事件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>
Run Code Online (Sandbox Code Playgroud)
事件3:
)
Run Code Online (Sandbox Code Playgroud)
尽管它只是一个事件。任何线索,这是怎么回事?
小智 6
我认为您需要添加的只是以下内容到awslogs.conf中
datetime_format = %d-%b-%Y %H:%M:%S UTC
time_zone = UTC
multi_line_start_pattern = {datetime_format}
Run Code Online (Sandbox Code Playgroud)
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 +]
确实匹配
[2016年6月10日11:21:26 UTC]
看到这里:http : //www.regexpal.com/?fam=96811
完成后,请重新启动服务,并检查其解析是否正确。
$ sudo服务awslogs重新启动
| 归档时间: |
|
| 查看次数: |
2263 次 |
| 最近记录: |