Mengambil log dari penerapan IoT Edge

Berlaku untuk:IoT Edge 1.6 tanda centang IoT Edge 1.6

Penting

IoT Edge 1.6 LTS adalah rilis yang didukung. Dukungan IoT Edge 1.5 LTS berakhir pada 10 November 2026; IoT Edge 1.4 LTS mencapai akhir masa pakainya pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Update IoT Edge.

Dapatkan log dari penyebaran IoT Edge Anda tanpa akses fisik atau SSH dengan menggunakan metode langsung dalam modul agen IoT Edge. Metode langsung berjalan pada perangkat dan Anda dapat memanggilnya dari cloud. Agen IoT Edge memiliki metode langsung yang membantu Anda memantau dan mengelola perangkat IoT Edge Anda dari jarak jauh. Metode langsung dalam artikel ini tersedia dimulai dengan versi 1.0.10.

Untuk informasi selengkapnya tentang metode langsung, cara menggunakannya, dan cara menambahkannya ke modul Anda sendiri, lihat Understand dan memanggil metode langsung dari IoT Hub.

Nama metode langsung ini sensitif terhadap huruf besar/kecil.

Untuk kompatibilitas terbaik dengan fitur ini, gunakan format pengelogan berikut:

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

Format {Timestamp} sebagai yyyy-MM-dd HH:mm:ss.fff zzz. Gunakan {Log Level} nilai dari tabel berikut, berdasarkan kode Tingkat Keparahan dalam standar Syslog.

Nilai Tingkat keparahan
0 Darurat
1 Notifikasi
2 Kritis
3 Kesalahan
4 Peringatan
5 Pemberitahuan
6 Informatif
7 Pemecahan Kesalahan

Kelas Logger di IoT Edge adalah implementasi kanonis.

Ambil log modul

Gunakan metode langsung GetModuleLogs untuk mendapatkan log modul IoT Edge.

Petunjuk / Saran

since Gunakan opsi filter dan until untuk membatasi rentang log yang diambil. Jika Anda memanggil metode langsung ini tanpa batas, ia mendapatkan semua log, yang bisa besar, memakan waktu, atau mahal.

Halaman pemecahan masalah IoT Edge di portal Azure memberi Anda cara yang lebih sederhana untuk melihat log modul. Untuk informasi selengkapnya, lihat Monitor dan memecahkan masalah perangkat IoT Edge dari portal Azure.

Metode ini menerima payload JSON dengan skema berikut:

    {
       "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" 
    }
Nama Tipe Deskripsi
schemaVersion string Atur ke 1.0
item Array JSON Array dengan id dan filter tuple.
Id string Ekspresi reguler yang menentukan nama modul. Ini dapat mencocokkan beberapa modul pada perangkat edge. Format Ekspresi Reguler .NET diharapkan. Jika beberapa item memiliki ID yang cocok dengan modul yang sama, hanya opsi filter ID pencocokan pertama yang berlaku untuk modul tersebut.
filter Bagian JSON Filter log untuk diterapkan ke modul yang cocok dengan id ekspresi reguler dalam tuple.
ekor bilangan bulat Jumlah baris log terdahulu yang ingin diperoleh, dimulai dari yang terbaru. OPSIONAL.
sejak string Hanya mengembalikan log sejak saat ini, sebagai tanda waktu rfc3339, tanda waktu UNIX, atau durasi (hari (d), jam (h), menit (m)). Misalnya, durasi selama satu hari, 12 jam, dan 30 menit dapat ditentukan sebagai 1 hari 12 jam 30 menit atau 1d 12 jam 30m. Jika kedua tail dan since ditentukan, log akan difilter menggunakan nilai since terlebih dahulu, kemudian nilai tail diterapkan pada hasilnya. OPSIONAL.
hingga string Hanya mengembalikan log sebelum waktu yang ditentukan, dalam bentuk stempel waktu rfc3339, stempel waktu UNIX, atau durasi (hari (d), jam (h), menit (m)). Misalnya, durasi 90 menit dapat ditentukan sebagai 90 menit atau 90m. Jika kedua tail dan since ditentukan, log akan difilter menggunakan nilai since terlebih dahulu, kemudian nilai tail diterapkan pada hasilnya. OPSIONAL.
loglevel bilangan bulat Memfilter baris log sesuai dengan tingkat log yang ditentukan. Baris log harus mengikuti format pengelogan yang direkomendasikan dan menggunakan standar tingkat keparahan Syslog . Jika Anda perlu memfilter berdasarkan beberapa nilai tingkat keparahan tingkat log, gunakan pencocokan regex, asalkan modul menggunakan format yang konsisten untuk tingkat keparahan yang berbeda. OPSIONAL.
regex string Filter baris log yang cocok dengan ekspresi reguler yang ditentukan menggunakan format ekspresi reguler .NET. OPSIONAL.
pengodean string Entah gzip atau none. Defaultnya adalah none.
jenis konten string Entah json atau text. Defaultnya adalah text.

Catatan

Jika konten log melebihi batas ukuran respons untuk metode langsung, yang saat ini 128 KB, respons mengembalikan kesalahan.

Pengambilan log yang berhasil mengembalikan "status": 200 diikuti dengan payload dengan log dari modul, difilter oleh pengaturan yang Anda tentukan dalam permintaan Anda.

Contohnya:

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"
    }
'

Di portal Azure, panggil metode GetModuleLogs dan payload JSON berikut:

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

Tangkapan layar yang menunjukkan cara memanggil metode langsung GetModuleLogs di portal Azure.

Anda juga dapat mem-pipa output CLI ke utilitas Linux, seperti gzip, untuk memproses respons terkompresi. Contohnya:

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

Mengunggah log modul

Gunakan metode langsung UploadModuleLogs untuk mengirim log yang diminta ke kontainer Azure Blob Storage tertentu.

Catatan

since Gunakan opsi filter dan until untuk membatasi rentang log yang diambil. Memanggil metode secara langsung tanpa batas ini dapat mengambil semua log, yang bisa menjadi besar, memakan waktu lama, atau mahal.

Untuk mengunggah log dari perangkat di belakang perangkat gateway, pastikan modul proksi API dan penyimpanan blob dikonfigurasi pada perangkat lapisan atas. Modul ini merutekan log dari perangkat lapisan bawah Anda melalui perangkat gateway Anda ke penyimpanan Anda di cloud.

Metode ini menerima payload JSON yang mirip dengan GetModuleLogs, dengan kunci "sasUrl" yang ditambahkan:

    {
       "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" 
    }
Nama Tipe Deskripsi
sasURL string (URI) URL dengan Tanda Tangan Akses Bersama yang memberikan akses tulis ke kontainer Azure Blob Storage.

Permintaan yang berhasil untuk mengunggah log mengembalikan "status": 200 diikuti dengan payload dengan skema berikut:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Nama Tipe Deskripsi
status string Salah satu dari NotStarted, Running, Completed, Failed, atau Unknown.
pesan string Pesan jika ada kesalahan, atau teks kosong sebaliknya.
korelasiId string ID untuk memeriksa status permintaan unggahan.

Misalnya, pemanggilan berikut mengunggah 100 baris log terakhir dari semua modul dalam format JSON terkompresi:

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"
    }
'

Pemanggilan berikut mengunggah 100 baris log terakhir dari edgeAgent dan edgeHub, dan 1.000 baris log terakhir dari modul tempSensor dalam format teks yang tidak dikompresi:

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"
    }
'

Di portal Azure, panggil metode dengan nama metode UploadModuleLogs dan payload JSON berikut setelah mengganti sasUrl dengan informasi Anda:

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

Screenshot pemanggilan metode langsung UploadModuleLogs di portal Azure.

Mengunggah diagnostik bundel dukungan

Gunakan metode langsung UploadSupportBundle untuk menggabungkan dan mengunggah file zip log modul IoT Edge ke kontainer Azure Blob Storage yang tersedia. Metode langsung ini menjalankan perintah iotedge support-bundle pada perangkat IoT Edge Anda untuk mendapatkan log.

Catatan

Untuk mengunggah log dari perangkat di belakang perangkat gateway, pastikan modul proksi API dan penyimpanan blob disiapkan di perangkat lapisan atas. Modul ini merutekan log dari perangkat lapisan bawah Anda melalui perangkat gateway Anda ke penyimpanan Anda di cloud.

Metode ini menerima payload JSON dengan skema berikut:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
Nama Tipe Deskripsi
schemaVersion string Atur ke 1.0.
sasURL string (URI) URL dengan Tanda Tangan Akses Bersama yang memberikan akses tulis ke kontainer Azure Blob Storage.
sejak string Mengembalikan log sejak saat ini, sebagai tanda waktu RFC 3339, tanda waktu UNIX, atau durasi (hari (d), jam (h), menit (m)). Misalnya, tentukan satu hari, 12 jam, dan 30 menit sebagai 1 hari 12 jam 30 menit atau 1d 12 jam 30m. Fakultatif.
hingga string Mengembalikan log sebelum waktu ini, sebagai tanda waktu RFC 3339, tanda waktu UNIX, atau durasi (hari (d), jam (h), menit (m)). Misalnya, tentukan 90 menit sebagai 90 menit atau 90m. Fakultatif.
edgeRuntimeOnly Boolean Jika true, kembalikan log hanya dari Edge Agent, Edge Hub, dan Edge Security Daemon. Nilai awal: false. Fakultatif.

Penting

Bundel dukungan IoT Edge dapat berisi informasi identitas pribadi.

Permintaan log unggahan yang berhasil mengembalikan "status": 200 dan payload dengan skema yang sama dengan respons UploadModuleLogs :

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Nama Tipe Deskripsi
status string Salah satu dari NotStarted, Running, Completed, Failed, atau Unknown.
pesan string Pesan jika terjadi kesalahan, string kosong atau sebaliknya.
korelasiId string ID untuk meminta status permintaan unggahan.

Dalam contoh berikut, ganti teks penampung <hub name> dan <device id> dengan nilai Anda sendiri.

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
    }
'

Di portal Azure, panggil metode dengan nama metode UploadSupportBundle dan payload JSON berikut setelah Anda mengganti URL SAS Anda sendiri:

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

Screenshot penggunaan metode langsung UploadSupportBundle di portal Azure.

Dapatkan status permintaan unggahan

Gunakan metode langsung GetTaskStatus untuk memeriksa status permintaan log unggahan. Payload permintaan GetTaskStatus menggunakan correlationId dari permintaan log unggahan untuk mendapatkan status tugas. Berasal correlationId dari respons terhadap panggilan metode langsung UploadModuleLogs .

Metode ini menerima payload JSON dengan skema berikut:

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

Permintaan yang berhasil untuk mengunggah log mengembalikan "status": 200 diikuti oleh payload dengan skema yang sama dengan respons UploadModuleLogs:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Nama Tipe Deskripsi
status string Salah satu dari NotStarted, , RunningCompleted, Failed, Cancelled, atau Unknown.
pesan string Pesan jika terjadi kesalahan, string kosong atau sebaliknya.
korelasiId string ID untuk meminta status permintaan unggahan.

Contohnya:

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

Di portal Azure, panggil metode dengan nama metode GetTaskStatus dan payload JSON berikut. Ganti <GUID> dengan nilai Anda sendiri.

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

Screenshot portal Azure memperlihatkan cara memanggil metode langsung GetTaskStatus.

Langkah berikutnya

Properti agen IoT Edge dan kembaran modul hub IoT Edge