Mengumpulkan dan membawa metrik
Berlaku untuk: IoT Edge 1.4
Penting
IoT Edge 1.4 adalah rilis yang didukung. Jika Anda berada pada rilis sebelumnya, lihat Memperbarui IoT Edge.
Anda dapat memantau armada IoT Edge dari jarak jauh menggunakan Azure Monitor dan integrasi metrik bawaan. Untuk mengaktifkan kemampuan ini pada perangkat Anda, tambahkan modul kolektor metrik ke penyebaran Anda dan konfigurasikan untuk mengumpulkan dan memindahkan metrik modul ke Azure Monitor.
Untuk mengonfigurasi pemantauan di perangkat IoT Edge Anda, ikuti Tutorial: Memantau perangkat IoT Edge. Anda mempelajari cara menambahkan modul metrics-collector ke perangkat Anda. Artikel ini memberi Anda gambaran umum tentang arsitektur pemantauan dan menjelaskan opsi Anda tentang mengonfigurasi metrik di perangkat Anda.
IoT Edge integrasi dengan Azure Monitor(4:06)
Arsitektur
Catatan | Deskripsi |
---|---|
1 | Semua modul harus memunculkan metrik menggunakan model data Prometheus. Sementara metrik bawaan memungkinkan visibilitas beban kerja yang luas secara default, modul kustom juga dapat digunakan untuk memunculkan metrik dengan skenario tertentu untuk meningkatkan solusi pemantauan. Pelajari cara melengkapi modul kustom menggunakan pustaka sumber terbuka di artikel Menambahkan metrik kustom. |
2️ | Modul pengumpul metrik adalah modul IoT Edge yang tersedia di Microsoft yang mengumpulkan metrik modul beban kerja serta memindahkannya ke luar perangkat. Kumpulan metrik menggunakan model penarikan. Frekuensi pengumpulan, titik akhir, dan filter dapat dikonfigurasi untuk mengontrol data yang muncul dari modul. Untuk informasi selengkapnya, lihat bagian konfigurasi pengumpul metrik di akhir artikel ini. |
3️ | Anda memiliki dua opsi untuk mengirimkan metrik dari modul pengumpul metrik ke cloud. Opsi 1 mengirimkan metrik ke Analitik Log.1 Metrik yang dikumpulkan diserap ke dalam ruang kerja Analitik Log yang ditentukan menggunakan tabel tetap asli yang disebut InsightsMetrics . Skema tabel ini sesuai dengan model data metrik Prometheus.Opsi ini memerlukan akses ke ruang kerja pada port keluar 443. ID dan kunci ruang kerja Analitik Log harus ditentukan sebagai bagian dari konfigurasi modul. Untuk mengaktifkan di jaringan terbatas, lihat Mengaktifkan dalam skenario akses jaringan terbatas di akhir artikel ini. |
4️ | Setiap entri metrik berisi ResourceId yang ditentukan sebagai bagian dari konfigurasi modul. Asosiasi ini secara otomatis menautkan metrik dengan sumber daya yang ditentukan (misalnya, IoT Hub). Akibatnya, templat buku kerja IoT Edge yang dikumpulkan dapat mengambil metrik dengan mengeluarkan kueri terhadap sumber daya. Pendekatan ini juga memungkinkan beberapa IoT Hubs untuk berbagi satu ruang kerja Analitik Log dengan aman sebagai database metrik. |
5️ | Opsi 2 mengirimkan metrik ke IoT Hub. 1 Modul pengumpul dapat dikonfigurasi untuk mengirim metrik yang terkumpul sebagai pesan perangkat ke cloud JSON yang dienkode UTF-8 melalui modul edgeHub . Opsi ini membuka pemantauan perangkat IoT Edge terkunci yang diizinkan akses eksternal hanya ke titik akhir IoT Hub. Opsi ini juga memungkinkan pemantauan perangkat IoT Edge anak di dalam konfigurasi bertumpuk di mana perangkat anak hanya dapat mengakses perangkat induknya. |
6️ | Saat metrik dirutekan melalui IoT Hub, alur kerja cloud (satu kali) perlu disiapkan. Alur kerja memproses pesan yang tiba dari modul pengumpul metrik dan mengirimkannya ke ruang kerja Analitik Log. Alur kerja memungkinkan fungsionalitas visualisasi dan pemberitahuan yang dikumpulkan, bahkan untuk metrik yang muncul melalui jalur opsional ini. Lihat bagian Merutekan metrik melalui IoT Hub untuk detail tentang cara menyiapkan alur kerja cloud ini. |
1 Saat ini, menggunakan opsi 1 untuk langsung memindahkan metrik ke Analitik Log dari perangkat IoT Edge adalah jalur yang lebih sederhana yang memerlukan pengaturan minimal. Opsi pertama lebih disukai, kecuali skenario spesifik Anda menuntut pendekatan opsi 2 sehingga perangkat IoT Edge hanya berkomunikasi dengan IoT Hub.
Modul pengumpul metrik
Modul pengumpul metrik yang tersedia di Microsoft dapat ditambahkan ke penyebaran IoT Edge untuk mengumpulkan metrik modul dan mengirimkannya ke Azure Monitor. Kode modul adalah sumber terbuka dan tersedia dalam repositori GitHub IoT Edge.
Modul pengumpul metrik diberikan sebagai gambar kontainer Docker multi-arsitektur yang mendukung Linux X64, ARM32, ARM64, dan Windows X64 (versi 1809). Ini tersedia untuk umum di mcr.microsoft.com/azureiotedge-metrics-collector
.
Modul ini juga tersedia di Marketplace Modul IoT Edge.
Konfigurasi pengumpul metrik
Semua konfigurasi untuk pengumpul metrik dilakukan menggunakan variabel lingkungan. Minimal, variabel yang dicatat dalam tabel ini ditandai sebagai Diperlukan perlu ditentukan.
Nama variabel lingkungan | Deskripsi |
---|---|
ResourceId |
ID sumber daya IoT hub yang berkomunikasi dengan perangkat. Untuk informasi selengkapnya, lihat bagian ID Sumber Daya. Diperlukan Nilai default: tidak ada |
UploadTarget |
Mengontrol apakah metrik dikirim langsung ke Azure Monitor melalui HTTPS atau ke IoT Hub sebagai pesan D2C. Untuk informasi selengkapnya, lihat target pengunggahan. Dapat berupa AzureMonitor atau IoTMessage Tidak diperlukan Nilai default: AzureMonitor |
LogAnalyticsWorkspaceId |
ID ruang kerja Analitik Log. Diperlukan hanya jika UploadTarget adalah AzureMonitor Nilai default: tidak ada |
LogAnalyticsSharedKey |
Kunci ruang kerja Analitik Log. Diperlukan hanya jika UploadTarget adalah AzureMonitor Nilai default: tidak ada |
ScrapeFrequencyInSecs |
Interval waktu berulang dalam hitungan detik untuk mengumpulkan dan mengangkut metrik. Contoh: 600 Tidak diperlukan Nilai default: 300 |
MetricsEndpointsCSV |
Daftar titik akhir yang dipisahkan koma untuk mengumpulkan metrik Prometheus. Semua titik akhir modul untuk mengumpulkan metrik harus muncul dalam daftar ini. Contoh: http://edgeAgent:9600/metrics , http://edgeHub:9600/metrics, http://MetricsSpewer:9417/metrics Tidak diperlukan Nilai default: http://edgeHub:9600/metrics , http://edgeAgent:9600/metrics |
AllowedMetrics |
Daftar metrik yang akan dikumpulkan, semua metrik lainnya diabaikan. Atur ke string kosong untuk dinonaktifkan. Untuk informasi selengkapnya, lihat daftar yang diizinkan dan tidak diizinkan. Contoh: metricToScrape{quantile=0.99}[endpoint=http://MetricsSpewer:9417/metrics ] Tidak diperlukan Nilai default: kosong |
BlockedMetrics |
Daftar metrik yang diabaikan. Mengambil alih AllowedMetrics, sehingga metrik tidak dilaporkan jika disertakan dalam kedua daftar. Untuk informasi selengkapnya, lihat daftar yang diizinkan dan tidak diizinkan. Contoh: metricToIgnore{quantile=0.5}[endpoint=http://VeryNoisyModule:9001/metrics ], docker_container_disk_write_bytes Tidak diperlukan Nilai default: kosong |
CompressForUpload |
Kontrol adalah pemadatan yang harus digunakan saat mengunggah metrik. Berlaku untuk semua target pengunggahan. Contoh: benar Tidak diperlukan Nilai default: benar |
AzureDomain |
Menentukan domain Azure tingkat atas untuk digunakan saat menelan metrik langsung ke Log Analytics. Contoh: azure.us Tidak diperlukan Nilai default: azure.com |
ID sumber daya
Modul pengumpul metrik memerlukan ID Azure Resource Manager dari IoT hub yang dimiliki perangkat IoT Edge. Berikan ID ini sebagai nilai variabel lingkungan ResourceID.
ID sumber daya mengambil format berikut:
/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Devices/IoTHubs/<iot hub name>
Anda dapat menemukan ID sumber daya di halaman Properti IoT hub di portal Microsoft Azure.
Atau, ambil ID dengan perintah az resource show:
az resource show -g <resource group> -n <hub name> --resource-type "Microsoft.Devices/IoTHubs"
Target pengunggahan
Opsi konfigurasi UploadTarget mengontrol apakah metrik dikirim langsung ke Azure Monitor atau ke IoT Hub.
Jika Anda mengatur UploadTarget ke IoTMessage, maka metrik modul Anda akan diterbitkan sebagai pesan IoT. Pesan ini dimunculkan sebagai json yang dienkode UTF8 dari titik akhir /messages/modules/<metrics collector module name>/outputs/metricOutput
. Misalnya, jika modul IoT Edge Metrics Collector Anda diberi nama IoTEdgeMetricsCollector, titik akhirnya adalah /messages/modules/IoTEdgeMetricsCollector/outputs/metricOutput
. Formatnya sebagai berikut:
[{
"TimeGeneratedUtc": "<time generated>",
"Name": "<prometheus metric name>",
"Value": <decimal value>,
"Label": {
"<label name>": "<label value>"
}
}, {
"TimeGeneratedUtc": "2020-07-28T20:00:43.2770247Z",
"Name": "docker_container_disk_write_bytes",
"Value": 0.0,
"Label": {
"name": "AzureMonitorForIotEdgeModule"
}
}]
Daftar yang diizinkan dan tidak diizinkan
Opsi konfigurasi AllowedMetrics
dan BlockedMetrics
mengambil daftar pemilih metrik yang dipisahkan spasi atau koma. Metrik cocok dengan daftar dan disertakan atau dikecualikan jika cocok dengan satu atau beberapa metrik di salah satu daftar.
Pemilih metrik menggunakan format yang serupa dengan subset bahasa kueri PromQL.
metricToSelect{quantile=0.5,otherLabel=~Re[ge]*|x}[http://VeryNoisyModule:9001/metrics]
Pemilih metrik terdiri dari tiga bagian:
Nama metrik (metricToSelect
).
- Karakter kartubebas
*
(karakter apa pun) dan?
(karakter tunggal apa pun) dapat digunakan dalam nama metrik. Misalnya,*CPU
akan cocok denganmaxCPU
danminCPU
, tetapi tidak denganCPUMaximum
.???CPU
akan cocok denganmaxCPU
danminCPU
, tetapi tidak denganmaximumCPU
. - Komponen ini diperlukan di dalam pemilih metrik.
Pemilih berbasis label ({quantile=0.5,otherLabel=~Re[ge]*|x}
).
- Beberapa nilai metrik dapat disertakan dalam kurung kurawal. Nilainya harus dipisahkan koma.
- Metrik dicocokkan jika setidaknya semua label dalam pemilih ada dan juga cocok.
- Seperti PromQL, operator pencocokan berikut diperbolehkan.
=
Cocokkan label yang sama persis dengan untai (karakter) yang tersedia (peka huruf besar dan huruf kecil).!=
Cocokkan label yang tidak sama persis dengan untai (karakter) yang tersedia.=~
Cocokkan label dengan regex yang tersedia. contoh:label=~CPU|Mem|[0-9]*
!~
Cocokkan label yang tidak sesuai dengan regex yang tersedia.- Regex sepenuhnya berlabuh (A
^
dan$
secara otomatis ditambahkan ke awal dan akhir setiap regex) - Komponen ini bersifat opsional di pemilih metrik.
Pemilih titik akhir ([http://VeryNoisyModule:9001/metrics]
).
- URL harus sama persis dengan URL yang tercantum di
MetricsEndpointsCSV
. - Komponen ini bersifat opsional di pemilih metrik.
Metrik harus cocok dengan semua bagian dari pemilih tertentu yang akan dipilih. Metrik ini harus cocok dengan namanya dan memiliki semua label yang sama dengan nilai yang cocok dan berasal dari titik akhir yang diberikan. Misalnya, mem{quantile=0.5,otherLabel=foobar}[http://VeryNoisyModule:9001/metrics]
tidak akan cocok dengan pemilih mem{quantile=0.5,otherLabel=~foo|bar}[http://VeryNoisyModule:9001/metrics]
. Beberapa pemilih harus digunakan untuk membuat perilaku or-like, bukan perilaku and-like.
Misalnya, untuk mengizinkan metrik mem
dari modul module1
dengan label apa pun, tetapi hanya mengizinkan metrik yang sama dari module2
dengan label agg=p99
, pemilih berikut dapat ditambahkan ke AllowedMetrics
:
mem{}[http://module1:9001/metrics] mem{agg="p99"}[http://module2:9001/metrics]
Atau, untuk mengizinkan metrik kustom mem
dan cpu
dengan label atau titik akhir apa pun, tambahkan yang berikut ini ke AllowedMetrics
:
mem cpu
Mengaktifkan dalam skenario akses jaringan terbatas
Jika Anda mengirim metrik langsung ke ruang kerja Analitik Log, izinkan akses keluar ke URL berikut:
https://<LOG_ANALYTICS_WORKSPACE_ID>.ods.opinsights.azure.com/*
https://<LOG_ANALYTICS_WORKSPACE_ID>.oms.opinsights.azure.com/*
Pertimbangan proksi
Modul kolektor metrik ditulis dalam .NET Core. Jadi, gunakan panduan yang sama seperti pada modul sistem untuk memungkinkan komunikasi melalui server proxy.
Pengumpulan metrik dari modul lokal menggunakan protokol http. Kecualikan komunikasi lokal dari melalui server proxy dengan mengatur variabel lingkungan NO_PROXY
.
Atur nilai NO_PROXY
ke daftar nama host yang dipisahkan koma yang harus dikecualikan. Gunakan nama modul untuk nama host. Misalnya: edgeHub,edgeAgent,myCustomModule.
Metrik rute
Terkadang perlu untuk menyerap metrik melalui IoT Hub alih-alih mengirimkannya langsung ke Analitik Log. Misalnya, saat memantau perangkat IoT Edge di konfigurasi bertumpuk di mana perangkat anak hanya memiliki akses ke hub IoT Edge dari perangkat induknya. Contoh lain adalah saat menyebarkan perangkat IoT Edge dengan akses jaringan keluar hanya ke IoT Hub.
Untuk mengaktifkan pemantauan dalam skenario ini, modul pengumpulan metrik dapat dikonfigurasi untuk mengirim metrik sebagai pesan perangkat ke cloud (device-to-cloud/D2C) melalui modul edgeHub. Kemampuan ini dapat diaktifkan dengan mengatur variabel lingkungan UploadTarget
ke IoTMessage
dalam konfigurasi pengumpul.
Tip
Ingatlah untuk menambahkan rute edgeHub untuk mengirimkan pesan metrik dari modul pengumpul ke IoT Hub. Rutenya terlihat seperti FROM /messages/modules/replace-with-collector-module-name/* INTO $upstream
.
Opsi ini memang memerlukan penyiapan ekstra, alur kerja cloud, untuk mengirimkan pesan metrik yang tiba di IoT Hub ke ruang kerja Analitik Log. Tanpa pengaturan ini, bagian lain dari integrasi seperti visualisasi dan pemberitahuan yang dikumpulkan tidak berfungsi.
Catatan
Waspadai biaya tambahan dengan opsi ini. Pesan metrik akan dihitung berdasarkan kuota pesan IoT Hub Anda. Anda juga akan dikenakan biaya untuk sumber daya penyerapan Analitik Log dan alur kerja cloud.
Sampel alur kerja cloud
Alur kerja cloud yang mengirimkan pesan metrik dari IoT Hub ke Analitik Log tersedia sebagai bagian dari sampel pengelogan dan pemantauan IoT Edge. Sampel dapat disebarkan ke sumber daya cloud yang ada atau berfungsi sebagai referensi penyebaran produksi.
Langkah berikutnya
Jelajahi jenis visualisasi yang dikumpulkan yang diaktifkan Azure Monitor.