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 명령 세부 정보를 참조하세요.
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 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을 참조하세요.
-
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_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
로 설정합니다. 이렇게 하면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_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
로 설정합니다. 이렇게 하면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