Mengumpulkan dan membawa metrik

Berlaku untuk:IoT Edge 1.4 checkmark IoT Edge 1.4

Penting

IoT Edge 1.4 adalah rilis yang didukung Jika Anda menggunakan 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 pengumpul metrik ke perangkat Anda. Artikel ini memberi Anda gambaran umum tentang arsitektur pemantauan dan menjelaskan opsi Anda tentang mengonfigurasi metrik di perangkat Anda.

Integrasi IoT Edge dengan Azure Monitor(4:06)

Arsitektur

Screenshot of the metrics monitoring architecture with IoT Hub.

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.

Screenshot the shows how to retrieve your resource ID from the IoT Hub properties.

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 Pengumpul Metrik IoT Edge 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 dengan maxCPU dan minCPU, tetapi tidak dengan CPUMaximum. ???CPU akan cocok dengan maxCPU dan minCPU, tetapi tidak dengan maximumCPU.
  • 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 di 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 tambahan, 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.