Azure IoT Hub'ı izleme

Azure kaynaklarına dayanan kritik uygulamalarınız ve iş süreçleriniz olduğunda bu kaynakları kullanılabilirlik, performans ve çalışma açısından izlemek istersiniz. Bu makalede, Azure IoT Hub tarafından oluşturulan izleme verileri ve bu verileri analiz etmek ve bu veriler hakkında uyarı vermek için Azure İzleyici'nin özelliklerini nasıl kullanabileceğiniz açıklanmaktadır.

İzleyiciye genel bakış

Her IoT hub'ının Azure portalındaki Genel Bakış sayfası, kullanılan ileti sayısı ve IoT hub'ına bağlı cihaz sayısı gibi bazı kullanım ölçümleri sağlayan grafikler içerir.

IoT hub'ına Genel Bakış sayfasındaki varsayılan ölçüm grafikleri.

Doğru ileti sayısı değeri 1 dakika gecikebilir. IoT Hub hizmet altyapısı nedeniyle, değer bazen yenilemede daha yüksek ve daha düşük değerler arasında geri dönüş yapabilir. Bu sayaç yalnızca son dakika içinde tahakkuk eden değerler için yanlış olmalıdır.

Genel Bakış bölmesinde sunulan bilgiler yararlıdır, ancak IoT hub'ı için kullanılabilen yalnızca az miktarda izleme verilerini temsil eder. Bazı izleme verileri otomatik olarak toplanır ve IoT hub'ınızı oluşturur oluşturmaz analiz için kullanılabilir. Bazı yapılandırmalarla diğer veri toplama türlerini etkinleştirebilirsiniz.

Azure İzleyici nedir?

Azure IoT Hub, tam yığın izleme hizmeti olan Azure İzleyici'yi kullanarak verileri izler. Azure İzleyici, Azure kaynaklarınızı ve diğer bulut veya şirket içi kaynaklarınızı izleyebilir.

Aşağıdaki kavramları açıklayan Azure İzleyici ile Azure kaynaklarını izleme makalesiyle başlayın:

  • Azure İzleyici nedir?
  • Azure'da toplanan izleme verileri
  • Veri toplamayı yapılandırma
  • Ölçümler ve günlükler
  • Analiz ve içgörüler için Azure'daki standart araçlar
  • Veriler izlenirken tetiklenen uyarılar

Azure IoT Hub tarafından oluşturulan ölçümler ve günlükler hakkında daha fazla bilgi için bkz . Azure IoT Hub veri başvurularını izleme.

Önemli

Azure İzleyici kaynak günlükleri kullanılarak IoT Hub hizmeti tarafından yayılan olayların güvenilir veya sıralı olduğu garanti edilmez. Bazı olaylar kaybolabilir veya sıra dışı teslim edilebilir. Kaynak günlüklerinin gerçek zamanlı olması amaçlanmamıştır, bu nedenle olayların seçtiğiniz hedefte günlüğe kaydedilmesi birkaç dakika sürebilir.

Bu makalenin geri kalanı, Azure IoT Hub için toplanan belirli verileri açıklayarak Azure İzleyici ile Azure kaynaklarını izleme makalesini oluşturur. Veri toplamanızı yapılandırmaya ve Azure araçlarıyla bu verileri analiz etmeye yönelik örnekler göreceksiniz.

Toplama ve yönlendirme

Platform ölçümleri, Etkinlik günlüğü ve kaynak günlükleri benzersiz koleksiyon, depolama ve yönlendirme belirtimlerine sahiptir.

  • Platform ölçümleri ve etkinlik günlüğü otomatik olarak toplanır ve depolanır, ancak bunlar bir tanılama ayarı kullanılarak diğer konumlara yönlendirilebilir.

  • Siz bir tanılama ayarı oluşturmadığınız ve bunları bir veya daha fazla konuma yönlendirmediğiniz sürece kaynak günlükleri toplanmaz ve depolanmaz.

  • Ölçümler ve günlükler birçok konuma yönlendirilebilir:

    • İlişkili bir Log Analytics çalışma alanı aracılığıyla Azure İzleyici Günlük deposu. Burada Log Analytics kullanılarak analiz edilebilirler.
    • Arşivleme ve çevrimdışı analiz için Azure Depolama
    • Üçüncü taraf güvenlik bilgileri ve olay yönetimi (SIEM) araçları gibi dış uygulamalar tarafından okunabilecekleri bir Event Hubs uç noktası.

IoT hub'ınızdaki Azure portalında İzleme'nin altında Tanılama ayarları'nı ve ardından Tanılama ayarı ekle'yi seçerek IoT hub'ınızın yaydığı günlüklere ve platform ölçümlerine göre kapsamlı tanılama ayarları oluşturabilirsiniz.

Azure portalında IoT hub'ınıza tanılama ayarı eklemeyi gösteren ekran görüntüsü.

Aşağıdaki ekran görüntüsünde, kaynak günlüğü türünü Bağlan ion İşlemleri ve tüm platform ölçümlerini Log Analytics çalışma alanına yönlendirmeye yönelik bir tanılama ayarı gösterilmektedir.

IoT hub'ını izlemeye yönelik Tanılama Ayarlar formunun ekran görüntüsü.

Azure portalı, CLI veya PowerShell kullanarak tanılama ayarı oluşturma hakkında daha fazla bilgi için bkz . Azure'da platform günlüklerini ve ölçümlerini toplamak için tanılama ayarı oluşturma. Tanılama ayarı oluşturduğunuzda hangi günlük kategorilerinin toplanacağını belirtirsiniz. Azure IoT Hub kategorileri, İzleme Azure IoT Hub veri başvurusundaki Kaynak günlükleri altında listelenir. Olaylar yalnızca bazı kategorilerdeki hatalar için yayılır.

IoT Hub platform ölçümlerini diğer konumlara yönlendirirken:

Ölçümleri analiz etme

Ölçüm gezginini kullanarak diğer Azure hizmetlerinden alınan ölçümlerle Azure IoT Hub ölçümlerini analiz edebilirsiniz. Bu araç hakkında daha fazla bilgi için bkz . Azure İzleyici ölçüm gezginiyle ölçümleri analiz etme.

Ölçüm gezginini açmak için Azure portalına gidin ve IoT hub'ınızı açın, ardından İzleme'nin altında Ölçümler'i seçin. Bu gezginin kapsamı varsayılan olarak IoT hub'ınız tarafından yayılan platform ölçümleriyle belirlenmiştir.

IoT hub'ına yönelik ölçüm gezgini sayfasını gösteren ekran görüntüsü.

Azure IoT Hub için toplanan platform ölçümlerinin listesi için Bkz . Azure IoT Hub verilerini izleme başvurusundaki Ölçümler. Tüm Azure hizmetleri için toplanan platform ölçümlerinin listesi için bkz . Azure İzleyici ile desteklenen ölçümler.

Birim cinsinden toplanan IoT Hub platformu ölçümleri için bazı toplamalar kullanılamayabilir veya kullanılamayabilir. Daha fazla bilgi edinmek için bkz . İzleme Azure IoT Hub veri başvurusunda desteklenen toplamalar.

Yönlendirme ölçümleri gibi bazı IoT Hub ölçümleri çok boyutlu olur. Bu ölçümler için, bir boyuta göre grafiklerinize filtre ve bölme uygulayabilirsiniz.

Günlükleri çözümleme

Azure İzleyici Günlüklerindeki veriler, her tablonun kendi benzersiz özellikler kümesine sahip olduğu tablolarda depolanır. Bu tablolardaki veriler bir Log Analytics çalışma alanıyla ilişkilendirilir ve Log Analytics'te sorgulanabilir. Azure İzleyici Günlükleri hakkında daha fazla bilgi edinmek için Azure İzleyici belgelerindeki Azure İzleyici Günlüklerine genel bakış bölümüne bakın.

Verileri Azure İzleyici Günlüklerine yönlendirmek için, kaynak günlüklerini veya platform ölçümlerini Log Analytics çalışma alanına göndermek için bir tanılama ayarı oluşturmanız gerekir. Daha fazla bilgi için bkz . Toplama ve yönlendirme.

Log Analytics gerçekleştirmek için Azure portalına gidin ve IoT hub'ınızı açın, ardından İzleme'nin altında Günlükler'i seçin. Bu Log Analytics sorgularının kapsamı varsayılan olarak IoT hub'ınız için Azure İzleyici Günlükleri'nde toplanan günlüklere ve ölçümlere göre belirlenmiştir.

IoT hub'ına yönelik günlükler sayfası.

Azure İzleyici Günlükleri tarafından kullanılan ve Log Analytics tarafından sorgulanabilen tabloların listesi için İzleme Azure IoT Hub veri başvurusundaki Azure İzleyici Günlükleri tablolarına bakın.

Azure İzleyici'deki tüm kaynak günlükleri aynı alanlara ve ardından hizmete özgü alanlara sahiptir. Ortak şema, Azure İzleyici kaynak günlüğü şemasında özetlenmiştir. Azure IoT Hub için toplanan kaynak günlüklerinin şemasını ve kategorilerini İzleme Azure IoT Hub veri başvurusundaki Kaynak günlüklerinde bulabilirsiniz. Olaylar yalnızca bazı kategorilerdeki hatalar için yayılır.

Etkinlik günlüğü, abonelik düzeyi olaylar hakkında içgörü sağlayan bir platform oturum açma Azure'dır. Bunu bağımsız olarak görüntüleyebilir veya Log Analytics kullanarak daha karmaşık sorgular yapabileceğiniz Azure İzleyici Günlüklerine yönlendirebilirsiniz.

IoT Hub platform ölçümlerini Azure İzleyici Günlüklerine yönlendirirken:

IoT Hub ile ilgili yaygın sorgular için bkz . Örnek Kusto sorguları. Log Analytics sorgularını kullanma hakkında daha fazla bilgi için bkz . Azure İzleyici'de günlük sorgularına genel bakış.

IoT Hub günlüklerinde SDK sürümü

IoT Hub kaynak günlüklerindeki bazı işlemler nesnesinde properties bir sdkVersion özellik döndürür. Bu işlemler için, bir cihaz veya arka uç uygulaması Azure IoT SDK'larından birini kullandığında, bu özellik kullanılmakta olan SDK, SDK sürümü ve SDK'nın çalıştığı platform hakkındaki bilgileri içerir.

Aşağıdaki örneklerde kullanılarak bir deviceConnect işlem için yayılan özellik gösterilmektedirsdkVersion:

  • Node.js cihaz SDK'sı: "azure-iot-device/1.17.1 (node v10.16.0; Windows_NT 10.0.18363; x64)"
  • .NET (C#) SDK'sı: ".NET/1.21.2 (.NET Framework 4.8.4200.0; Microsoft Windows 10.0.17763 WindowsProduct:0x00000004; X86)".

Aşağıdaki tabloda farklı Azure IoT SDK'ları için kullanılan SDK adı gösterilmektedir:

sdkVersion özelliğindeki SDK adı Dil
.NET .NET (C#)
microsoft.azure.devices .NET (C#) hizmet SDK'sı
microsoft.azure.devices.client .NET (C#) cihaz SDK'sı
iothubclient C veya Python v1 (kullanım dışı) cihaz SDK'sı
iothubserviceclient C veya Python v1 (kullanım dışı) hizmet SDK'sı
azure-iot-device-iothub-py Python cihaz SDK'sı
azure-iot-device Node.js cihaz SDK'sı
azure-iothub Node.js hizmet SDK'sı
com.microsoft.azure.iothub-java-client Java cihaz SDK'sı
com.microsoft.azure.iothub.service.sdk Java hizmeti SDK'sı
com.microsoft.azure.sdk.iot.iot-device-client Java cihaz SDK'sı
com.microsoft.azure.sdk.iot.iot-service-client Java hizmeti SDK'sı
C Katıştırılmış C
C + (OSSimplified = Eclipse ThreadX) Eclipse ThreadX

IoT Hub kaynak günlüklerine yönelik sorgular gerçekleştirdiğinizde SDK sürüm özelliğini ayıklayabilirsiniz. Örneğin, aşağıdaki sorgu Bağlan ions işlemleri tarafından döndürülen özelliklerden SDK sürüm özelliğini (ve cihaz kimliğini) ayıklar. Bu iki özellik, işlemin zamanı ve cihazın bağlandığını IoT hub'ının kaynak kimliğiyle birlikte sonuçlara yazılır.

// 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

Örnek Kusto sorguları

IoT hub'ınızı izlemenize yardımcı olması için aşağıdaki Kusto sorgularını kullanın.

Önemli

IoT Hub menüsünden Günlükler seçildiğinde Log Analytics açılır ve yalnızca IoT hub kaynağınızdan alınan veriler bulunur. Diğer IoT hub'larından veya Azure hizmetlerinden veri içeren sorgular için Azure İzleyici menüsünden Günlükler'i seçin. Daha fazla bilgi için bkz . Azure İzleyici Log Analytics'te günlük sorgusu kapsamı ve zaman aralığı.

  • Bağlan ivity Errors: Cihaz bağlantısı hatalarını belirleyin.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections" and Level == "Error"
    
  • Azaltma Hataları: Azaltma hatalarına neden olan en çok istekte bulunan cihazları belirleyin.

    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
    
  • Ölü Uç Noktalar: Sorunun bildirildiği sayıya göre ölü veya iyi durumda olmayan uç noktaları belirleyin ve nedenini bilin.

    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
    
  • Hata özeti: Türe göre tüm işlemler arasındaki hataların sayısı.

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Level == "Error"
    | summarize count() by ResultType, ResultDescription, Category, _ResourceId
    
  • Yakın zamanda bağlanan cihazlar: IoT Hub'ın belirtilen süre içinde bağlandığını gördüğü cihazların listesi.

    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
    
  • Belirli bir cihaz için Bağlan olayları: Belirli bir cihaz için günlüğe kaydedilen tüm bağlantı olayları (test cihazı).

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | extend DeviceId = tostring(parse_json(properties_s).deviceId)
    | where DeviceId == "test-device"
    
  • Cihazların SDK sürümü: Cihaz bağlantıları veya cihazdan buluta ikiz işlemleri için cihazların ve bunların SDK sürümlerinin listesi.

    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 Event Hubs'dan günlükleri okuma

Tanılama ayarları aracılığıyla olay günlüğünü ayarladıktan sonra, günlükleri okuyan uygulamalar oluşturabilir ve böylece içindeki bilgilere göre işlem yapabilirsiniz. Aşağıdaki örnek kod bir olay hub'ından günlükleri alır.

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);
            }
        }
    }
}

Uyarılar

İzleme verilerinizde önemli koşullar belirlendiğinde Azure İzleyici uyarıları size durumu önceden bildirir. Bu uyarılar, müşterileriniz bunları fark etmeden önce sisteminizdeki sorunları belirlemenize ve çözmenize olanak sağlar. Ölçümler, günlükler ve etkinlik günlüğüyle ilgili uyarılar ayarlayabilirsiniz. Farklı uyarı türlerinin avantajları ve dezavantajları vardır.

Platform ölçümlerini temel alan bir uyarı kuralı oluşturduğunuzda (sayı birimleriyle toplanır), bazı toplamalar kullanılamayabilir veya kullanılabilir olmayabilir. Daha fazla bilgi için bkz. Azure IoT Hub veri başvurularını izlemede desteklenen toplamalar.

Event Grid ile cihaz başına bağlantı kesilmelerini izleme

Azure İzleyici, IoT Hub'ınıza bağlı cihaz sayısını izlemek için kullanabileceğiniz bir ölçüm Bağlan cihazlar sağlar. Bu ölçüm, bağlı cihaz sayısı eşik değerinin altına düştüğünde bir uyarı tetikler. Azure İzleyici ayrıca, cihaz bağlantılarını, bağlantı kesilmelerini ve bağlantı hatalarını izlemek için kullanabileceğiniz bağlantılar kategorisindeki olayları da yayar. Bu olaylar bazı senaryolar için yeterli olsa da Azure Event Grid, kritik cihazlar ve altyapı için cihaz bağlantılarını izlemek için kullanabileceğiniz düşük gecikme süreli, cihaz başına izleme çözümü sağlar.

Event Grid ile uyarıları tetikleyip cihaz bağlantı durumunu izlemek için IoT Hub Cihazı Bağlan ed ve DeviceDisconnected olaylarına abone olabilirsiniz. Event Grid, Azure İzleyici'den çok daha düşük bir olay gecikme süresi sağlar, böylece tüm bağlı cihazlar yerine cihaz başına izleme yapabilirsiniz. Bu faktörler Event Grid'i kritik cihazlar ve altyapı için bağlantıları izlemek için tercih edilen yöntem haline getirir. Üretim ortamlarındaki cihaz bağlantılarını izlemek için Event Grid kullanmanızı kesinlikle öneririz.

Event Grid ve Azure İzleyici ile cihaz bağlantısını izleme hakkında daha fazla bilgi için bkz . Azure IoT Hub'a cihaz bağlantısını izleme, tanılama ve sorunlarını giderme.

Sonraki adımlar

  • Azure IoT Hub veri başvurularını izleme: IoT Hub tarafından oluşturulan ölçümlerin, günlüklerin ve diğer önemli değerlerin başvurusu.

  • Azure İzleyici ile Azure kaynaklarını izleme: Azure kaynaklarını izleme.

  • Azure IoT Hub'a cihaz bağlantısını izleme, tanılama ve sorun giderme: cihaz bağlantısını izleme.