CloudFormation 템플릿을 사용하여 CloudWatch Application Insights 모니터링 생성 및 구성 - Amazon CloudWatch

CloudFormation 템플릿을 사용하여 CloudWatch Application Insights 모니터링 생성 및 구성

AWS CloudFormation 템플릿에서 직접 애플리케이션, 데이터베이스 및 웹 서버로 주요 지표 및 원격 측정을 포함한 Application Insights 모니터링을 추가할 수 있습니다.

이 단원에서는 Application Insights 모니터링을 생성하고 구성하는 데 도움이 되는 JSON 형식 및 YAML 형식의 샘플 AWS CloudFormation 템플릿을 제공합니다.

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 명령 세부 정보를 참조하세요.

AutoConfigurationEnabledtrue로 설정하면 애플리케이션의 모든 구성 요소가 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 애플리케이션 생성

아래에 나와 있는 템플릿은 다음 작업을 수행합니다.

  • CloudWatch Events 알림 및 OpsCenter가 활성화된 상태로 Application Insights 애플리케이션을 생성합니다. 자세한 내용은 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에 대해 ComponentConfigurationModeCUSTOM으로 설정합니다. 이렇게 하면 이 구성 요소가 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에 대해 ComponentConfigurationModeDEFAULT로 설정하고 TierSQL_SERVER로 설정합니다. 이렇게 하면 SQL_Server 계층에 대해 Application Insights에서 권장하는 구성 설정으로 이 구성 요소가 구성됩니다. 자세한 내용은 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에 대해 ComponentConfigurationModeDEFAULT_WITH_OVERWRITE로 설정하고 tierDOT_NET_CORE로 설정합니다. 이렇게 하면 DOT_NET_CORE 계층에 대해 Application Insights에서 권장하는 구성 설정으로 이 구성 요소가 구성됩니다. 덮어쓴 구성 설정은 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