IoT Edge dağıtımlarından günlükleri alma
Şunlar için geçerlidir: IoT Edge 1.5 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.
Önerilen günlük biçimi
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 zzz
biç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"
}
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 , Completed Failed 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:
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"
}
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 , Completed Failed 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 '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
}
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>"
}
Sonraki adımlar
IoT Edge aracısının ve IoT Edge hub modül ikizlerinin özellikleri