장치를 연결하는 Azure IoT 허브가 있습니다. 허브에 연결하고 연결을 끊는 장치를 모니터링하도록 모니터링 할 수있게하려고합니다.Azure IoT 허브 작동 모니터링
내 여잔 허브에 대한 모니터링 범주에 연결에 대한 자세한 정보를 설정 한 :
내 장치
내 허브에 연결하고 쇼 그런 다음 작업 모니터링에서 Azure SQL 데이터베이스로 데이터를 기록하도록 Azure 기능을 설정했습니다.
using System;
using System.Configuration;
using System.Data.SqlClient;
using Newtonsoft.Json;
public static void Run(string myEventHubMessage, TraceWriter log)
{
log.Info(myEventHubMessage);
try
{
var connectionString = ConfigurationManager.ConnectionStrings["iotAzureSQLDb"].ConnectionString;
log.Info(connectionString);
var message = JsonConvert.DeserializeObject<MonitoringMessage>(myEventHubMessage);
using (var connection = new SqlConnection(connectionString))
{
var sqlStatement = "insert into [dbo].[DeviceStatuses] " +
"(DeviceId, ConnectionStatus, ConnectionUpdateTime)" +
"values " +
"(@DeviceId, @ConnectionStatus, @ConnectionUpdateTime)";
using (var dataCommand = new SqlCommand(sqlStatement, connection))
{
dataCommand.Parameters.AddWithValue("@ConnectionStatus", message.operationName);
dataCommand.Parameters.AddWithValue("@DeviceId", message.deviceId);
dataCommand.Parameters.AddWithValue("@ConnectionUpdateTime", message.time);
connection.Open();
dataCommand.ExecuteNonQuery();
connection.Close();
log.Info($"Device {message.deviceId} changed state: {message.operationName}");
}
}
}
catch (Exception ex)
{
log.Info(ex.Message);
}
}
public class MonitoringMessage
{
public string deviceId { get; set; }
public string operationName { get; set; }
public int? durationMs { get; set; }
public string authType { get; set; }
public string protocol { get; set; }
public DateTimeOffset? time { get; set; }
public string category { get; set; }
public string level { get; set; }
public int? statusCode { get; set; }
public int? statusType { get; set; }
public string statusDescription { get; set; }
}
Operations Monitoring에서 장치 ID 작업을 사용하도록 설정하면 만들기 이벤트가 기록됩니다. 그래서 함수에 대한 입력이 정확하다고 확신합니다. 그러나, 아무것도 연결을 위해 이제까지 창조된다?
연결된 장치로 메시지를 보낼 수도 있습니다. 연결/연결 해제 이벤트가 표시되지 않습니다.
또한 스트림 애널리틱스를 만들고 연결/연결 해제가 있고 아무 것도 발견되지 않는 기간 동안 입력을 샘플링했습니다.
[iothub-explorer 도구를 사용하여 연결/연결 해제 이벤트를 캡처 할 수 있습니까] (https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-operations-monitoring#view-events))? –
그게 제가 대안을 사용하고있는 문제입니다. 연결/연결 해제를 위해 매 x 분마다 폴링해야합니다.반면 IoT 모니터링이 제대로 작동하면 장치가 분리 될 때 이벤트가 수신됩니다. – Stuart