我正在努力将EC2启动日志从我基于2016年的EC2实例转发到cloudwatch。
由于某种原因,我无法看到此特定类别的日志组。
以下是我的AWS.EC2.Windows.CloudWatch.json
:
{
"IsEnabled": true,
"EngineConfiguration": {
"PollInterval": "00:00:15",
"Components": [
{
"Id": "Ec2Config",
"FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogDirectoryPath": "C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Log",
"TimestampFormat": "yyyy-MM-ddTHH:mm:ss.fffZ:",
"Encoding": "UTF-8",
"Filter": "UserdataExecution.log",
"CultureName": "en-US",
"TimeZoneKind": "UTC"
}
},
{
"Id": "EC2ConfigSink",
"FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"Region": "eu-west-1",
"LogGroup": "/my-customer/deployment/ec2config-userdata",
"LogStream": "ec2config-userdata"
}
}
...
I have a few more definitions in this file
...],
"Flows": {
"Flows":
[
"Ec2Config,EC2ConfigSink",
... other references here
]
}
}
Cloudwatch代理启动并且不报告任何错误,我可以看到来自其他来源的数据(某些应用程序日志文件 - 我故意跳过定义)
这意味着cloudwatch配置文件是正确的,并应用/放置在正确的目录中。
除了 EC2启动日志之外,日志没有问题。
我想知道是否有人遇到过这个问题?它在基于Windows 2012的图像上完美运行
答案 0 :(得分:0)
显然,SSM代理在 EC2启动执行UserData
脚本后启动。我可以从SSM Agent's
日志文件修改时间戳中看到它。
因此,EC2 Launch
期间没有发生日志转发。
当SSM代理启动并加载cloudwatch插件时,日志文件已填充条目并且永远不会更改(壁纸日志是唯一的例外)因此它们永远不会在cloudwatch
控制台中结束。
在AWS方面实施了很多更改:他们切换到.Net核心,删除EC2 config service
并将日志转发逻辑移至SSM Agent
AMI的Windows 2016-based
(cloudwatch插件)
看起来行为也发生了很大变化,因此无法在EC2 launch logs
中获取cloudwatch
(仅限使用AWS工具集时)
基本上我们必须坚持使用我们的应用程序日志,这是非常不幸的。我们依靠EC2 launch
日志来查看实例是否已启动&成功执行了用户数据。