애플리케이션 및 서비스 연속 모니터링

완료됨

이 단원에서 학습할 내용은 다음과 같습니다.

  • 연속 모니터링을 통해 애플리케이션 및 인프라의 상태, 성능, 안정성을 확인하는 방법.
  • 가시성을 통해 모니터링해야 하는 시스템의 데이터를 사용하는 방법.
  • Azure Monitor 및 Application Insights로 연속 모니터링을 구현하는 방법.
  • IT 서비스 관리 커넥터로 티켓팅 시스템 구현을 지원하는 방법.

연속 모니터링이 무엇인가요?

팀원들이 베타 테스트 중에 웹 사이트와 인프라를 모니터링하려고 합니다. Tim은 조사를 통해 몇 가지를 알아냈습니다.

연속 모니터링이란 애플리케이션 수명 주기의 각 단계를 모니터링하는 데 사용할 수 있는 프로세스와 기술을 말합니다. 연속 모니터링은 변경 내용이 개발에서 프로덕션으로 이동할 때 애플리케이션과 인프라의 상태, 성능, 안정성을 확인하는 데 도움이 됩니다.

연속 모니터링은 사용자에게 지속적인 가치를 제공하기 위해 소프트웨어를 더 빠르고 더 안정적으로 개발 및 배달하도록 도와주는 CI/CD 개념을 기반으로 합니다.

가시성이란?

가시성은 모니터링하려는 시스템 내에서 데이터를 사용할 수 있도록 만드는 것을 말합니다. 모니터링은 이 데이터를 수집하고 표시하는 실제 작업입니다.

Azure Monitor란?

Azure Monitor는 클라우드 및 온-프레미스의 애플리케이션과 인프라에서 전체 스택 가시성을 제공하는 Azure의 서비스입니다.

Azure Monitor는 Visual Studio 및 Visual Studio Code와 같은 개발 도구에서 작동하므로 개발 및 테스트 단계에서 사용할 수 있습니다. Azure Monitor는 Azure DevOps와 통합되어 배포 단계에서 릴리스 관리 및 작업 항목 관리를 제공합니다.

Azure Monitor는 ITSM(IT 서비스 관리) 및 SIEM(보안 정보 및 이벤트 관리) 도구와도 통합되어 기존 IT 프로세스 내의 문제와 인시던트를 추적하는 데 도움이 됩니다.

애플리케이션에서 모니터링 사용

애플리케이션은 복잡하며, 여러 구성 요소가 상호 연결되어 있습니다. 모든 시스템에서 엔드투엔드 트랜잭션과 연결을 시각화하려면 모든 웹 애플리케이션과 서비스에서 모니터링을 사용하도록 설정해야 합니다.

Azure DevOps에 기존 프로젝트가 없는 경우 Azure Developer CLI로 시작할 수 있습니다. Azure 개발자 CLI(azd)는 로컬 개발 환경에서 Azure로 애플리케이션을 가져오는 데 걸리는 시간을 단축하는 오픈 소스 도구입니다. azd은 터미널, 편집기, IDE(통합 개발 환경) 또는 CI/CD(연속 통합/지속적인 배포)에서 작업하는 경우 워크플로의 주요 단계에 매핑되는 모범 사례, 개발자 친화적인 명령을 제공합니다.

그런 다음 Azure Pipelines와 Azure Application Insights를 결합하여 릴리스 파이프라인에 연속 모니터링을 추가할 수 있습니다. Application Insights는 라이브 애플리케이션을 모니터링하는 데 사용할 수 있는 Azure Monitor 기능입니다. Application Insights는 잠시 후에 자세히 살펴보겠습니다.

인프라에서 모니터링 사용

애플리케이션은 기본 인프라 만큼만 안정적입니다. 전체 인프라에서 모니터링을 사용하도록 설정하면 완전한 가시성을 실현하고 오류가 발생할 때 근본 원인을 보다 쉽게 검색할 수 있습니다.

Azure Monitor는 가상 머신, 컨테이너, 스토리지, 네트워크 등의 리소스를 비롯하여 전체 하이브리드 인프라의 상태와 성능을 추적하는 데 도움이 됩니다.

Azure Monitor로 수집할 수 있는 항목은 다음과 같습니다.

IaC(Infrastructure as Code)를 사용하면 코드를 통해 애플리케이션에 필요한 인프라를 설명할 수 있습니다. 코드를 사용하여 인프라를 설명하므로 DevOps 팀이 애플리케이션에 사용하는 것과 동일한 개발, 테스트, 버전 관리 체계를 따를 수 있습니다.

IaC(Infrastructure as Code) 방식으로 모니터링을 사용하도록 설정하기 위해 다음을 사용할 수 있습니다.

  • 대규모 리소스 세트에서 모니터링을 사용하도록 설정하고 경고를 구성하는 Resource Manager 템플릿.
  • 리소스에 다양한 규칙을 적용하는 Azure Policy. Azure Policy는 해당 리소스가 회사 표준 및 SLA(서비스 수준 계약)를 준수하는지 확인하는 데 도움이 됩니다.

Azure 리소스 그룹을 사용하여 리소스 결합

Azure의 일반적인 애플리케이션에는 가상 머신, Azure App Service, 마이크로 서비스, AKS(Azure Kubernetes Service) 클러스터, Azure Service Fabric 같은 컴퓨팅 리소스가 포함되어 있습니다. 이러한 애플리케이션은 Azure Event Hubs, Azure Storage, Microsoft SQL Database, Azure Service Bus와 같은 데이터 및 네트워킹 서비스에 종속되는 경우가 많습니다.

Azure에서 리소스 그룹은 관련 Azure 리소스를 보유합니다. 리소스 그룹의 리소스를 결합하여 다양한 애플리케이션을 구성하는 모든 리소스를 완전히 파악할 수 있습니다. 리소스 그룹용 Azure Monitor는 전체 애플리케이션의 상태와 성능을 추적하는 기본적인 방법을 제공하며, 개별 구성 요소로 드릴 다운하여 오류 문제를 해결할 수 있습니다.

연속 배포를 통해 품질 보장

CI/CD를 사용하면 자동화된 테스트의 결과에 따라 애플리케이션에 코드 변경 내용을 자동으로 통합하고 배포할 수 있습니다. CI/CD는 배포 프로세스를 간소화하고 변경 내용이 프로덕션으로 이동하기 전에 코드의 품질을 확인합니다.

다음은 배포 프로세스 중에 품질을 보장하는 몇 가지 권장 방법입니다.

  • Azure Pipelines를 사용하여 코드를 프로덕션으로 커밋하는 시점부터 자동화된 테스트 실행을 포함하여 전체 프로세스를 자동화하는 CI/CD 파이프라인을 구현할 수 있습니다.

  • 배포 게이트를 사용하여 배포 전 및 배포 후 환경에 모니터링을 추가합니다.

    배포 게이트는 애플리케이션이 개발에서 프로덕션으로 이동할 때 핵심 상태 및 성능 메트릭(KPI)을 충족하는지 확인하는 데 도움이 됩니다. 배포 게이트는 인프라 환경이나 스케일링 방법의 차이가 KPI에 부정적인 영향을 주지 않도록 하는 데도 도움이 됩니다.

  • 개발, 테스트, 준비, 프로덕션과 같은 다양한 배포 환경 간에 별도의 모니터링 인스턴스를 유지 관리합니다.

    별도의 모니터링 인스턴스는 수집되는 모든 데이터가 애플리케이션 및 인프라에서 관련성이 있도록 하는 데 도움이 됩니다. 환경 간에 데이터를 상호 연결해야 하면 메트릭 탐색기에서 다중 리소스 차트를 사용하거나 Log Analytics에서 리소스 간 쿼리를 만들 수 있습니다.

조치를 취할 수 있는 경고 만들기

모니터링 활동이 효과적이려면 모든 활성 문제와 발생 가능성이 예측되는 문제를 관리자에 알려 주어야 합니다. 이렇게 하는 몇 가지 방법은 다음과 같습니다.

  • 로그 및 메트릭을 기반으로 Azure Monitor에서 경고를 만들어 예측 가능한 오류 상태를 식별합니다.

    목표는 각 경고가 조치를 취할 수 있는 중요한 조건을 나타내도록 하는 것입니다. 가양성은 실제로 존재하지 않는 문제를 모니터링이 보고하는 경우에 발생합니다. 자체 정적 임계값을 정의하는 대신 동적 임계값을 사용하여 메트릭 데이터에서 기준선을 자동으로 계산하세요.

  • 가장 효과적으로 관리자에게 알리는 경고에 대한 조치를 정의합니다.

    알림에 사용할 수 있는 조치에는 SMS(문자 메시지), 메일, 푸시 알림 또는 음성 통화가 포함됩니다.

  • 고급 작업을 사용하여 웹후크를 통해 ITSM 도구에 연결하거나 기타 경고 관리 시스템에 연결합니다.

  • Azure Automation runbook 또는 웹후크를 사용하여 경고 조건을 수정합니다.

  • 자동 크기 조정을 사용하여 수집하는 메트릭에 따라 컴퓨팅 리소스를 동적으로 조정합니다.

대시보드 및 통합 문서 만들기

개발 팀과 운영 팀이 동일한 원격 분석 및 도구에 액세스할 수 있도록 하면 전체 환경에서 패턴을 확인하고 MTTD(평균 검색 시간)와 MTTR(평균 복원 시간)을 최소화할 수 있습니다. 이렇게 하는 몇 가지 방법은 다음과 같습니다.

  • 조직 내 다양한 역할의 공통 메트릭 및 로그를 기반으로 사용자 지정 대시보드를 만듭니다.

    대시보드는 여러 Azure 리소스의 데이터를 결합할 수 있습니다.

  • Azure Monitor 통합 문서를 만들어 개발 팀과 운영 팀 간에 지식을 공유할 수 있습니다.

    차트와 로그 요약을 포함하는 동적 보고서로 통합 문서를 준비할 수 있습니다. 개발자는 고객 지원 또는 운영 문제 해결에 도움이 되는 문제 해결 가이드를 만들 수 있습니다.

지속적으로 최적화

모니터링은 KPI와 사용자 동작 메트릭을 지속적으로 추적한 후 반복적인 계획 연습을 통해 최적화할 것을 권장하는 인기 있는 빌드 - 측정- 학습 철학의 기본 측면 중 하나입니다. Azure Monitor는 비즈니스와 관련된 메트릭과 로그를 수집하고 다음 배포에 새 데이터 요소를 추가하는 데 도움이 됩니다.

Azure Application Insights란?

Application Insights는 웹 개발자를 위한 APM(애플리케이션 성능 관리) 서비스입니다. 이를 통해 다음을 수행할 수 있습니다.

  • 라이브 웹 애플리케이션을 모니터링합니다.
  • 성능 변칙을 자동으로 검색합니다.
  • 오류를 진단하고 사용자가 애플리케이션에서 실제로 수행하는 작업을 이해합니다.

Application Insights는 .NET, Node.js, Java 및 기타 여러 프로그래밍 언어와 프레임워크에서 사용할 수 있습니다. Application Insights는 클라우드 또는 온-프레미스에서 호스트되는 애플리케이션에서 사용할 수 있습니다.

Application Insights는 기존 DevOps 프로세스 및 도구와 통합하는 데 사용할 수 있는 연결 지점을 제공합니다. Application Insights는 모바일 애플리케이션에서 원격 분석을 모니터링하고 분석할 수 있는 Visual Studio App Center와도 통합됩니다.

Application Insights의 작동 방식

애플리케이션에 작은 계측 패키지를 추가하여 시작합니다. 그런 다음 Azure Portal에서 Application Insights 리소스를 만듭니다. 계측은 앱을 모니터링하고 원격 분석 데이터를 Azure로 다시 보냅니다. 포털에서 이 데이터에 액세스할 수 있습니다. 애플리케이션은 어디서나 실행할 수 있습니다. Azure에서 호스트될 필요는 없습니다.

웹 애플리케이션 외에도 거의 모든 종류의 백그라운드 구성 요소를 계측할 수 있습니다. JavaScript 코드를 계측할 수도 있습니다.

다음은 라이브 서비스에서 Application Insights까지 모니터링 데이터의 흐름을 보여 주는 다이어그램입니다. Application Insights는 그런 다음 추세를 시각화하고 이해할 수 있도록 경고를 발생시키거나 다른 도구로 데이터를 푸시할 수 있습니다.

라이브 서비스에서 Application Insights까지 모니터링 데이터의 흐름을 보여 주는 다이어그램

호스트 환경에서 원격 분석 데이터를 끌어올 수도 있습니다. 이 데이터에는 성능 카운터, Azure Diagnostics 및 Docker 로그가 포함됩니다. 가상 모니터링 테스트를 설정할 수도 있습니다. 가상 모니터링은 트랜잭션 집합을 사용하여 성능 및 가용성을 평가합니다. 가상 트랜잭션은 릴리스 간 결과를 비교하는 데 사용할 수 있는 예측 가능한 테스트입니다.

오버헤드는 무엇입니까? 앱 성능에 미치는 영향은 일반적으로 적습니다. 추적 호출은 비차단이며, 별도의 스레드에서 일괄 처리되고 전송됩니다.

Application Insights는 무엇을 모니터링하나요?

Application Insights는 개발 팀이 앱의 작동 방식과 사용 방식을 이해하도록 도와줍니다.

Application Insights는 다음을 모니터링합니다.

  • 요청 속도, 응답 시간 및 실패율

    하루 중 어떤 시간에, 어떤 사용자 위치에서, 어떤 페이지가 가장 인기 있는지 확인합니다. 어떤 페이지가 가장 성능이 우수한지 확인합니다. 응답 시간과 실패율을 트래픽 수준과 비교하면 어떤지 확인합니다.

  • 외부 서비스로 인한 속도 저하 여부.

  • 애플리케이션 예외.

    집계된 통계를 분석하거나 특정 인스턴스를 선택하여 관련 요청의 스택 추적을 분석합니다. Application Insights는 서버 및 클라이언트에서 발생하는 예외를 보고합니다.

  • 사용자의 웹 브라우저에서 보고된 웹 페이지 로드 성능.

  • 응답 시간과 실패율을 포함하여 웹 페이지의 AJAX 호출.

  • 사용자 및 세션 수.

  • Windows 또는 Linux 서버 컴퓨터의 성능 카운터 - CPU, 메모리, 네트워크 사용량 등.

  • Docker 또는 Azure의 호스트 진단.

  • 앱의 진단 추적 로그. 이를 통해 추적 이벤트와 요청의 상관 관계를 지정할 수 있습니다.

  • 클라이언트 또는 서버 코드에 직접 쓰는 사용자 지정 이벤트 및 메트릭. 예를 들어 판매된 항목 또는 승리한 게임 같은 이벤트를 추적할 수 있습니다.

원격 분석은 어디서 찾을 수 있나요?

원격 분석 데이터를 보고 추적할 수 있는 방법은 다음과 같습니다.

  • 스마트 검색

    자동 경고는 앱의 일반적인 원격 분석 패턴에 맞게 조정되고, 일반적인 패턴을 벗어나는 항목이 있으면 트리거합니다. 특정 수준의 사용자 지정 또는 표준 메트릭에 대해 경고를 설정할 수도 있습니다.

    Application Insights의 스마트 검색을 보여 주는 스크린샷

  • 애플리케이션 맵

    애플리케이션 맵을 사용하면 분산된 애플리케이션의 모든 구성 요소에서 성능 병목 상태 또는 실패 핫스폿을 찾는 데 도움이 됩니다.

    Application Insights의 애플리케이션 맵을 보여 주는 스크린샷

  • 프로파일러

    Basic 서비스 계층 이상을 사용하면 Azure App Service에서 실행되는 ASP.NET 및 ASP.NET Core 앱에서 Profiler를 실행할 수 있습니다.

    Application Insights의 Profiler를 보여 주는 스크린샷

  • 사용 현황 분석

    이 기능을 사용하면 사용자 구분 및 재방문 주기를 분석할 수 있습니다.

    Application Insights의 사용 현황 분석을 보여 주는 스크린샷

  • 검색

    검색은 페이지 보기, 예외 또는 웹 요청과 같은 개별 원격 분석 항목을 찾고 검색하는 데 도움이 됩니다.

    Application Insights의 검색을 보여 주는 스크린샷

  • 메트릭 탐색기

    메트릭 탐색기를 사용하면 차트를 그리고, 추세 간 상관 관계를 시각적으로 표시하고, 메트릭의 급등 및 급락을 조사할 수 있습니다.

    Azure Monitor의 메트릭 탐색기를 보여 주는 스크린샷

  • 라이브 메트릭 스트림

    새 빌드를 배포하는 경우 거의 실시간으로 성능 표시기를 보고 모든 것이 예상대로 작동하는지 확인합니다.

    Application Insights의 라이브 메트릭 스트림을 보여 주는 스크린샷

  • Log Analytics

    강력한 쿼리 언어를 사용하여 앱의 성능과 사용에 대한 어려운 질문에 답합니다.

    Azure Monitor의 Log Analytics를 보여 주는 스크린샷

  • 스냅샷 디버거

    라이브 웹 애플리케이션에서 디버그 스냅샷을 수집합니다.

    Application Insights의 스냅샷 디버거를 보여 주는 스크린샷

  • Power BI

    사용 현황 메트릭을 다른 비즈니스 인텔리전스와 통합합니다.

    Power BI를 보여 주는 스크린샷

  • 연속 내보내기

    도착하는 원시 데이터를 스토리지로 즉시 내보냅니다.

    Application Insights의 연속 내보내기를 보여 주는 스크린샷

IT 서비스 관리 커넥터란?

Azure용 ITSMC(IT 서비스 관리 커넥터)는 Azure 모니터링 도구와 다음을 비롯한 ITSM 도구 간의 양방향 통합을 제공합니다.

  • ServiceNow
  • Provance
  • Cherwell
  • System Center Service Manager

Azure 모니터링 도구와 ITSMC를 통합하여 다음을 수행할 수 있습니다.

  • Azure 경고에 따라 ITSM 도구에서 작업 항목을 만들거나 업데이트합니다.
  • 인시던트 및 변경 요청 데이터를 ITSM 도구에서 Azure Log Analytics로 끌어옵니다.

Azure 모니터링 도구를 사용하여 문제를 식별, 분석, 해결할 수 있습니다. 다만 문제와 관련된 작업 항목은 일반적으로 ITSM 도구에 저장됩니다. ITSMC를 사용하여 티켓팅 시스템을 구현하는 것이 더 적합합니다. 이렇게 하면 ITSM 도구와 Azure 모니터링 도구 사이를 오가지 않고 필요한 모든 정보를 한곳에서 얻을 수 있습니다. ITSMC는 문제를 해결하는 데 걸리는 시간을 줄여 문제 해결 환경을 개선합니다.