CloudWatch NLog를 사용하여 Amazon Logs에서.NET 애플리케이션에 대한 로깅을 구성합니다. - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CloudWatch NLog를 사용하여 Amazon Logs에서.NET 애플리케이션에 대한 로깅을 구성합니다.

작성자: Bibhuti Sahu(AWS) 및 Rob Hill(AWS)(AWS)

환경: 프로덕션

기술: 관리 및 거버넌스 DevOps, 웹 및 모바일 앱

워크로드: Microsoft

AWS 서비스: 아마존 CloudWatch 로그

요약

이 패턴은 NLog 오픈 소스 로깅 프레임워크를 사용하여 Amazon Logs에.NET 애플리케이션 사용 및 이벤트를 기록하는 방법을 설명합니다. CloudWatch CloudWatch 콘솔에서 애플리케이션의 로그 메시지를 거의 실시간으로 볼 수 있습니다. 또한 지표를 설정하고 지표 임계값이 초과될 경우 알리도록 경보를 구성할 수 있습니다. CloudWatch Application Insights를 사용하면 모니터링되는 애플리케이션의 잠재적 문제를 보여주는 자동화된 대시보드 또는 사용자 지정 대시보드를 볼 수 있습니다. CloudWatch Application Insights는 애플리케이션 및 인프라와 관련된 지속적인 문제를 신속하게 격리할 수 있도록 설계되었습니다.

CloudWatch Logs에 로그 메시지를 쓰려면 AWS.Logger.NLog NuGet 패키지를 .NET 프로젝트에 추가합니다. 그런 다음 CloudWatch 로그를 대상으로 사용하도록 NLog.config 파일을 업데이트합니다.

사전 조건 및 제한 사항

사전 조건

  • 활성 상태의 AWS 계정.

  • 다음을 수행하는.NET 웹 또는 콘솔 애플리케이션

    • 지원되는 .NET 프레임워크 또는 .NET Core 버전 사용. 자세한 내용은 제품 버전을 참조하세요.

    • NLogs로 로그 데이터를 Application Insights로 보내기.

  • AWS 서비스에 대한 IAM 역할 생성 권한. 자세한 내용은 서비스 역할 권한을 참조하세요.

  • AWS 서비스에 역할 전달 권한. 자세한 내용은 사용자에게 AWS 서비스 역할을 전달할 수 있는 권한 부여를 참조하세요.

제품 버전

  • .NET Framework 버전 3.5 이상

  • .NET Core 버전 1.0.1, 2.0.0 이상

아키텍처

대상 기술 스택  

  • NLog

  • 아마존 CloudWatch 로그

대상 아키텍처 

.NET 애플리케이션의 로그 데이터를 Amazon ClodWatch Logs에 쓰는 NLog의 아키텍처 다이어그램.
  1. .NET 애플리케이션은 NLog 로깅 프레임워크에 로그 데이터를 작성합니다.

  2. NLog는 로그 데이터를 로그에 기록합니다. CloudWatch

  3. CloudWatch 경보 및 사용자 지정 대시보드를 사용하여 .NET 애플리케이션을 모니터링합니다.

도구

서비스

  • Amazon CloudWatch Application Insights는 애플리케이션 및 기본 AWS 리소스의 상태를 관찰하는 데 도움이 됩니다.

  • Amazon CloudWatch Logs를 사용하면 모든 시스템, 애플리케이션 및 AWS 서비스의 로그를 중앙 집중화하여 로그를 모니터링하고 안전하게 보관할 수 있습니다.

  • AWS Identity and Access Management(IAM)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.

  • AWS Tools for PowerShell 는 PowerShell 명령줄에서 AWS 리소스의 작업을 스크립팅하는 데 도움이 되는 PowerShell 모듈 세트입니다.

기타 도구

  • Logger.nLog는 로그에 로그 데이터를 기록하는 NLog 대상입니다. CloudWatch

  • NLog는 데이터베이스, 로그 파일 또는 콘솔과 같은 대상에 로그 데이터를 쓰는 데 도움이 되는 .NET 플랫폼용 오픈 소스 로깅 프레임워크입니다.

  • PowerShellWindows, Linux 및 macOS에서 실행되는 Microsoft 자동화 및 구성 관리 프로그램입니다.

  • Visual Studio는 컴파일러, 코드 완성 도구, 그래픽 디자이너 및 소프트웨어 개발을 지원하는 기타 기능을 포함하는 통합 개발 환경(IDE)입니다.

모범 사례

에픽

작업설명필요한 기술

IAM 정책을 생성합니다.

IAM 설명서의 JSON 편집기를 사용하여 정책 생성 지침을 따릅니다. 로그가 CloudWatch 로그를 읽고 쓸 수 있도록 허용하는 데 필요한 최소 권한이 있는 다음 JSON 정책을 입력합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:GetLogEvents", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutRetentionPolicy" ], "Resource": [ "*" ] } ] }
AWS 관리자, AWS DevOps

IAM 역할을 생성합니다.

IAM 설명서의 AWS 서비스에 권한을 위임할 역할 생성 지침을 따릅니다. 이전에 생성한 정책을 선택합니다. 이는 로깅 작업을 수행하는 CloudWatch Logs의 역할입니다.

AWS 관리자, AWS DevOps

에 대한 AWS 도구를 설정합니다 PowerShell.

  1. AWS 도구 설치의 운영 체제별 지침을 따르십시오 PowerShell.

  2. PowerShell cmdlet용 AWS Tools를 사용하여 액세스 키와 비밀 키를 프로필에 저장합니다. 지침은 AWS Tools에서의 프로필 관리 PowerShell 설명서를 참조하십시오.

일반 AWS
작업설명필요한 기술

NuGet 패키지를 설치합니다.

  1. Visual Studio에서 파일을 선택한 다음 프로젝트 또는 솔루션 열기를 선택합니다.

  2. NLogs를 설치할 프로젝트를 선택합니다.

  3. Visual Studio에서 도구, NuGet 패키지 관리자, 패키지 관리자 콘솔을 선택합니다.

  4. 다음 명령을 입력하여 AWS.Logger.NLog NuGet 패키지를 설치합니다.

    Install-Package AWS.Logger.NLog -Version 3.1.0
앱 개발자

로깅 대상을 구성합니다.

  1. NLog.config 파일을 엽니다.

  2. 대상 typeAWSTarget을 입력합니다.

  3. 대상 logGroup에 사용할 로그 그룹 이름을 입력합니다. 로그 그룹이 아직 존재하지 않는 경우 제공된 이름을 가진 새 로그 그룹이 자동으로 생성됩니다.

  4. 대상의 region 경우 CloudWatch 로그가 구성된 AWS 지역을 입력합니다.

  5. 대상 profile에 액세스 키와 보안 암호 키를 저장하기 위해 이전에 생성한 프로필의 이름을 입력합니다.

  6. NLog.config 파일을 저장하고 닫습니다.

샘플 구성 파일은 이 패턴의 추가 정보 섹션을 참조하세요. 애플리케이션을 실행하면 NLog가 로그 메시지를 작성하여 CloudWatch Logs로 전송합니다.

앱 개발자
작업설명필요한 기술

로깅 검증.

로그 설명서에서 로그로 CloudWatch 전송된 로그 데이터 보기의 CloudWatch 지침을 따르세요. .NET 애플리케이션에 대한 로그 이벤트가 기록되고 있는지 확인합니다. 로그 이벤트가 기록되지 않는 경우 이 패턴의 문제 해결 섹션을 참조하세요.

일반 AWS

.NET 애플리케이션 스택을 모니터링합니다.

사용 사례에 따라 CloudWatch 필요에 따라 모니터링을 구성하십시오. CloudWatch 로그 인사이트, CloudWatch 메트릭 인사이트, CloudWatch 애플리케이션 인사이트를 사용하여 .NET 워크로드를 모니터링할 수 있습니다. 알림을 받을 수 있도록 경보를 구성하고 단일 보기에서 워크로드를 모니터링하기 위한 사용자 지정 대시보드를 만들 수도 있습니다.

일반 AWS

문제 해결

문제Solution

로그 데이터는 CloudWatch 로그에 표시되지 않습니다.

CloudWatch Logs가 맡는 IAM 역할에 IAM 정책이 연결되어 있는지 확인하십시오. 지침은 에픽 섹션의 액세스 및 도구 설정 섹션을 참조하세요.

관련 리소스

추가 정보

다음은 샘플 NLog.config 파일입니다.

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <nlog> <extensions> <add assembly="NLog.AWS.Logger" /> </extensions> <targets> <target name="aws" type="AWSTarget" logGroup="NLog.TestGroup" region="us-east-1" profile="demo"/> </targets> <rules> <logger name="*" minlevel="Info" writeTo="aws" /> </rules> </nlog> </configuration>