使用 CloudFormation 範本建立和設定 CloudWatch Application Insights 監控 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CloudFormation 範本建立和設定 CloudWatch Application Insights 監控

您可以直接從 AWS CloudFormation 範本將 Application Insights 監控,包括關鍵指標和遙測,新增至您的應用程式、資料庫和 Web 伺服器。

本節提供 JSON 和 YAML 格式的範例 AWS CloudFormation 範本,協助您建立和設定 Application Insights 監控。

若要檢視 Application Insights 資源和《AWS CloudFormation 使用者指南》,請參閱 ApplicationInsights 資源類型參考

為整個 AWS CloudFormation 堆疊建立 Application Insights 應用程式

若要套用下列範本,您必須建立 AWS 資源和一或多個資源群組,以便從中建立 Application Insights 應用程式來監控這些資源。如需詳細資訊,請參閱《 AWS Resource Groups 入門》

下列範本的前兩個部分會指定資源和資源群組。範本的最後一部分會為資源群組建立 Application Insights 應用程式,但不會設定應用程式或套用監控。如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考中的 CreateApplication 命令詳細資訊。

JSON 格式的範本

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Test Resource Group stack", "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : "ami-abcd1234efgh5678i", "SecurityGroupIds" : ["sg-abcd1234"] } }, ... "ResourceGroup": { "Type": "AWS::ResourceGroups::Group", "Properties": { "Name": "my_resource_group" } }, "AppInsightsApp": { "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group" }, "DependsOn" : "ResourceGroup" } } }

YAML 格式的範本

--- AWSTemplateFormatVersion: '2010-09-09' Description: Test Resource Group stack Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: ami-abcd1234efgh5678i SecurityGroupIds: - sg-abcd1234 ... ResourceGroup: Type: AWS::ResourceGroups::Group Properties: Name: my_resource_group AppInsightsApp: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group DependsOn: ResourceGroup

下列範本區段會將預設監控組態套用至 Application Insights 應用程式。如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考中的 CreateApplication 命令詳細資訊。

在將 AutoConfigurationEnabled 設定為 true 時,則會使用該 DEFAULT 應用程式層的建議監控設定值來設定應用程式的所有元件。如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考中的 DescribeComponentConfigurationRecommendationUpdateComponentConfiguration

JSON 格式的範本

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Test Application Insights Application stack", "Resources": { "AppInsightsApp": { "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group", "AutoConfigurationEnabled": true } } } }

YAML 格式的範本

--- AWSTemplateFormatVersion: '2010-09-09' Description: Test Application Insights Application stack Resources: AppInsightsApp: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group AutoConfigurationEnabled: true

建立具有詳細設定的 Application Insights 應用程式

下列範本會執行這些動作:

  • 建立 Application Insights 應用程式,並啟用 CloudWatch Events 通知並啟用 OpsCenter。如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考中的 CreateApplication 命令詳細資訊。

  • 使用兩個標籤來標記應用程式,其中一個標籤沒有標籤值。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 TagResource

  • 建立兩個自訂執行個體群組元件。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 CreateComponent

  • 建立兩個日誌模式集。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 CreateLogPattern

  • 設定 AutoConfigurationEnabledtrue,此設定應用程式的所有元件,並使用該 DEFAULT 層的建議監控設定值。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 DescribeComponentConfigurationRecommendation

JSON 格式的範本

{ "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group", "CWEMonitorEnabled": true, "OpsCenterEnabled": true, "OpsItemSNSTopicArn": "arn:aws:sns:us-east-1:123456789012:my_topic", "AutoConfigurationEnabled": true, "Tags": [ { "Key": "key1", "Value": "value1" }, { "Key": "key2", "Value": "" } ], "CustomComponents": [ { "ComponentName": "test_component_1", "ResourceList": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i" ] }, { "ComponentName": "test_component_2", "ResourceList": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i", "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i" ] } ], "LogPatternSets": [ { "PatternSetName": "pattern_set_1", "LogPatterns": [ { "PatternName": "deadlock_pattern", "Pattern": ".*\\sDeadlocked\\sSchedulers(([^\\w].*)|($))", "Rank": 1 } ] }, { "PatternSetName": "pattern_set_2", "LogPatterns": [ { "PatternName": "error_pattern", "Pattern": ".*[\\s\\[]ERROR[\\s\\]].*", "Rank": 1 }, { "PatternName": "warning_pattern", "Pattern": ".*[\\s\\[]WARN(ING)?[\\s\\]].*", "Rank": 10 } ] } ] } }

YAML 格式的範本

--- Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group CWEMonitorEnabled: true OpsCenterEnabled: true OpsItemSNSTopicArn: arn:aws:sns:us-east-1:123456789012:my_topic AutoConfigurationEnabled: true Tags: - Key: key1 Value: value1 - Key: key2 Value: '' CustomComponents: - ComponentName: test_component_1 ResourceList: - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i - ComponentName: test_component_2 ResourceList: - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i LogPatternSets: - PatternSetName: pattern_set_1 LogPatterns: - PatternName: deadlock_pattern Pattern: ".*\\sDeadlocked\\sSchedulers(([^\\w].*)|($))" Rank: 1 - PatternSetName: pattern_set_2 LogPatterns: - PatternName: error_pattern Pattern: ".*[\\s\\[]ERROR[\\s\\]].*" Rank: 1 - PatternName: warning_pattern Pattern: ".*[\\s\\[]WARN(ING)?[\\s\\]].*" Rank: 10

使用 CUSTOM 模式元件組態建立 Application Insights 應用程式

下列範本會執行這些動作:

  • 建立 Application Insights 應用程式。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 CreateApplication

  • 元件 my_component 會將 ComponentConfigurationMode 設定為 CUSTOM,這會導致此元件按照 CustomComponentConfiguration 中指定的組態進行設定。如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考資料中的 UpdateComponentConfiguration

JSON 格式的範本

{ "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group, "ComponentMonitoringSettings": [ { "ComponentARN": "my_component", "Tier": "SQL_SERVER", "ComponentConfigurationMode": "CUSTOM", "CustomComponentConfiguration": { "ConfigurationDetails": { "AlarmMetrics": [ { "AlarmMetricName": "StatusCheckFailed" }, ... ], "Logs": [ { "LogGroupName": "my_log_group_1", "LogPath": "C:\\LogFolder_1\\*", "LogType": "DOT_NET_CORE", "Encoding": "utf-8", "PatternSet": "my_pattern_set_1" }, ... ], "WindowsEvents": [ { "LogGroupName": "my_windows_event_log_group_1", "EventName": "Application", "EventLevels": [ "ERROR", "WARNING", ... ], "Encoding": "utf-8", "PatternSet": "my_pattern_set_2" }, ... ], "Alarms": [ { "AlarmName": "my_alarm_name", "Severity": "HIGH" }, ... ] }, "SubComponentTypeConfigurations": [ { "SubComponentType": "EC2_INSTANCE", "SubComponentConfigurationDetails": { "AlarmMetrics": [ { "AlarmMetricName": "DiskReadOps" }, ... ], "Logs": [ { "LogGroupName": "my_log_group_2", "LogPath": "C:\\LogFolder_2\\*", "LogType": "IIS", "Encoding": "utf-8", "PatternSet": "my_pattern_set_3" }, ... ], "processes" : [ { "processName" : "my_process", "alarmMetrics" : [ { "alarmMetricName" : "procstat cpu_usage", "monitor" : true }, { "alarmMetricName" : "procstat memory_rss", "monitor" : true } ] } ], "WindowsEvents": [ { "LogGroupName": "my_windows_event_log_group_2", "EventName": "Application", "EventLevels": [ "ERROR", "WARNING", ... ], "Encoding": "utf-8", "PatternSet": "my_pattern_set_4" }, ... ] } } ] } } ] } }

YAML 格式的範本

--- Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group ComponentMonitoringSettings: - ComponentARN: my_component Tier: SQL_SERVER ComponentConfigurationMode: CUSTOM CustomComponentConfiguration: ConfigurationDetails: AlarmMetrics: - AlarmMetricName: StatusCheckFailed ... Logs: - LogGroupName: my_log_group_1 LogPath: C:\LogFolder_1\* LogType: DOT_NET_CORE Encoding: utf-8 PatternSet: my_pattern_set_1 ... WindowsEvents: - LogGroupName: my_windows_event_log_group_1 EventName: Application EventLevels: - ERROR - WARNING ... Encoding: utf-8 PatternSet: my_pattern_set_2 ... Alarms: - AlarmName: my_alarm_name Severity: HIGH ... SubComponentTypeConfigurations: - SubComponentType: EC2_INSTANCE SubComponentConfigurationDetails: AlarmMetrics: - AlarmMetricName: DiskReadOps ... Logs: - LogGroupName: my_log_group_2 LogPath: C:\LogFolder_2\* LogType: IIS Encoding: utf-8 PatternSet: my_pattern_set_3 ... Processes: - ProcessName: my_process AlarmMetrics: - AlarmMetricName: procstat cpu_usage ... ... WindowsEvents: - LogGroupName: my_windows_event_log_group_2 EventName: Application EventLevels: - ERROR - WARNING ... Encoding: utf-8 PatternSet: my_pattern_set_4 ...

使用 DEFAULT 模式元件組態建立 Application Insights 應用程式

下列範本會執行這些動作:

  • 建立 Application Insights 應用程式。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 CreateApplication

  • 元件 my_component 會將 ComponentConfigurationMode 設定為 DEFAULT 並將 Tier 設定為 SQL_SERVER,這會使用 Application Insights 建議該 SQL_Server 層的組態設定來設定此元件。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 DescribeComponentConfigurationUpdateComponentConfiguration

JSON 格式的範本

{ "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group", "ComponentMonitoringSettings": [ { "ComponentARN": "my_component", "Tier": "SQL_SERVER", "ComponentConfigurationMode": "DEFAULT" } ] } }

YAML 格式的範本

--- Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group ComponentMonitoringSettings: - ComponentARN: my_component Tier: SQL_SERVER ComponentConfigurationMode: DEFAULT

使用 DEFAULT_WITH_OVERWRITE 模式元件組態建立 Application Insights 應用程式

下列範本會執行這些動作:

  • 建立 Application Insights 應用程式。如需詳細資訊,請參閱《Amazon CloudWatch Application Insights API 參考》中的 CreateApplication

  • 元件 my_component 會將 ComponentConfigurationMode 設定為 DEFAULT_WITH_OVERWRITE 並將 tier 設定為 DOT_NET_CORE,這會使用 Application Insights 建議該 DOT_NET_CORE 層的組態設定來設定此元件。覆寫的組態設定可在 DefaultOverwriteComponentConfiguration 中的下列項目中指定:

    • 在元件層級,系統會覆寫 AlarmMetrics 設定。

    • 在子元件層級,對於 EC2_Instance 類型的子元件,系統會覆寫 Logs 設定。

    如需詳細資訊,請參閱 Amazon CloudWatch Application Insights API 參考資料中的 UpdateComponentConfiguration

JSON 格式的範本

{ "Type": "AWS::ApplicationInsights::Application", "Properties": { "ResourceGroupName": "my_resource_group", "ComponentMonitoringSettings": [ { "ComponentName": "my_component", "Tier": "DOT_NET_CORE", "ComponentConfigurationMode": "DEFAULT_WITH_OVERWRITE", "DefaultOverwriteComponentConfiguration": { "ConfigurationDetails": { "AlarmMetrics": [ { "AlarmMetricName": "StatusCheckFailed" } ] }, "SubComponentTypeConfigurations": [ { "SubComponentType": "EC2_INSTANCE", "SubComponentConfigurationDetails": { "Logs": [ { "LogGroupName": "my_log_group", "LogPath": "C:\\LogFolder\\*", "LogType": "IIS", "Encoding": "utf-8", "PatternSet": "my_pattern_set" } ] } } ] } } ] } }

YAML 格式的範本

--- Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: my_resource_group ComponentMonitoringSettings: - ComponentName: my_component Tier: DOT_NET_CORE ComponentConfigurationMode: DEFAULT_WITH_OVERWRITE DefaultOverwriteComponentConfiguration: ConfigurationDetails: AlarmMetrics: - AlarmMetricName: StatusCheckFailed SubComponentTypeConfigurations: - SubComponentType: EC2_INSTANCE SubComponentConfigurationDetails: Logs: - LogGroupName: my_log_group LogPath: C:\LogFolder\* LogType: IIS Encoding: utf-8 PatternSet: my_pattern_set