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 stackResources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: ami-abcd1234efgh5678iSecurityGroupIds: - sg-abcd1234... ResourceGroup: Type: AWS::ResourceGroups::Group Properties: Name:my_resource_groupAppInsightsApp: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName:my_resource_groupDependsOn: ResourceGroup
다음 템플릿 섹션에서는 Application Insights 애플리케이션에 기본 모니터링 구성을 적용합니다. 자세한 내용은 Amazon CloudWatch Application Insights API 참조의 CreateApplication 명령 세부 정보를 참조하세요.
AutoConfigurationEnabled를 true로 설정하면 애플리케이션의 모든 구성 요소가 DEFAULT 애플리케이션 티어에 대한 권장 모니터링 설정으로 구성됩니다. 이러한 설정 및 티어에 대한 자세한 내용은 Amazon CloudWatch Application Insights API 참조의 DescribeComponentConfigurationRecommendation 및 UpdateComponentConfiguration을 참조하세요.
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 stackResources: AppInsightsApp: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName:my_resource_groupAutoConfigurationEnabled: 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을 참조하세요.
-
AutoConfigurationEnabled를true로 설정합니다. 이렇게 하면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_groupCWEMonitorEnabled: true OpsCenterEnabled: true OpsItemSNSTopicArn: arn:aws:sns:us-east-1:123456789012:my_topicAutoConfigurationEnabled: true Tags: - Key:key1Value:value1- Key:key2Value: '' CustomComponents: - ComponentName:test_component_1ResourceList: - 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-abcd1234efgh5678iLogPatternSets: - 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로 설정합니다. 이렇게 하면SQL_Server계층에 대해 Application Insights에서 권장하는 구성 설정으로 이 구성 요소가 구성됩니다. 자세한 내용은 Amazon CloudWatch Application Insights API 참조의 DescribeComponentConfiguration 및 UpdateComponentConfiguration을 참조하세요.
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_groupComponentMonitoringSettings: - ComponentARN:my_componentTier: 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로 설정합니다. 이렇게 하면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_groupComponentMonitoringSettings: - ComponentName:my_componentTier: DOT_NET_CORE ComponentConfigurationMode: DEFAULT_WITH_OVERWRITE DefaultOverwriteComponentConfiguration: ConfigurationDetails: AlarmMetrics: - AlarmMetricName: StatusCheckFailed SubComponentTypeConfigurations: - SubComponentType: EC2_INSTANCE SubComponentConfigurationDetails: Logs: - LogGroupName:my_log_groupLogPath: C:\LogFolder\* LogType: IIS Encoding: utf-8 PatternSet:my_pattern_set