Azure IoT Hub 모니터링
이 문서에서는 다음을 설명합니다.
- 이 서비스에 대해 수집할 수 있는 모니터링 데이터의 유형.
- 해당 데이터를 분석하는 방법.
참고 항목
이 서비스 및/또는 Azure Monitor에 이미 익숙하고 모니터링 데이터를 분석하는 방법만 알고 싶은 경우 이 문서의 끝부분에 있는 분석 섹션을 참조하세요.
Azure 리소스를 사용하는 중요한 애플리케이션 및 비즈니스 프로세스가 있는 경우 시스템을 모니터링하고 시스템에 대한 경고를 받아야 합니다. Azure Monitor 서비스는 시스템의 모든 구성 요소에서 메트릭과 로그를 수집하고 집계합니다. Azure Monitor는 가용성, 성능, 복원력에 대한 보기를 제공하고 문제를 알려 줍니다. Azure Portal, PowerShell, Azure CLI, REST API 또는 클라이언트 라이브러리를 사용하여 모니터링 데이터를 설정하고 볼 수 있습니다.
- Azure Monitor에 대한 자세한 내용은 Azure Monitor 개요를 참조하세요.
- Azure 리소스를 전반적으로 모니터링하는 방법에 대한 자세한 내용은 Azure Monitor를 사용하여 Azure 리소스 모니터링을 참조하세요.
Event Grid와 디바이스 당 모니터의 연결 끊김
Azure Monitor는 IoT Hub에 연결된 디바이스 수를 모니터링하는 데 사용할 수 있는 연결된 디바이스라는 메트릭을 제공합니다. 이 메트릭은 연결된 디바이스 수가 임계값 아래로 떨어지면 경고를 트리거합니다. 또한 Azure Monitor는 디바이스 연결, 연결 끊기 및 연결 오류를 모니터링하는 데 사용할 수 있는 연결 범주 의 이벤트를 내보냅니다. 일부 시나리오에서는 이러한 이벤트로 충분할 수도 있지만, Azure Event Grid는 낮은 대기 시간으로 중요한 디바이스 및 인프라에 대한 디바이스 연결을 추적하는 데 사용할 수 있는 디바이스 단위 모니터링 솔루션을 제공합니다.
Event Grid를 사용하면 IoT Hub DeviceConnected 및 DeviceDisconnected 이벤트를 구독하여 경고를 트리거하고 디바이스 연결 상태를 모니터링할 수 있습니다. Event Grid는 Azure Monitor보다 훨씬 짧은 이벤트 대기 시간을 제공하므로, 연결된 모든 디바이스가 아니라 각 디바이스별로 모니터링할 수 있습니다. 해당 요소들은 중요한 디바이스 및 인프라에 대한 연결을 모니터링하는 메서드로 Event Grid를 선호하게 만듭니다. 프로덕션 환경에서 디바이스 연결을 모니터링하려면 Event Grid를 사용하는 것이 좋습니다.
Event Grid 및 Azure Monitor를 사용하여 디바이스 연결을 모니터링하는 방법에 대한 자세한 내용은 Monitor, diagnose, and troubleshoot device connectivity to Azure IoT Hub(Azure IoT Hub에 대한 디바이스 연결 모니터링, 진단 및 문제 해결)를 참조하세요.
리소스 유형
Azure는 리소스 유형 및 ID의 개념을 사용하여 구독의 모든 항목을 식별합니다. 리소스 유형은 Azure에서 실행되는 모든 리소스에 대한 리소스 ID의 일부이기도 합니다. 예를 들어 가상 머신의 리소스 유형 중 하나는 Microsoft.Compute/virtualMachines
입니다. 서비스 및 관련 리소스 유형 목록은 리소스 공급자를 참조하세요.
마찬가지로 Azure Monitor는 네임스페이스라고도 하는 리소스 유형에 따라 핵심 모니터링 데이터를 메트릭 및 로그로 구성합니다. 리소스 유형에 따라 다른 메트릭 및 로그를 사용할 수 있습니다. 서비스는 둘 이상의 리소스 유형과 연결될 수 있습니다.
IoT Hub의 리소스 종류에 대한 자세한 내용은 Azure IoT Hub 모니터링 데이터 참조를 참조하세요.
데이터 저장소
Azure Monitor의 경우:
- 메트릭 데이터는 Azure Monitor 메트릭 데이터베이스에 저장됩니다.
- 로그 데이터는 Azure Monitor 로그 저장소에 저장됩니다. 로그 분석은 이 저장소를 쿼리할 수 있는 Azure Portal의 도구입니다.
- Azure 활동 로그는 Azure Portal에 자체 인터페이스가 있는 별도의 저장소입니다.
선택적으로 메트릭 및 활동 로그 데이터를 Azure Monitor 로그 저장소로 라우팅할 수 있습니다. 그런 다음 Log Analytics를 사용하여 데이터를 쿼리하고 다른 로그 데이터와 상호 연결할 수 있습니다.
많은 서비스에서는 진단 설정을 사용하여 메트릭 및 로그 데이터를 Azure Monitor 외부의 다른 스토리지 위치로 보낼 수 있습니다. 예를 들면 Azure Storage, 호스트된 파트너 시스템 및 Event Hubs를 사용하는 비 Azuree 파트너 시스템이 있습니다.
Azure Monitor가 데이터를 저장하는 방법에 대한 자세한 내용은 Azure Monitor 데이터 플랫폼을 참조하세요.
수집 및 라우팅
플랫폼 메트릭, 활동 로그 및 리소스 로그에는 고유한 컬렉션, 스토리지 및 라우팅 사양이 있습니다.
Azure Portal에서 IoT Hub의 모니터링에서 진단 설정을 선택한 다음, 진단 설정 추가를 선택하여 IoT Hub에서 내보낸 로그 및 플랫폼 메트릭으로 범위가 지정된 진단 설정을 만들 수 있습니다.
다음 스크린샷은 리소스 로그 형식 연결 작업 및 모든 플랫폼 메트릭을 Log Analytics 작업 영역으로 라우팅하는 진단 설정을 보여 줍니다.
IoT Hub 플랫폼 메트릭을 다른 위치로 라우팅하는 경우 다음에 유의하세요.
이러한 플랫폼 메트릭은 진단 설정인 연결된 디바이스 및 총 디바이스를 사용하여 내보낼 수 없습니다.
다차원 메트릭(예: 일부 라우팅 메트릭)은 현재 차원 값에서 집계된 평면화된 단일 차원 메트릭으로 내보내게 됩니다. 세부 정보는 플랫폼 메트릭을 다른 위치로 내보내기를 참조하세요.
Azure Monitor 플랫폼 메트릭
Azure Monitor는 대부분의 서비스에 대한 플랫폼 메트릭을 제공합니다. 이러한 메트릭은 다음과 같습니다.
- 각 네임스페이스에 대해 개별적으로 정의됩니다.
- Azure Monitor 시계열 메트릭 데이터베이스에 저장됩니다.
- 간단하며 실시간에 가까운 경고를 지원할 수 있습니다.
- 시간 경과에 따른 리소스의 성능을 추적하는 데 사용됩니다.
수집: Azure Monitor는 플랫폼 메트릭을 자동으로 수집합니다. 구성이 필요하지 않습니다.
라우팅: 일반적으로 플랫폼 메트릭을 Azure Monitor 로그/Log Analytics로 라우팅하여 다른 로그 데이터로 쿼리할 수도 있습니다. 자세한 내용은 메트릭 진단 설정을 참조하세요. 서비스에 대한 진단 설정을 구성하는 방법은 Azure Monitor에서 진단 설정 만들기를 참조하세요.
Azure Monitor의 모든 리소스에 대해 수집할 수 있는 모든 메트릭 목록은 Azure Monitor에서 지원되는 메트릭을 참조하세요.
모니터 개요
각 IoT Hub에 대한 Azure Portal의 개요 페이지에는 사용되는 메시지 및 IoT Hub에 연결된 디바이스 수와 같은 일부 사용 현황 메트릭을 제공하는 차트가 포함되어 있습니다.
올바른 메시지 수 값이 1분 지연될 수 있습니다. IoT Hub 서비스 인프라로 인해 새로 고치게 되면 값이 더 높거나 낮은 값 사이를 바운스하는 경우가 있습니다. 해당 카운터는 최종 1분 간의 계산 값에 대해서만 부정확해야 합니다.
개요 창에 표시되는 정보는 유용하지만 IoT Hub에 사용할 수 있는 적은 양의 모니터링 데이터만 표시합니다. 이 모니터링 데이터 중 일부는 자동으로 수집되며, IoT Hub를 만드는 즉시 분석에 사용할 수 있습니다. 일부 구성으로 다른 형식의 데이터 수집을 사용하도록 설정할 수 있습니다.
Important
Azure Monitor 리소스 로그를 사용하여 IoT Hub 서비스에서 내보내는 이벤트는 안정 또는 정렬이 보장되지 않습니다. 일부 이벤트는 손실되거나 순서 없이 제공될 수 있습니다. 리소스 로그는 실시간으로 제공되지 않으므로, 사용자가 선택한 대상에 이벤트를 기록하기까지 몇 분 정도 걸릴 수 있습니다.
Azure Monitor 리소스 로그
리소스 로그는 Azure 리소스에서 수행한 작업에 대한 인사이트를 제공합니다. 로그는 자동으로 생성되지만 저장하거나 쿼리하려면 로그를 Azure Monitor 로그로 라우팅해야 합니다. 로그는 범주별로 구성됩니다. 지정된 네임스페이스에는 여러 리소스 로그 범주가 있을 수 있습니다.
수집: 리소스 로그는 진단 설정을 만들고 하나 이상의 위치로 라우팅할 때까지 수집 및 저장되지 않습니다. 진단 설정을 만들 때 수집할 로그 범주를 지정합니다. 진단 설정을 만들고 유지 관리하는 방법에는 Azure Portal, 프로그래밍 방식, Azure Policy 사용 등을 포함한 여러 가지 방법이 있습니다.
라우팅: 제안되는 기본값은 리소스 로그를 Azure Monitor 로그로 라우팅하여 다른 로그 데이터로 쿼리할 수 있도록 하는 것입니다. Azure Storage, Azure Event Hubs, 특정 Microsoft 모니터링 파트너와 같은 다른 위치도 사용할 수 있습니다. 자세한 내용은 Azure 리소스 로그 및 리소스 로그 대상을 참조하세요.
리소스 로그 수집, 저장 및 라우팅에 대한 자세한 내용은 Azure Monitor의 진단 설정을 참조하세요.
Azure Monitor에서 사용 가능한 모든 리소스 로그 범주 목록은 Azure Monitor에서 지원되는 리소스 로그를 참조하세요.
Azure Monitor의 모든 리소스 로그에는 동일한 헤더 필드와 서비스별 필드가 있습니다. 공용 스키마는 Azure Monitor 리소스 로그 스키마에서 설명합니다.
연결 이벤트를 로그로 라우팅
IoT hub는 몇 가지 작업 범주에 대한 리소스 로그를 지속적으로 내보냅니다. 그러나 이 로그 데이터를 수집하려면 분석하거나 보관할 수 있는 대상으로 라우팅하는 진단 설정을 만들어야 합니다. 이러한 대상 중 하나는 Log Analytics 작업 영역을 통한 Azure Monitor 로그(가격 책정 참조)이며, Kusto 쿼리를 사용하여 데이터를 분석할 수 있습니다.
IoT Hub 리소스 로그 연결 범주는 디바이스 연결과 관련된 작업 및 오류를 내보냅니다. 다음 스크린샷은 이러한 로그를 Log Analytics 작업 영역으로 라우팅하는 진단 설정을 보여 줍니다.
IoT hub를 만든 후에는 가능한 한 빨리 진단 설정을 만드는 것이 좋습니다. IoT Hub는 항상 리소스 로그를 내보내지만 Azure Monitor는 이러한 로그를 대상으로 라우팅할 때까지 로그 데이터를 수집하지 않기 때문입니다.
로그를 대상으로 라우팅하는 방법에 대한 자세한 내용은 컬렉션 및 라우팅을 참조하세요. 진단 설정을 만드는 방법에 대한 자세한 내용은 메트릭 및 로그 사용 자습서를 참조하세요.
Azure 활동 로그
활동 로그에는 해당 리소스의 외부에서 볼 때 각 Azure 리소스에 대한 작업을 추적하는 구독 수준 이벤트(예: 새 리소스 만들기 또는 가상 머신 시작)가 포함되어 있습니다.
수집: 활동 로그 이벤트는 자동으로 생성되고 별도의 저장소에 수집되어 Azure Portal에서 볼 수 있습니다.
라우팅: 다른 로그 데이터와 함께 분석할 수 있도록 활동 로그 데이터를 Azure Monitor 로그로 보낼 수 있습니다. Azure Storage, Azure Event Hubs, 특정 Microsoft 모니터링 파트너와 같은 다른 위치도 사용할 수 있습니다. 활동 로그를 라우팅하는 방법에 대한 자세한 내용은 Azure 활동 로그 개요를 참조하세요.
로그 분석
Azure Monitor Logs의 데이터는 테이블마다 고유한 자체 속성 집합이 있는 테이블에 저장됩니다. 해당 테이블의 데이터는 Log Analytics 작업 영역과 연결되며 Log Analytics에서 쿼리할 수 있습니다. Azure Monitor 로그에 대한 자세한 정보는 Azure Monitor 설명서의 Azure Monitor 로그 개요를 참조하세요.
Azure Monitor 로그에 데이터를 라우팅하려면 Log Analytics 작업 영역에 리소스 로그 또는 플랫폼 메트릭을 전송하는 진단 설정을 만들어야 합니다. 자세한 정보는 수집 및 라우팅을 참조하세요.
Log Analytics를 수행하려면 Azure Portal로 이동하여 IoT Hub를 연 다음, 모니터링에서 로그를 선택합니다. 이러한 Log Analytics 쿼리는 기본적으로 IoT Hub에 대해 Azure Monitor 로그에서 수집된 로그 및 메트릭으로 범위가 지정됩니다.
IoT Hub 플랫폼 메트릭을 Azure Monitor 로그에 라우팅하는 경우 다음에 유의하세요.
다음 플랫폼 메트릭은 진단 설정인 연결된 디바이스 및 총 디바이스를 사용하여 내보낼 수 없습니다.
다차원 메트릭(예: 일부 라우팅 메트릭)은 현재 차원 값에서 집계된 평면화된 단일 차원 메트릭으로 내보내게 됩니다. 세부 정보는 플랫폼 메트릭을 다른 위치로 내보내기를 참조하세요.
IoT Hub의 일반적인 쿼리는 샘플 Kusto 쿼리를 참조하세요. Log Analytics 쿼리 사용에 대한 자세한 내용은 Azure Monitor의 로그 쿼리 개요를 참조하세요.
IoT Hub 로그의 SDK 버전
일부 작업은 IoT Hub 리소스 로그에 대해 properties
개체의 sdkVersion
속성을 반환합니다. 해당 작업의 경우 디바이스 또는 백 엔드 앱이 Azure IoT SDK 중 하나를 사용할 때 해당 속성은 사용되는 SDK, SDK 버전 및 SDK가 실행되는 플랫폼에 대한 정보를 포함합니다.
다음 예제에서는 다음을 사용하여 deviceConnect
작업에 대해 내보낸 sdkVersion
속성을 보여 줍니다.
- Node.js 디바이스 SDK:
"azure-iot-device/1.17.1 (node v10.16.0; Windows_NT 10.0.18363; x64)"
- .NET(C#) SDK:
".NET/1.21.2 (.NET Framework 4.8.4200.0; Microsoft Windows 10.0.17763 WindowsProduct:0x00000004; X86)"
.
다음 표는 다양한 Azure IoT SDK에 사용되는 SDK 이름을 보여 줍니다.
sdkVersion 속성의 SDK 이름 | 언어 |
---|---|
.NET | .NET (C#) |
microsoft.azure.devices | .NET(C#) 서비스 SDK |
microsoft.azure.devices.client | .NET(C#) 디바이스 SDK |
iothubclient | C 또는 Python v1(사용 되지 않음) 디바이스 SDK |
iothubserviceclient | C 또는 Python v1(사용 되지 않음) 서비스 SDK |
azure-iot-device-iothub-py | Python 디바이스 SDK |
azure-iot-device | Node.js 디바이스 SDK |
azure-iothub | Node.js 서비스 SDK |
com.microsoft.azure.iothub-java-client | Java 디바이스 SDK |
com.microsoft.azure.iothub.service.sdk | Java 서비스 SDK |
com.microsoft.azure.sdk.iot.iot-device-client | Java 디바이스 SDK |
com.microsoft.azure.sdk.iot.iot-service-client | Java 서비스 SDK |
C | Embedded C |
C +(OSSimplified = Eclipse ThreadX) | Eclipse ThreadX |
IoT Hub 리소스 로그에 대해 쿼리를 수행하는 경우 SDK 버전 속성을 추출할 수 있습니다. 예를 들어, 다음 쿼리는 연결 작업에서 반환된 속성에서 SDK 버전 속성(및 디바이스 ID)를 추출합니다. 이 두 속성은 디바이스가 연결되는 IoT Hub의 작업 시간 및 리소스 ID와 함께 결과에 기록됩니다.
// SDK version of devices
// List of devices and their SDK versions that connect to IoT Hub
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId)
| distinct DeviceId, SDKVersion, TimeGenerated, _ResourceId
Azure Event Hubs의 로그 읽기
진단 설정을 통해 이벤트 로깅을 설정한 후에는 로그의 정보를 기반으로 조치를 취할 수 있도록 로그를 읽는 애플리케이션을 만들 수 있습니다. 다음 샘플 코드는 이벤트 허브에서 로그를 검색합니다.
class Program
{
static string connectionString = "{your AMS eventhub endpoint connection string}";
static string monitoringEndpointName = "{your AMS event hub endpoint name}";
static EventHubClient eventHubClient;
//This is the Diagnostic Settings schema
class AzureMonitorDiagnosticLog
{
string time { get; set; }
string resourceId { get; set; }
string operationName { get; set; }
string category { get; set; }
string level { get; set; }
string resultType { get; set; }
string resultDescription { get; set; }
string durationMs { get; set; }
string callerIpAddress { get; set; }
string correlationId { get; set; }
string identity { get; set; }
string location { get; set; }
Dictionary<string, string> properties { get; set; }
};
static void Main(string[] args)
{
Console.WriteLine("Monitoring. Press Enter key to exit.\n");
eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, monitoringEndpointName);
var d2cPartitions = eventHubClient.GetRuntimeInformationAsync().PartitionIds;
CancellationTokenSource cts = new CancellationTokenSource();
var tasks = new List<Task>();
foreach (string partition in d2cPartitions)
{
tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
}
Console.ReadLine();
Console.WriteLine("Exiting...");
cts.Cancel();
Task.WaitAll(tasks.ToArray());
}
private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)
{
var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
while (true)
{
if (ct.IsCancellationRequested)
{
await eventHubReceiver.CloseAsync();
break;
}
EventData eventData = await eventHubReceiver.ReceiveAsync(new TimeSpan(0,0,10));
if (eventData != null)
{
string data = Encoding.UTF8.GetString(eventData.GetBytes());
Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data);
var deserializer = new JavaScriptSerializer();
//deserialize json data to azure monitor object
AzureMonitorDiagnosticLog message = new JavaScriptSerializer().Deserialize<AzureMonitorDiagnosticLog>(result);
}
}
}
}
사용 가능한 리소스 로그 범주, 관련 Log Analytics 테이블 및 IoT Hub의 로그 스키마는 Azure IoT Hub 모니터링 데이터 참조를 참조하세요.
모니터링 데이터 분석
모니터링 데이터를 분석하기 위한 많은 도구가 있습니다.
Azure Monitor 도구
Azure Monitor는 다음과 같은 기본 도구를 지원합니다.
메트릭 탐색기: Azure 리소스에 대한 메트릭을 보고 분석할 수 있는 Azure Portal의 도구입니다. 자세한 내용은 Azure Monitor 메트릭 탐색기로 메트릭 분석을 참조하세요.
로그 분석: KQL(Kusto 쿼리 언어)을 사용하여 로그 데이터를 쿼리하고 분석할 수 있는 Azure Portal의 도구입니다. 자세한 내용은 Azure Monitor에서 로그 쿼리 시작을 참조하세요.
활동 로그: 보기 및 기본 검색을 위해 Azure Portal에 사용자 인터페이스를 갖고 있습니다. 더욱 심층적인 분석을 수행하려면 데이터를 Azure Monitor 로그로 라우팅하고 로그 분석에서 더 복잡한 쿼리를 실행해야 합니다.
더 복잡한 시각화를 허용하는 도구는 다음과 같습니다.
- 대시보드: 다양한 종류의 데이터를 Azure Portal에서 하나의 창에 결합할 수 있습니다.
- 통합 문서: Azure Portal에서 만들 수 있는 사용자 지정 가능한 보고서입니다. 통합 문서에는 텍스트, 메트릭, 로그 쿼리가 포함될 수 있습니다.
- Grafana: 뛰어난 운영 대시보드를 제공하는 개방형 플랫폼 도구입니다. Grafana를 사용하여 Azure Monitor 외의 여러 소스에서 온 데이터를 포함하는 대시보드를 만들 수 있습니다.
- Power BI: 다양한 데이터 소스에서 대화형 시각화를 제공하는 비즈니스 분석 서비스입니다. Azure Monitor에서 자동으로 로그 데이터를 가져오도록 Power BI를 구성하여 이러한 시각화를 활용할 수 있습니다.
Azure Monitor 내보내기 도구
다음 방법을 사용하여 Azure Monitor에서 다른 도구로 데이터를 내보낼 수 있습니다.
메트릭: 메트릭용 REST API를 사용하여 Azure Monitor 메트릭 데이터베이스에서 메트릭 데이터를 추출합니다. API는 검색된 데이터를 구체화하는 필터 식을 지원합니다. 자세한 내용은 Azure REST API 참조를 참조하세요.
로그: REST API 또는 연결된 클라이언트 라이브러리를 사용합니다.
또 다른 옵션은 작업 영역 데이터 내보내기입니다.
Azure Monitor용 REST API를 시작하려면 Azure 모니터링 REST API 연습을 참조하세요.
Kusto 쿼리
KQL(Kusto 쿼리 언어)을 사용하여 Azure Monitor 로그/로그 분석 저장소에서 모니터링 데이터를 분석할 수 있습니다.
Important
포털의 서비스 메뉴에서 로그를 선택하면 쿼리 범위가 현재 서비스로 설정된 상태로 로그 분석이 열립니다. 이 범위는 로그 쿼리에 해당 유형의 리소스의 데이터만 포함된다는 의미입니다. 다른 Azure 서비스의 데이터를 포함하는 쿼리를 실행하려면 Azure Monitor 메뉴에서 로그를 선택합니다. 자세한 내용은 Azure Monitor Log Analytics의 로그 쿼리 범위 및 시간 범위를 참조하세요.
모든 서비스에 대한 일반적인 쿼리 목록은 로그 분석 쿼리 인터페이스를 참조하세요.
다음 Kusto 쿼리를 사용하여 IoT Hub를 모니터링할 수 있습니다.
연결 오류: 디바이스 연결 오류 식별하기
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Category == "Connections" and Level == "Error"
제한 오류: 제한 오류를 발생시키는 요청을 가장 많이 한 디바이스 식별하기
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where ResultType == "429001" | extend DeviceId = tostring(parse_json(properties_s).deviceId) | summarize count() by DeviceId, Category, _ResourceId | order by count_ desc
중지된 엔드포인트: 문제가 보고된 횟수에 따라 중지된 또는 비정상 엔드포인트를 식별하고 원인 파악하기.
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Category == "Routes" and OperationName in ("endpointDead", "endpointUnhealthy") | extend parsed_json = parse_json(properties_s) | extend Endpoint = tostring(parsed_json.endpointName), Reason = tostring(parsed_json.details) | summarize count() by Endpoint, OperationName, Reason, _ResourceId | order by count_ desc
오류 요약: 모든 작업에서 발생한 형식별 오류의 수
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Level == "Error" | summarize count() by ResultType, ResultDescription, Category, _ResourceId
최근에 연결된 디바이스: IoT Hub 에서 지정된 기간 동안 연결한 디바이스 목록
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Category == "Connections" and OperationName == "deviceConnect" | extend DeviceId = tostring(parse_json(properties_s).deviceId) | summarize max(TimeGenerated) by DeviceId, _ResourceId
특정 디바이스에 대한 연결 이벤트: 특정 디바이스(test-device)에 대해 로그된 모든 연결 이벤트
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Category == "Connections" | extend DeviceId = tostring(parse_json(properties_s).deviceId) | where DeviceId == "test-device"
디바이스의 SDK 버전: 디바이스 연결 또는 디바이스-클라우드 쌍 작업을 위한 디바이스 및 해당 SDK 버전 목록
AzureDiagnostics | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS" | where Category == "Connections" or Category == "D2CTwinOperations" | extend parsed_json = parse_json(properties_s) | extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) | distinct DeviceId, SDKVersion, TimeGenerated, _ResourceId
경고
Azure Monitor 경고는 모니터링 데이터에서 특정한 조건이 발견될 때 사용자에게 사전에 알립니다. 경고를 통해 사용자에게 알리기 전에 시스템 문제를 식별하고 해결할 수 있습니다. 자세한 내용은 Azure Monitor 경고을 참조하세요.
Azure 리소스에 대한 일반적인 경고의 소스에는 여러 가지가 있습니다. Azure 리소스에 대한 일반적인 경고의 예는 샘플 로그 경고 쿼리를 참조하세요. AMBA(Azure Monitor 기준 경고) 사이트는 중요한 플랫폼 메트릭 경고, 대시보드 및 지침을 구현하는 반자동 방법을 제공합니다. 이 사이트는 ALZ(Azure 랜딩 존)의 일부인 전체 서비스를 포함하여 지속적으로 확장되는 Azure 서비스 하위 집합에 적용됩니다.
공통 경고 스키마는 Azure Monitor 경고 알림의 사용을 표준화합니다. 자세한 내용은 일반 경고 스키마를 참조하세요.
경고 유형
Azure Monitor 데이터 플랫폼의 모든 메트릭 또는 로그 데이터 원본에 대해 경고할 수 있습니다. 모니터링하는 서비스 및 수집하는 모니터링 데이터에 따라 다양한 유형의 경고가 있습니다. 서로 다른 형식의 경고에는 다양한 장점과 단점이 있습니다. 자세한 내용은 올바른 모니터링 경고 유형 선택을 참조하세요.
다음 목록에서는 만들 수 있는 Azure Monitor 경고의 유형에 대해 설명합니다.
- 메트릭 경고는 정기적으로 리소스 메트릭을 평가합니다. 메트릭은 플랫폼 메트릭, 사용자 지정 메트릭, 메트릭으로 변환된 Azure Monitor의 로그 또는 Application Insights 메트릭일 수 있습니다. 메트릭 경고는 여러 조건과 동적 임계값을 적용할 수도 있습니다.
- 로그 경고를 사용하면 사용자가 로그 분석 쿼리를 사용하여 미리 정의된 빈도로 리소스 로그를 평가할 수 있습니다.
- 활동 로그 경고는 정의된 조건과 일치하는 새 활동 로그 이벤트가 발생할 때 트리거됩니다. Resource Health 경고 및 Service Health 경고는 서비스 및 Resource Health를 보고하는 활동 로그 경고입니다.
일부 Azure 서비스는 스마트 검색 경고, Prometheus 경고 또는 권장 경고 규칙도 지원합니다.
일부 서비스의 경우 동일한 Azure 지역에 존재하는 동일한 형식의 여러 리소스에 동일한 메트릭 경고 규칙을 적용하여 대규모로 모니터링할 수 있습니다. 모니터링되는 각 리소스에 대해 개별 알림이 전송됩니다. 지원되는 Azure 서비스 및 클라우드에 대한 내용은 하나의 경고 규칙을 사용하여 여러 리소스 모니터링을 참조하세요.
IoT Hub 경고 규칙
IoT Hub 모니터링 데이터 참조에 나열된 메트릭, 로그 항목 또는 활동 로그 항목에 대해 경고를 설정할 수 있습니다.
디바이스 연결 끊김에 대한 메트릭 경고 설정
IoT Hub에서 내보낸 플랫폼 메트릭에 따라 경고를 설정할 수 있습니다. 메트릭 경고를 사용하면 관심 있는 조건이 발생했음을 개인에게 알리고 해당 조건에 자동으로 응답할 수 있는 작업을 트리거할 수도 있습니다.
연결된 디바이스(미리 보기) 메트릭은 IoT Hub에 연결된 디바이스 수를 알려줍니다. 이 메트릭이 임계값 아래로 떨어지면 경고가 트리거될 수 있습니다.
메트릭 경고 규칙을 사용하여 대규모로 디바이스 연결이 끊기는 변칙 상황을 모니터링할 수 있습니다. 즉, 많은 수의 디바이스가 예기치 않게 연결이 끊기는 지를 결정하기 위해 경고를 사용합니다. 이러한 상황이 감지되면, 문제 해결에 도움이 되는 로그를 확인할 수 있습니다. 하지만 디바이스별 연결 끊김 및 중요한 디바이스에 대한 연결 끊김을 근실시간으로 모니터링하려면, Event Grid를 사용해야 합니다.
IoT Hub 경고에 대한 자세한 내용은 모니터 IoT Hub의 경고를 참조하세요. IoT Hub에서 경고를 만드는 연습에 대한 내용은 메트릭 및 로그 사용 자습서를 참조하세요. 경고에 대한 자세한 개요는 Azure Monitor 설명서의 Microsoft Azure 경고 개요를 참조하세요.
Advisor 권장 사항
일부 서비스의 경우 리소스 작업 중에 위험한 상태 또는 임박한 변경 사항이 발생하는 경우 해당 서비스에서 포털의 개요 페이지에 경고가 표시됩니다. 왼쪽 메뉴의 모니터링 아래 Advisor 권장 사항에서 해당 경고에 대한 자세한 정보와 권장 수정 사항을 찾을 수 있습니다. 정상적으로 작동하는 중에는 Advisor 권장 사항이 표시되지 않습니다.
Azure Advisor에 대한 자세한 내용은 Azure Advisor 개요를 참조하세요.
관련 콘텐츠
- IoT Hub에 대해 만든 메트릭, 로그 및 기타 중요한 값에 대해서는 Azure IoT Hub 모니터링 데이터 참조를 확인하세요.
- Azure 리소스 모니터링에 대한 일반적인 내용은 Azure Monitor를 사용하여 Azure 리소스 모니터링을 참조하세요.
- 디바이스 연결 모니터링에 대해서는 Azure IoT Hub에 대한 디바이스 연결 모니터링, 진단 및 문제 해결을 참조하세요.