2

我已經在ec2 windows server-R2上設置了CloudWatch Logs,但沒有顯示在AWS控制檯上。 (我的IAM用戶FullAccess) https://aws.amazon.com/blogs/devops/using-cloudwatch-logs-with-amazon-ec2-running-microsoft-windows-server/爲什麼從我的Windows EC2實例發送的CloudWatch日誌未顯示在AWS控制檯上?

我CloudWatch的JSON文件看起來像如下:

{ 
    "EngineConfiguration": { 
    "PollInterval": "00:00:15", 
    "Components": [ 
     { 
     "Id": "ApplicationEventLog", 
     "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogName": "Application", 
      "Levels": "1" 
     } 
     }, 
     { 
     "Id": "SystemEventLog", 
     "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogName": "System", 
      "Levels": "7" 
     } 
     }, 
     { 
     "Id": "SecurityEventLog", 
     "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogName": "Security", 
      "Levels": "7" 
     } 
     }, 
     { 
     "Id": "ETW", 
     "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogName": "Microsoft-Windows-WinINet/Analytic", 
      "Levels": "7" 
     } 
     }, 
     { 
     "Id": "IISLogs", 
     "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogDirectoryPath": "C:\\inetpub\\logs\\LogFiles\\W3SVC1", 
      "TimestampFormat": "yyyy-MM-dd HH:mm:ss", 
      "Encoding": "UTF-8", 
      "Filter": "", 
      "CultureName": "en-US", 
      "TimeZoneKind": "UTC", 
      "LineCount": "3" 
     } 
     }, 
     { 
     "Id": "CustomLogs", 
     "FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "LogDirectoryPath": "C:\\CustomLogs\\", 
      "TimestampFormat": "MM/dd/yyyy HH:mm:ss", 
      "Encoding": "UTF-8", 
      "Filter": "", 
      "CultureName": "en-US", 
      "TimeZoneKind": "Local" 
     } 
     }, 
     { 
     "Id": "PerformanceCounter", 
     "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "CategoryName": "Memory", 
      "CounterName": "Available MBytes", 
      "InstanceName": "", 
      "MetricName": "Memory", 
      "Unit": "Megabytes", 
      "DimensionName": "", 
      "DimensionValue": "" 
     } 
     }, 
     { 
     "Id": "CloudWatchLogs", 
     "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "AccessKey": "accesskey", 
      "SecretKey": "secretkey", 
      "Region": "eu-west-1", 
      "LogGroup": "Default-Log-Group", 
      "LogStream": "{instance_id}" 
     } 
     }, 
     { 
     "Id": "CloudWatch", 
     "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch", 
     "Parameters": { 
      "AccessKey": "accesskey", 
      "SecretKey": "secretkey", 
      "Region": "eu-west-1", 
      "NameSpace": "Windows/Default" 
     } 
     } 
    ], 
    "Flows": { 
     "Flows": [ 
     "(ApplicationEventLog,SystemEventLog),CloudWatchLogs", 
     "PerformanceCounter,CloudWatch" 
     ] 
    } 
    } 
} 

因爲我發現它也需要安裝SSM,以顯示它了AWS控制檯上?我在做基於此鏈接SSM的安裝過程: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/managed-instances.html#install-managed-win

但不能下載文件,詳情如下:

PS C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell> $dir = $env:TEMP + "\ssm" 
> New-Item -ItemType directory -Path $dir 
> cd $dir 
> $username = admin 
> $password = 1234 
> $wc = New-Object System.Net.Networkcredential($username, $password) 
> $wc.DownloadFile("https://amazon-ssm-region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe") 



You cannot call a method on a null-valued expression. 

At line:1 char:1 

+ $wc.DownloadFile("https://amazon-ssm- region.s3.amazonaws.com/latest/windows_amd64 ... 

+ 

    + CategoryInfo : InvalidOperation: (:) [], RuntimeException 

    + FullyQualifiedErrorId : InvokeMethodOnNull 

有任何想法的問題是什麼?

+0

更新EC2Config到最新版本究竟有哪些你想發送到CloudWatch日誌?只是Windows事件日誌? –

回答

4

注:如果你從搜索引擎來到這裏,尋找與Windows Server 2016上EC2Launch/EC2Config 4.x的幫助,請參閱本documentation相關的變化。本指南是在考慮到較早的Windows服務器上使用EC2Config 3.x Windows服務編寫的,並且給出的建議可能不會直接與EC2Launch並行。

注意到你的EC2Config的版本,並看到更具體的版本,建議下列文件:

對於用戶遷移從3.X到4。 x:您將特別需要:

  • "IsEnabled":true到您的AWS.EC2.Windows.CloudWatch.json JSON文件。
  • 移動這個文件從C:\Program Files\Amazon\Ec2ConfigService\Settings\C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\

你問很多關於一個問題,所以我會在部分來回答這個:

1)該指南您正在關注的不是您的使用案例

您鏈接到的documentation用於在混合環境中設置SSM代理,如同在具有EC2的環境中實例和內部部署機器一起工作。由於您正在使用EC2實例而不是內部部署計算機,因此本文檔與您無關。這改變了以下假設:

  • 您應該明確下載EC2Config而不是SSM代理。 (請參閱步驟3)
  • 您需要連接到您的實例的IAM Instance Profile而不是具有所有相關權限的IAM用戶。(見第4步)

2)驗證SSM劑EC2 Run Command

你可能已經安裝了SSM代理,每documentation

SSM代理默認安裝在2016年11月或以後發佈的Windows Server 2016實例和從Windows Server 2003-2012 R2 AMI創建的實例上。

要檢入AWS Web Console,請撥打EC2 > Commands > Command History > Run A Command

enter image description here

在「運行命令」的UI外觀的按鈕「選擇實例」。這將打開正在運行SSM代理的正在運行的實例的下拉列表。

enter image description here

如果您的實例是列在這裏,恭喜!您已經安裝了SSM代理。跳過步驟3

3)設置一個SSM代理CloudWatch的日誌

你應該install the latest version of EC2Config。 SSM代理與EC2Config捆綁在一起,並且安裝在一起。您可以以交互方式做到這一點,或使用PowerShell(本例中需要V5):

iwr https://ec2-downloads-windows.s3.amazonaws.com/EC2Config/EC2Install.zip -UseBasicParsing -OutFile Ec2Config.zip 
Expand-Archive Ec2Config.zip 
.\Ec2Config\Ec2Install.exe /install 

安裝後,EC2配置服務將重新啓動。繼續並重新啓動實例(如果您是managing your password with EC2Config,如果您沒有重新啓用該設置,則可能無法在重新啓動後從控制檯檢索它 - 將它複製到某處以防萬一!)然後再次執行步驟2以驗證您的實例是否可用於EC2運行命令。增加了perk:從現在開始,您可以從EC2運行命令更新EC2Config和SSM代理。

4)確認您的IAM實例配置文件的IAM角色有足夠的權限

AWS文檔包括這here,所以我不會是翻新。

如果當前沒有實例配置文件附加到您的EC2實例,您應該create an AMI並啓動一個新實例,它具有與您當前配置相同的所有配置,不同之處在於它使用您創建的新AMI並將IAM Role與足夠的權限。

5)你並不需要在CloudWatch的配置

ACCESSKEY明確指定您的AWS證書和SecretKey的應留空,因爲憑據,而不是從您的IAM實例配置文件繼承:

{ 
    "Id": "CloudWatchLogs", 
    "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch", 
    "Parameters": { 
     "AccessKey": "", 
     "SecretKey": "", 
     "Region": "eu-west-1", 
     "LogGroup": "MyLogGroup", 
     "LogStream": "{instance_id}" 
    } 
}, 
{ 
    "Id": "CloudWatch", 
    "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch", 
    "Parameters": 
    { 
     "AccessKey": "", 
     "SecretKey": "", 
     "Region": "eu-west-1", 
     "NameSpace": "MyMetricsNameSpace" 
    } 
} 

對配置文件進行任何更改後,重新啓動EC2Config(或者您的實例本身(如果在工作流中更容易),並且應該應用更改。C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt

6)故障排除

與發送本地日誌CW日誌可以在您的實例在這裏找到。第一次配置這個對我來說非常寶貴。

documentation也有常見問題的指導。


除此之外,一切看起來都對我很好。也許可以用小塊來處理問題 - 首先解決設置Windows事件日誌,然後是度量標準,然後是自定義日誌。

+0

完美的指導:)非常感謝。 – Matrix

0

我在Cloudwatch指標方面遇到了很多問題,但我最終發現了其中的大部分問題。

爲了接收指標,您將需要在文件的頂部添加"IsEnabled":true像這樣:

{ 
    "IsEnabled": true 
    "EngineConfiguration": { 
     "PollInterval": "00:00:15", 
     "Components": [ 

你也需要從here

相關問題