애플리케이션 수준 CloudWatch 구성 - AWS 권장 가이드

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

애플리케이션 수준 CloudWatch 구성

애플리케이션 로그 및 지표는 애플리케이션을 실행하여 생성되며 애플리케이션별로 다릅니다. 조직에서 정기적으로 사용하는 애플리케이션을 적절하게 모니터링하는 데 필요한 로그와 지표를 정의해야 합니다. 예를 들어 조직에서 웹 기반 애플리케이션을 위한 Microsoft IIS(인터넷 정보 서버)를 표준화했을 수 있습니다. 조직 전체에서 사용할 수도 있는 IIS에 대한 표준 로그 및 지표 CloudWatch 구성을 생성할 수 있습니다. 애플리케이션별 구성 파일은 중앙 위치(예: S3 버킷)에 저장할 수 있으며 워크로드 소유자 또는 자동 검색을 통해 액세스하고 CloudWatch 구성 디렉터리에 복사할 수 있습니다. CloudWatch 에이전트는 각 EC2 인스턴스 또는 서버의 구성 파일 디렉터리에 있는 CloudWatch 구성 파일을 복합 CloudWatch 구성으로 자동으로 결합합니다. 최종 결과는 조직의 표준 시스템 수준 구성과 모든 관련 애플리케이션 수준 CloudWatch 구성을 포함하는 CloudWatch 구성입니다.

워크로드 소유자는 모든 중요한 애플리케이션 및 구성 요소에 대한 로그 파일 및 지표를 식별하고 구성해야 합니다.

애플리케이션 수준 로그 구성

애플리케이션 수준 로깅은 애플리케이션이 상용 off-the-shelf(COTS)인지 아니면 사용자 지정 개발 애플리케이션인지에 따라 달라집니다. COTS 애플리케이션 및 해당 구성 요소는 로그 세부 정보 수준, 로그 파일 형식, 로그 파일 위치 등 로그 구성 및 출력에 대한 여러 옵션을 제공할 수 있습니다. 그러나 대부분의 COTS 또는 타사 애플리케이션에서는 로깅을 근본적으로 변경할 수 없습니다(예: 구성 불가능한 추가 로그 문 또는 형식을 포함하도록 애플리케이션 코드 업데이트). 최소한 COTS 또는 타사 애플리케이션에 대한 로깅 옵션을 구성하여 경고 및 오류 수준 정보를 가급적이면 JSON 형식으로 로깅해야 합니다.

CloudWatch 구성에 애플리케이션의 로그 파일을 포함하여 사용자 지정 개발 애플리케이션을 CloudWatch Logs와 통합할 수 있습니다. 사용자 지정 애플리케이션은 로그 출력 형식을 사용자 지정하고, 구성 요소 출력을 분류하고, 별도의 로그 파일로 분리할 수 있으며, 필요한 추가 세부 정보를 포함할 수 있기 때문에 더 나은 로그 품질과 제어를 제공합니다. 분석 및 처리가 더 쉬워지도록 로깅 라이브러리와 조직에 필요한 데이터 및 형식을 검토하고 표준화해야 합니다.

CloudWatch Logs PutLogEvents API 호출을 사용하거나 AWS SDK를 사용하여 CloudWatch 로그 스트림에 쓸 수도 있습니다. 분산된 구성 요소 및 서버 집합에서 단일 로그 스트림에 대한 로깅 조정과 같은 사용자 지정 로깅 요구 사항에 API 또는 SDK를 사용할 수 있습니다. 그러나 유지 관리가 가장 쉽고 가장 광범위하게 적용할 수 있는 솔루션은 로그 파일에 쓰도록 애플리케이션을 구성한 다음 CloudWatch 에이전트를 사용하여 로그 파일을 읽고 CloudWatch로 스트리밍하는 것입니다.

또한 애플리케이션 로그 파일에서 측정하려는 지표의 종류를 고려해야 합니다. 지표 필터를 사용하여 CloudWatch 로그 그룹의이 데이터에 대한 측정, 그래프 작성 및 경보를 수행할 수 있습니다. 예를 들어 지표 필터를 사용하여 로그에서 실패한 로그인 시도를 식별하여 실패한 로그인 시도 수를 계산할 수 있습니다.

애플리케이션 로그 파일에 CloudWatch 임베디드 지표 형식을 사용하여 사용자 지정 개발 애플리케이션에 대한 사용자 지정 지표를 생성할 수도 있습니다.

애플리케이션 수준 지표 구성

사용자 지정 지표는 AWS 서비스에서 CloudWatch에 직접 제공하지 않고 CloudWatch 지표의 사용자 지정 네임스페이스에 게시되는 지표입니다. 모든 애플리케이션 지표는 사용자 지정 CloudWatch 지표로 간주됩니다. 애플리케이션 지표는 EC2 인스턴스, 애플리케이션 구성 요소, API 직접 호출 또는 심지어 비즈니스 함수와 일치할 수 있습니다. 또한 지표에 대해 선택한 차원의 중요도와 카디널리티를 고려해야 합니다. 카디널리티가 높은 차원은 많은 수의 사용자 지정 지표를 생성하여 CloudWatch 비용을 증가시킬 수 있습니다.

CloudWatch를 사용하면 다음을 비롯한 여러 가지 방법으로 애플리케이션 수준 지표를 캡처할 수 있습니다.

  • procstat 플러그인에서 캡처하려는 개별 프로세스를 정의하여 프로세스 수준 지표를 캡처합니다.

  • 애플리케이션은 Windows 성능 모니터에 지표를 게시하며이 지표는 CloudWatch 구성에 정의되어 있습니다.

  • 지표 필터 및 패턴은 CloudWatch의 애플리케이션 로그에 적용됩니다.

  • 애플리케이션은 CloudWatch 임베디드 지표 형식을 사용하여 CloudWatch 로그에 씁니다.

  • 애플리케이션은 API 또는 AWS SDK를 통해 CloudWatch로 지표를 전송합니다.

  • 애플리케이션은 CloudWatch 에이전트가 구성된 수집 또는 StatsD 데몬으로 지표를 전송합니다.

procstat를 사용하여 CloudWatch 에이전트로 중요한 애플리케이션 프로세스를 모니터링하고 측정할 수 있습니다. 이렇게 하면 애플리케이션에 대해 중요한 프로세스가 더 이상 실행되지 않는 경우 경보를 발생시키고 조치(예: 알림 또는 재시작 프로세스)를 취할 수 있습니다. 또한 애플리케이션 프로세스의 성능 특성을 측정하고 특정 프로세스가 비정상적으로 작동하는 경우 경보를 발생시킬 수 있습니다.

Procstat 모니터링은 추가 사용자 지정 지표로 COTS 애플리케이션을 업데이트할 수 없는 경우에도 유용합니다. 예를 들어를 측정하고 사용자 지정 my_process application_version차원을 cpu_time 포함하는 지표를 생성할 수 있습니다. 지표마다 차원이 다른 경우 애플리케이션에 여러 CloudWatch 에이전트 구성 파일을 사용할 수도 있습니다.

애플리케이션이 Windows에서 실행되는 경우 Windows 성능 모니터에 지표를 이미 게시하는지 평가해야 합니다. 많은 COTS 애플리케이션이 Windows 성능 모니터와 통합되어 애플리케이션 지표를 쉽게 모니터링할 수 있습니다. 또한 CloudWatch는 Windows 성능 모니터와 통합되며 이미 사용 가능한 모든 지표를 캡처할 수 있습니다.

애플리케이션에서 제공하는 로깅 형식 및 로그 정보를 검토하여 지표 필터로 추출할 수 있는 지표를 결정해야 합니다. 애플리케이션의 기록 로그를 검토하여 오류 메시지와 비정상적인 종료가 어떻게 표시되는지 확인할 수 있습니다. 또한 이전에 보고된 문제를 검토하여 문제가 반복되지 않도록 지표를 캡처할 수 있는지 확인해야 합니다. 또한 애플리케이션의 설명서를 검토하고 애플리케이션 개발자에게 오류 메시지를 식별할 수 있는 방법을 확인하도록 요청해야 합니다.

사용자 지정 개발 애플리케이션의 경우 애플리케이션 개발자와 협력하여 CloudWatch 임베디드 지표 형식, AWS SDK 또는 AWS API를 사용하여 구현할 수 있는 중요한 지표를 정의합니다. 권장되는 접근 방식은 임베디드 지표 형식을 사용하는 것입니다. AWS 제공된 오픈 소스 임베디드 지표 형식 라이브러리를 사용하여 필요한 형식으로 문을 작성할 수 있습니다. 또한 임베디드 지표 형식 에이전트를 포함하도록 애플리케이션별 CloudWatch 구성을 업데이트해야 합니다. 이렇게 하면 EC2 인스턴스에서 실행되는 에이전트가 임베디드 지표 형식 지표를 CloudWatch로 전송하는 로컬 임베디드 지표 형식 엔드포인트 역할을 합니다.

애플리케이션이 이미 수집 또는 통계에 지표 게시를 지원하는 경우 이를 활용하여 지표를 CloudWatch에 수집할 수 있습니다.