7. 웹서버가 구동중인 가상머신에 대한 모니터링 구성 방법 (Azure 기능만 사용할 경우)
Azure Monitor
- 여러 Azure, 비 Azure 구독 및 테넌트 시스템의 모든 계층 및 구성 요소에서 데이터를 수집하고 집계한다.
- 데이터를 상호 연결, 분석, 시각화 또는 응답할 수 있는 일반적인 도구 집합에서 사용할 수 있도록 공통 데이터 플랫폼에 저장한다.
- 다른 Microsoft 및 비 Microsoft 도구를 통합할 수도 있다.
Azure Monitor 中 VM Insight
- VM 및 VMSS의 클라이언트 워크로드 모니터링을 빠르고 쉽도록 한다.
- 실행 중인 프로세스의 데이터와 다른 리소스의 종속성에 대한 데이터를 수집하여 VM과 VMSS의 성능을 모니터링한다.
Azure VM 모니터링
- Azure Monitor에는 두가지 주요 모니터링 기능이있다.
- Azure Monitor 메트릭
- Azure Monitor 로그
Azure Monitor 메트릭
- 미리 정한 간격으로 수집하는 수치
- 시스템의 일부 측면을 설명해 준다.
- VM 성능, 리소스 사용률, 오류 수, 사용자 응답, 시스템에서 정령화할 수 있는 기타 측면을 측정한다.
- 모든 Azure VM에 대해 미리 정의한 메트릭 집합을 자동으로 모니터링한다.
- 일부 예외를 제외하고 93일 동안 데이터를 유지한다.
Azure Monitor 로그
- 기록되는 시스템 이벤트
- 타임스탬프와 구조적 또는 자유 양식의 다양한 형식의 데이터를 포함한다.
- 모든 Azure 리소스에 대해 활동 로그를 자동으로 기록한다.
- 이 데이터는 리소스 수준에서 사용 가능하다.
- Azure Monitor는 기본적으로 로그를 수집하지 않지만, 아무 Azure 리소스나 로그를 수집하도록 Azure Monitor 로그를 구성할 수 있다.
- 쿼리와 분석을 위해 Log Analytics 작업 영역에 로그 데이터를 저장한다.
VM 호스트 모니터링
- VM 호스트는 Azure가 VM에 할당하는 컴퓨팅, 스토리지 및 네트워크 리소스를 의미한다.
VM 호스트 메트릭
- 프로세서 사용률 및 컴퓨터가 실행 중인지 여부와 같은 VM의 기술적 측면을 측정
- VM이 디스크 또는 CPU 제한에 도달할 때 경고를 트리거한다.
- 패턴등을 식별한다.
- 사용량 및 수요에 따라 VM 크기를 조정하여 운영 비용을 조절한다.
- Azure는 VM 호스트에 대한 기본 메트릭을 자동으로 수집한다.
- 기본 제공 그래프
- [ VM 가용성, CPU 사용률(평균), OS 디스크 사용량(합계), 네트워크 작업(합계), 초당 디스크 작업 수(평균) ]
- [ VM 가용성, CPU 사용률(평균), OS 디스크 사용량(합계), 네트워크 작업(합계), 초당 디스크 작업 수(평균) ]
Azure Monitor 메트릭 탐색기
- VM에 대해 더 많은 메트릭 그래프를 그리고, 변경을 조사하고, 메트릭 추세의 상관관계를 시각적으로 보여줄 수 있다.
- 그래프에 여러 메트릭을 그려 VM에 도달하는 트래픽 양과 VM 성능을 확인한다.
- 리소스 그룹 또는 다른 범위에서 여러 VM에 대해 동일한 메트릭을 추적하고, 분할을 사용하여 그래프에 각 VM 표시한다.
- 유연한 시간 범위 및 정도를 선택할 수 있다.
- 차트 종류 및 값 범위와 같은 여러 다른 설정을 지정할 수 있다.
- 그래프를 통합 문서에 보내거나 대시보드에 고정하여 상태와 성능을 빠르게 확인할 수 있다.
- 시간 간격, 지리적 지역, 서버 클러스터 또는 애플리케이션 구성 요소별로 메트릭을 그룹화 할 수 있다.
권장 경고 규칙
- VM 호스트 메트릭에서 지정한 발생 및 패턴을 사전에 알린다.
- 주로 모니터링하는 호스트 메트릭을 기반으로 미리 정의한 경고 규칙 집합이다.
- 경고할 권장 CPU, 메모리, 디스크, 네트워크 사용 수준을 정의할 뿐 아니라 VM 실행을 중지해야 할 때를 경고하는 VM 가용성을 정의한다.
- Azure Monitor 경고를 사용하여 사용자 지정 경고를 보고, 구성하고, 만들 수 있다.
활동 로그
- VM에 대한 활동 로그를 자동으로 기록하고 표시한다.
- VM 시작 또는 수정과 같은 정보가 포함된다.
부트 진단
- VM의 부팅 문제를 해결하는데 사용되는 호스트 로그이다.
- 부팅 진단 사용시 VM의 하이퍼바이저에서 스크린샷을 볼 수 있다.
- 관리되는 스토리지 계정에 데이터를 저장한다.
게스트 OS, 클라이언트 워크로드, 애플리케이션 모니터링
- VM에서 실행되는 OS, 워크로드 및 애플리케이션 모니터링이 포함될 수 있다.
- 게스트 OS, 클라이언트 워크로드 및 애플리케이션에서 메트릭과 로그를 수집하려면 Azure Monitor 에이전트를 설치하고 DCR(데이터 수집 규칙)을 설정해야 함.
- DCR은 수집할 데이터와 해당 데이터를 보낼 위치를 정의한다.
- DCR을 사용하여 Azure Monitor 메트릭 데이터 또는 성능 카운터를 Azure Monitor 로그 또는 Azure Monitor 메트릭으로 보낼 수 있다.
- Azure Monitor 메트릭은 메트릭 데이터만 저장할 수 있지만 Azure Monitor 로그는 메트릭과 이벤트 로그를 모두 저장할 수 있다.
VM Insight
- VM 클라이언트 모니터링을 시작하는데 도움이 되는 Azure Monitor 기능이다.
경고 규칙
- 데이터를 모니터링하고 지정된 리소스에서 발생하는 신호를 캡처한다.
- 캡처한 신호에 대해 설정한 조건을 충족하는지를 확인한다.
- 조건을 충족할 경우 경고가 트리거된다.
- 경고는 연결된 작업 그룹을 시작시키고 경고의 상태를 업데이트한다.
- 둘 이상의 리소스를 모니터링하는 경우, 경고 규칙 조건은 각 리소스에 대해 개별적으로 평가되고, 경고는 각 리소스에 대해 개별적으로 발생한다.
- 경고는 30일 동안 저장되며 30일 보존 기간이 지나면 삭제된다.
경고 구성
- 작업 그룹: 알림을 트리거하여 사용자에게 경고가 트리거되었음을 알리거나 자동화된 워크플로를 시작할 수 있다.
- 알림 방법
- Email: 알림을 이메일로 보낸다.
- SNS: 알림을 문자 메시지로 보낸다.
- Push notifications: 알림을 모바일 앱을 통해 보낸다.
- Automation runbooks: 특정 작업을 자동으로 수행하는 스크립트. 예를 들어, 서버를 재부팅하거나 로그 파일을 정리하는 작업을 자동화할 수 있다.
- Azure functions: 이벤트에 반응하여 코드를 실행하는 서버리스 컴퓨팅 서비스다. 예를 들어, 특정 조건이 충족되면 데이터를 처리하거나 알림을 보낼 수 있다.
- ITSM incidents: IT 서비스 관리(ITSM) 시스템에서 인시던트를 생성하여 문제를 추적하고 해결하는 데 도움을 준다.
- Logic apps: 워크플로우를 자동화하는 서비스로, 다양한 서비스와 애플리케이션을 연결하여 복잡한 작업을 자동화할 수 있다.
- Secure webhooks: 보안이 강화된 웹훅으로, 특정 이벤트가 발생할 때 외부 서비스에 HTTP 요청을 보낸다.
- Webhooks: 특정 이벤트가 발생할 때 외부 서비스에 HTTP 요청을 보낸다. 예를 들어, 새로운 데이터가 추가되면 이를 다른 시스템에 알릴 수 있다.
- Event hubs: 대량의 데이터를 수집하고 처리하는 스트리밍 플랫폼이다. 예를 들어, IoT 장치에서 데이터를 수집하여 실시간 분석을 수행할 수 있다.
- 알림 방법
- 경고 조건: 시스템에 의해 설정된다. 경고 발생시 경고 조건이 발생으로 설정된다. 경고 발생의 원인이 된 기본 조건이 지워지면 경고 조건이 해결됨으로 설정됨.
- 사용자 응답: 응답은 사용자가 설정하며 사용자가 변경할 때까지 변경되지 않는다. New, Acknowledged, Closed가 있다.
- 경고 처리 규칙: 트리거된 경고가 발생할 때 수정할 수 있다.
경고 유형
- 메트릭 경고: 리소스 메트릭을 정기적으로 평가하여 조건이 충족되면 경고를 발생시킨다.
- 로그 검색 경고: Log Analytics 쿼리를 사용하여 리소스 로그를 평가하고 조건이 충족되면 경고를 발생시킨다.
- 활동 로그 경고: 특정 이벤트가 발생할 때 경고를 발생시킨니다.
- Service Health 경고: Azure 서비스의 상태에 문제가 있을 때 경고를 발생시킨다.
- Resource Health 경고: 특정 리소스의 상태에 문제가 있을 때 경고를 발생시킨다.
- 스마트 감지 경고: 웹 애플리케이션의 성능 문제나 오류를 자동으로 감지하여 경고를 발생시킨다.
- Prometheus 경고: Prometheus 메트릭에 대한 경고를 발생시킨다.
실습
1. VM에서 웹 서버 구축
Azure Portal에서 VM 생성 및 IIS 설치 후 웹 서버를 구축하였다.
2. VM Insight 활성화
왼쪽의 '모니터'로 이동 후 인사이트 항목 중 Virtual Machines를 클릭, VM Insight를 활성화 시킨다. VM Insight를 활성화 시킴으로써 VM의 성능 데이터를 수집할 수 있다.
활성화 시킨 후, 해당 가상 머신 항목으로 진입하여 '확장 프로그램 + 애플리케이션'을 선택하고 'AzureMonitorAgent'가 존재하는지 확인한다. 존재하지 않는다면 추가한다.
3. 데이터 수집 엔드포인트 생성
4. 데이터 수집 규칙 생성
데이터 수집 규칙을 생성한다.
엔드포인트 ID는 3번에서 생성한 데이터 수집 엔드포인트로 지정한다.
모니터링 할 웹 서버 VM으로 지정한다.
5. Log Analytics 작업 영역 생성
6. 모니터링
'모니터'로 이동 후 'Virtual Machines'를 클릭, 리소스 그룹을 선택한다.
위의 이미지는 웹 서버 VM의 모니터링 된 정보이다.
7. 경고 규칙 만들기
모니터링할 주요 매트릭을 정의하고, 특정 조건이 충족될 때 알림을 받을 수 있도록 경고를 설정한다.
ex) CPU 사용량이 일정 수준을 초과할 때 알림을 받을 수 있다.
특이사항 발생 시 알림을 받기 위해 경고 규칙을 만든다.
쉽게 알림을 발생 시키기 위해 위와 같이 규칙을 구성하였다.
메일로 알림을 받아보기 위해 작업 그룹을 지정해준다.
경고 규칙을 만들면 위와 같이 확인 메일을 받아볼 수 있다.
8. 생성한 매트릭을 대시보드에 고정
생성한 매트릭을 대시보드에 고정하여 모니터링 데이터를 시각적으로 확인할 수 있다. 다양한 차트와 그래프를 추가하여 실시간으로 VM의 상태를 모니터링할 수 있다.
9. 스트레스 테스트
모니터링 환경을 구축하였으므로, 웹 서버 VM에 스트레스 테스트를 진행한다. 아래의 코드는 CPU에 부하를 주는 테스트 코드이다. 1..1000000 부분에 원하는 숫자를 기입 하여 작업의 갯수를 지정할 수 있다.
$cpuLoad = {
$sw = [Diagnostics.Stopwatch]::StartNew()
while (sw.Elapsed.TotalSeconds -lt 60) {
[Math]::Sqrt(12345) > $null
}
}
1..1000000 | ForEach-Object { Start-Job -ScriptBlock $cpuLoad }
10. 경고 발생 확인
Azure Portal에서 '모니터'항목에 들어가 경고 항목을 확인할 수 있다. 경고 발생시 값과 임계값 등을 확인할 수 있다.
또한, 경고 발생시 메일로 알림을 보내도록 설정했기에 메일을 통해서도 경고 알림을 받아볼 수 있다. 규칙 ID, 리소스 ID, 메트릭 이름 등의 정보를 확인할 수 있다.
추가로, 스트레스 테스트의 기록을 확인할 수 있다.