Mengambil log dari penyebaran IoT Edge
Berlaku untuk: IoT Edge 1.5
Penting
IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 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.
Format pembuatan log yang direkomendasikan
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 menggunakan tabel berikut, yang memperoleh tingkat keparahannya dari kode Tingkat 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 DARI ID pencocokan pertama yang 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"
}
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"
}
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
}
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>"
}