Mengambil log dari penyebaran IoT Edge

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Ambil log dari penyebaran IoT Edge Anda tanpa memerlukan akses fisik atau SSH ke perangkat dengan menggunakan metode langsung yang disertakan dalam modul agen IoT Edge. Metode langsung diterapkan pada perangkat, dan kemudian dapat dipanggil dari cloud. Agen IoT Edge menyertakan metode langsung yang membantu Anda memantau dan mengelola perangkat IoT Edge dari jarak jauh. Metode langsung yang dibahas dalam artikel ini umumnya tersedia dengan rilis 1.0.10.

Untuk informasi selengkapnya tentang metode langsung, cara menggunakannya, dan cara mengimplementasikannya dalam modul Anda sendiri, lihat Memahami dan memanggil metode langsung dari IoT Hub.

Nama-nama metode langsung ini ditangani peka huruf besar/kecil.

Meskipun tidak diperlukan, untuk kompatibilitas terbaik dengan fitur ini, format pembuatan log yang direkomendasikan adalah:

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

{Timestamp} harus diformat sebagai yyyy-MM-dd HH:mm:ss.fff zzz, dan {Log Level} harus mengikuti tabel di bawah ini, yang memperoleh tingkat keparahannya dari kode Keparahan dalam standar Syslog.

Nilai Tingkat keparahan
0 Darurat
1 Peringatan
2 Kritis
3 Kesalahan
4 Peringatan
5 Pemberitahuan
6 Informasi
7 Debug

Kelas Logger di IoT Edge berfungsi sebagai implementasi kanonis.

Ambil log modul

Gunakan metode langsung GetModuleLogs untuk mengambil log modul IoT Edge.

Tip

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

Halaman pemecahan masalah IoT Edge di portal Microsoft Azure memberikan pengalaman yang disederhanakan untuk melihat log modul. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah perangkat IoT Edge dari portal Microsoft 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 Set ke 1.0
item Array JSON Array dengan id dan filter tuple.
id string Ekspresi reguler yang memasok nama modul. Ini dapat mencocokkan beberapa modul pada perangkat edge. Format .NET Regular Expressions diharapkan. Jika ada beberapa item yang ID-nya cocok dengan modul yang sama, hanya opsi filter ID pencocokan pertama yang akan diterapkan ke modul tersebut.
filter Bagian JSON Filter log untuk diterapkan ke modul yang cocok dengan id ekspresi reguler dalam tuple.
tail Integer Jumlah baris log di masa lalu untuk diambil mulai 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 keduanya tail dan since ditentukan, log diambil menggunakan since nilai terlebih dahulu. Kemudian, tail nilai diterapkan pada hasil, dan hasil akhir dikembalikan. OPSIONAL.
hingga string Hanya mengembalikan log sebelum waktu yang ditentukan, sebagai tanda waktu rfc3339, tanda waktu UNIX, atau durasi (hari (d) jam (h) menit (m)). Misalnya, durasi 90 menit dapat ditentukan sebagai 90 menit atau 90m. Jika keduanya tail dan since ditentukan, log diambil menggunakan since nilai terlebih dahulu. Kemudian, tail nilai diterapkan pada hasil, dan hasil akhir dikembalikan. OPSIONAL.
loglevel Integer Filter baris log sama dengan tingkat log yang ditentukan. Baris log harus mengikuti format pembuatan log yang direkomendasikan dan menggunakan standar tingkat keparahan Syslog. Jika Anda perlu memfilter berdasarkan beberapa nilai tingkat keparahan tingkat log, lalu mengandalkan pencocokan regex, asalkan modul mengikuti beberapa format yang konsisten saat mencatat tingkat keparahan yang berbeda. OPSIONAL.
regex string Filter garis log yang memiliki konten yang cocok dengan ekspresi reguler yang ditentukan menggunakan format .NET Regular Expressions. OPSIONAL.
pengodean string Salah satu gzip atau none. Defaultnya adalah none.
contentType string Salah satu json atau text. Defaultnya adalah text.

Catatan

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

Pengambilan log yang berhasil mengembalikan "status": 200 diikuti oleh payload yang berisi log yang diambil 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 Microsoft Azure, panggil metode dengan nama metode GetModuleLogs dan payload JSON berikut:

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

Cuplikan layar 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 langsung ini tanpa batas mengambil semua log yang mungkin besar, memakan waktu, atau mahal.

Jika Anda ingin mengunggah log dari perangkat di belakang perangkat gateway, Anda harus memiliki proxy API dan modul penyimpanan blob yang dikonfigurasi 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 yang mirip dengan GetModuleLogs, dengan penambahan kunci "sasUrl":

    {
       "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 Tanda Tangan Akses Bersama dengan 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 terjadi kesalahan, string kosong atau sebaliknya.
correlationId string ID untuk meminta status permintaan unggahan.

Contohnya:

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 dengan 1000 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 Microsoft Azure, panggil metode dengan nama metode UploadModuleLogs dan payload JSON berikut setelah mengisi sasURL dengan informasi Anda:

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

Cuplikan layar cara memanggil 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 iotedge support-bundle perintah pada perangkat IoT Edge Anda untuk mendapatkan log.

Catatan

Jika Anda ingin mengunggah log dari perangkat di belakang perangkat gateway, Anda harus memiliki proxy API dan modul penyimpanan blob yang dikonfigurasi 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 Set ke 1.0
sasURL string (URI) URL Tanda Tangan Akses Bersama dengan akses tulis ke kontainer Azure Blob Storage
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. OPSIONAL.
hingga string Hanya mengembalikan log sebelum waktu yang ditentukan, sebagai tanda waktu rfc3339, tanda waktu UNIX, atau durasi (hari (d) jam (h) menit (m)). Misalnya, durasi 90 menit dapat ditentukan sebagai 90 menit atau 90m. OPSIONAL.
edgeRuntimeOnly Boolean Jika benar, hanya kembalikan log dari Edge Agent, Edge Hub, dan Edge Security Daemon. Default: false. OPSIONAL.

Penting

Bundel dukungan IoT Edge mungkin berisi Informasi Identitas Pribadi.

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, Running, Completed, Failed, atau Unknown.
pesan string Pesan jika terjadi kesalahan, string kosong atau sebaliknya.
correlationId string ID untuk meminta status permintaan unggahan.

Contohnya:

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 Microsoft Azure, panggil metode dengan nama metode UploadSupportBundle dan payload JSON berikut setelah mengisi sasURL dengan informasi Anda:

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

Cuplikan layar memperlihatkan cara memanggil metode langsung UploadSupportBundle di portal Azure.

Dapatkan status permintaan unggahan

Gunakan metode langsung GetTaskStatus untuk mengkueri status permintaan log unggahan. Payload permintaan GetTaskStatus menggunakan permintaan correlationId log unggahan untuk mendapatkan status tugas. Yang correlationId dikembalikan sebagai tanggapan 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, Running, Completed, Failed, 'Cancelled', atau Unknown.
pesan string Pesan jika terjadi kesalahan, string kosong atau sebaliknya.
correlationId 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 Microsoft Azure, panggil metode dengan nama metode dan GetTaskStatus payload JSON berikut setelah mengisi GUID dengan informasi Anda:

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

Cuplikan layar memperlihatkan cara memanggil metode langsung GetTaskStatus di portal Azure .

Langkah berikutnya

Properti agen IoT Edge dan kembar modul hub IoT Edge