AWS EC2启动cloudwatch windows 2016图像中的日志

时间:2017-03-24 19:50:12

标签: amazon-web-services amazon-ec2 amazon-cloudwatch

我正在努力将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的图像上完美运行

1 个答案:

答案 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日志来查看实例是否已启动&成功执行了用户数据。