IoT Edge dağıtımlarından günlükleri alma

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

IoT Edge aracı modülünde yer alan doğrudan yöntemleri kullanarak cihaza fiziksel veya SSH erişimine gerek kalmadan IoT Edge dağıtımlarınızdan günlükleri alın. Doğrudan yöntemler cihazda uygulanır ve ardından buluttan çağrılabilir. IoT Edge aracısı, IoT Edge cihazlarınızı uzaktan izlemenize ve yönetmenize yardımcı olan doğrudan yöntemler içerir. Bu makalede açıklanan doğrudan yöntemler genel olarak 1.0.10 sürümüyle kullanılabilir.

Doğrudan yöntemler, bunları kullanma ve bunları kendi modüllerinizde uygulama hakkında daha fazla bilgi için bkz . IoT Hub'dan doğrudan yöntemleri anlama ve çağırma.

Bu doğrudan yöntemlerin adları büyük/küçük harfe duyarlı olarak işlenir.

Gerekli olmasa da, bu özellikle en iyi uyumluluk için önerilen günlüğe kaydetme biçimi şu şekildedir:

<{Log Level}> {Timestamp} {Message Text}

{Timestamp}olarak yyyy-MM-dd HH:mm:ss.fff zzzbiçimlendirilmelidir ve {Log Level} önem düzeylerini Syslog standardındaki Önem Derecesi kodundan türeyen aşağıdaki tabloyu kullanmalıdır.

Değer Önem
0 Acil
1 Uyarı
2 Kritik
3 Hata
4 Uyarı
5 Not
6 Bilgi
7 Hata Ayıklama

IoT Edge'deki Logger sınıfı kurallı bir uygulama işlevi görür.

Modül günlüklerini alma

IoT Edge modülünün günlüklerini almak için GetModuleLogs doğrudan yöntemini kullanın.

İpucu

since Alınan günlük aralığını sınırlamak için ve until filtre seçeneklerini kullanın. Bu doğrudan yöntemi sınır olmadan çağırmak, büyük, zaman alan veya maliyetli olabilecek tüm günlükleri alır.

Azure portalındaki IoT Edge sorun giderme sayfası, modül günlüklerini görüntülemek için basitleştirilmiş bir deneyim sağlar. Daha fazla bilgi için bkz . Azure portalından IoT Edge cihazlarını izleme ve sorunlarını giderme.

Bu yöntem aşağıdaki şemaya sahip bir JSON yükünü kabul eder:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Adı Tür Açıklama
schemaVersion Dize Olarak ayarla 1.0
öğe JSON dizisi ve filter demetleri olan id bir dizi.
id dize Modül adını sağlayan normal ifade. Bir uç cihazdaki birden çok modülle eşleşebilir. .NET Normal İfadeler biçimi beklenir. Kimliği aynı modülle eşleşen birden çok öğe olması durumunda, bu modüle yalnızca eşleşen ilk kimliğin filtre seçenekleri uygulanır.
filtrele JSON bölümü Tanımlama grubundaki normal ifadeyle id eşleşen modüllere uygulanacak günlük filtreleri.
kuyruk integer En son sürümden başlayarak alınacak geçmişteki günlük satırlarının sayısı. OPSİYONEL.
beri Dize Yalnızca bu zamandan bu yana günlükleri rfc3339 zaman damgası, UNIX zaman damgası veya süre (gün (d) saat (h) dakika (m)olarak döndürür. Örneğin, bir gün, 12 saat ve 30 dakika için bir süre 1 gün 12 saat 30 dakika veya 1d 12h 30m olarak belirtilebilir. Hem hem since de tail belirtilirse, günlükler önce değeri kullanılarak since alınır. Daha sonra sonuç tail için değer uygulanır ve nihai sonuç döndürülür. OPSİYONEL.
kadar Dize Günlükleri yalnızca belirtilen süreden önce rfc3339 zaman damgası, UNIX zaman damgası veya süre (gün (d) saat (h) dakika (m)olarak döndürür. Örneğin, süre 90 dakika 90 dakika veya 90 dk olarak belirtilebilir. Hem hem since de tail belirtilirse, günlükler önce değeri kullanılarak since alınır. Daha sonra sonuç tail için değer uygulanır ve nihai sonuç döndürülür. OPSİYONEL.
loglevel integer Belirtilen günlük düzeyine eşit günlük satırlarını filtreleyin. Günlük satırları önerilen günlük biçimine uygun olmalı ve Syslog önem düzeyi standardını kullanmalıdır. Birden çok günlük düzeyi önem derecesi değerine göre filtrelemeniz gerekiyorsa, modülün farklı önem düzeylerini günlüğe kaydederken tutarlı bir biçim izlemesi koşuluyla, regex eşleştirmesine güvenmeniz gerekir. OPSİYONEL.
regex Dize .NET Normal İfadeler biçimini kullanarak belirtilen normal ifadeyle eşleşen içeriğe sahip günlük satırlarını filtreleyin . OPSİYONEL.
encoding Dize gzip veya none. Varsayılan none değeridir.
contentType Dize json veya text. Varsayılan text değeridir.

Not

Günlük içeriği şu anda 128 KB olan doğrudan yöntemlerin yanıt boyutu sınırını aşarsa yanıt bir hata döndürür.

Günlüklerin başarıyla alınması bir "durum" döndürür: 200 ve ardından modülden alınan günlükleri içeren yük isteğinizde belirttiğiniz ayarlara göre filtrelenir.

Örneğin:

az iot hub invoke-module-method --method-name 'GetModuleLogs' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }
'

Azure portalında yöntemini yöntem adı GetModuleLogs ve aşağıdaki JSON yüküyle çağırın:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

Azure portalında doğrudan GetModuleLogs yöntemini çağırma işleminin ekran görüntüsü.

Sıkıştırılmış bir yanıtı işlemek için CLI çıkışını gzip gibi Linux yardımcı programlarına da yöneltebilirsiniz. Örneğin:

az iot hub invoke-module-method \
  --method-name 'GetModuleLogs' \
  -n <hub name> \
  -d <device id> \
  -m '$edgeAgent' \
  --method-payload '{"contentType": "text","schemaVersion": "1.0","encoding": "gzip","items": [{"id": "edgeHub","filter": {"since": "2d","tail": 1000}}],}' \
  -o tsv --query 'payload[0].payloadBytes' \
  | base64 --decode \
  | gzip -d

Modül günlüklerini karşıya yükleme

İstenen günlükleri belirtilen Azure Blob Depolama kapsayıcısına göndermek için UploadModuleLogs doğrudan yöntemini kullanın.

Not

since Alınan günlük aralığını sınırlamak için ve until filtre seçeneklerini kullanın. Bu doğrudan yöntemi sınır olmadan çağırmak, büyük, zaman alan veya maliyetli olabilecek tüm günlükleri alır.

Ağ geçidi cihazının arkasındaki bir cihazdan günlükleri karşıya yüklemek istiyorsanız, üst katman cihazda API ara sunucusu ve blob depolama modüllerinin yapılandırılmış olması gerekir. Bu modüller, alt katman cihazınızdaki günlükleri ağ geçidi cihazınız üzerinden buluttaki depolama alanınıza yönlendirir.

Bu yöntem, "sasUrl" anahtarının eklenmesiyle GetModuleLogs'a benzer bir JSON yükünü kabul eder:

    {
       "schemaVersion": "1.0",
       "sasUrl": "Full path to SAS URL",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Adı Tür Açıklama
sasURL dize (URI) Azure Blob Depolama kapsayıcısına yazma erişimi olan Paylaşılan Erişim İmzası URL'si.

Günlükleri karşıya yükleme isteği başarılı bir "durum" döndürür: 200 ve ardından aşağıdaki şemaya sahip bir yük:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Adı Tür Açıklama
durum Dize NotStarted, , Running, CompletedFailedveya Unknown.
ileti Dize Hata durumunda ileti, aksi takdirde boş dize.
correlationId Dize Karşıya yükleme isteğinin durumunu sorgulamak için kimlik.

Örneğin:

Aşağıdaki çağrı, tüm modüllerden son 100 günlük satırı sıkıştırılmış JSON biçiminde karşıya yükler:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": ".*",
                "filter": {
                    "tail": 100
                }
            }
        ],
        "encoding": "gzip",
        "contentType": "json"
    }
'

Aşağıdaki çağrı, tempSensor modülündeki son 1000 günlük satırıyla edgeAgent ve edgeHub'dan son 100 günlük satırı sıkıştırılmamış metin biçiminde karşıya yükler:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": "edge",
                "filter": {
                    "tail": 100
                }
            },
            {
                "id": "tempSensor",
                "filter": {
                    "tail": 1000
                }
            }
        ],
        "encoding": "none",
        "contentType": "text"
    }
'

Azure portalında sasURL'yi bilgilerinizle doldurup yöntem adı UploadModuleLogs ve aşağıdaki JSON yüküyle yöntemini çağırın:

    {
       "schemaVersion": "1.0",
       "sasUrl": "<sasUrl>",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

Azure portalında UploadModuleLogs doğrudan yöntemini çağırma işleminin ekran görüntüsü.

Destek paketi tanılamalarını karşıya yükleme

IoT Edge modül günlüklerinin zip dosyasını paketleyip kullanılabilir bir Azure Blob Depolama kapsayıcısına yüklemek için UploadSupportBundle doğrudan yöntemini kullanın. Bu doğrudan yöntem, günlükleri almak için IoT Edge cihazınızda komutunu çalıştırır iotedge support-bundle .

Not

Ağ geçidi cihazının arkasındaki bir cihazdan günlükleri karşıya yüklemek istiyorsanız, üst katman cihazda API ara sunucusu ve blob depolama modüllerinin yapılandırılmış olması gerekir. Bu modüller, alt katman cihazınızdaki günlükleri ağ geçidi cihazınız üzerinden buluttaki depolama alanınıza yönlendirir.

Bu yöntem aşağıdaki şemaya sahip bir JSON yükünü kabul eder:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
Adı Tür Açıklama
schemaVersion Dize Olarak ayarla 1.0
sasURL dize (URI) Azure Blob Depolama kapsayıcısına yazma erişimi olan Paylaşılan Erişim İmzası URL'si
beri Dize Yalnızca bu zamandan bu yana günlükleri rfc3339 zaman damgası, UNIX zaman damgası veya süre (gün (d) saat (h) dakika (m)olarak döndürür. Örneğin, bir gün, 12 saat ve 30 dakika için bir süre 1 gün 12 saat 30 dakika veya 1d 12h 30m olarak belirtilebilir. OPSİYONEL.
kadar Dize Günlükleri yalnızca belirtilen süreden önce rfc3339 zaman damgası, UNIX zaman damgası veya süre (gün (d) saat (h) dakika (m)olarak döndürür. Örneğin, süre 90 dakika 90 dakika veya 90 dk olarak belirtilebilir. OPSİYONEL.
edgeRuntimeOnly boolean Doğruysa yalnızca Edge Aracısı, Edge Hub ve Edge Güvenlik Daemon'ından günlükleri döndürebilirsiniz. Varsayılan: false. OPSİYONEL.

Önemli

IoT Edge destek paketi Kişisel Bilgiler içerebilir.

Günlükleri karşıya yükleme isteği başarılı bir "durum" döndürür: 200 ve ardından UploadModuleLogs yanıtıyla aynı şemaya sahip bir yük gelir:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Adı Tür Açıklama
durum Dize NotStarted, , Running, CompletedFailedveya Unknown.
ileti Dize Hata durumunda ileti, aksi takdirde boş dize.
correlationId Dize Karşıya yükleme isteğinin durumunu sorgulamak için kimlik.

Örneğin:

az iot hub invoke-module-method --method-name 'UploadSupportBundle' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
'

Azure portalında sasURL'yi bilgilerinizle doldurup yöntem adı UploadSupportBundle ve aşağıdaki JSON yüküyle yöntemini çağırın:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }

Azure portalında UploadSupportBundle doğrudan yöntemini çağırmayı gösteren ekran görüntüsü.

Karşıya yükleme isteği durumunu alma

Karşıya yükleme günlükleri isteğinin durumunu sorgulamak için GetTaskStatus doğrudan yöntemini kullanın. GetTaskStatus istek yükü, görevin durumunu almak için karşıya yükleme günlükleri isteğini kullanırcorrelationId. correlationId, UploadModuleLogs doğrudan yöntem çağrısına yanıt olarak döndürülür.

Bu yöntem aşağıdaki şemaya sahip bir JSON yükünü kabul eder:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

Günlükleri karşıya yükleme isteği başarılı bir "durum" döndürür: 200 ve ardından UploadModuleLogs yanıtıyla aynı şemaya sahip bir yük gelir:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Adı Tür Açıklama
durum Dize NotStarted, , Running, Completed, Failed, 'İptal Edildi' veya Unknown.
ileti Dize Hata durumunda ileti, aksi takdirde boş dize.
correlationId Dize Karşıya yükleme isteğinin durumunu sorgulamak için kimlik.

Örneğin:

az iot hub invoke-module-method --method-name 'GetTaskStatus' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }
'

Azure portalında, GUID'yi bilgilerinizle doldurup yöntem adı GetTaskStatus ve aşağıdaki JSON yüküyle yöntemini çağırın:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

Azure portalında doğrudan GetTaskStatus yöntemini çağırmayı gösteren ekran görüntüsü.

Sonraki adımlar

IoT Edge aracısının ve IoT Edge hub modül ikizlerinin özellikleri