CloudWatch Konektor metrik - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CloudWatch Konektor metrik

Konektor CloudWatch Metrik menerbitkan metrik khusus dari perangkat Greengrass ke Amazon. CloudWatch Konektor menyediakan infrastruktur terpusat untuk menerbitkan CloudWatch metrik, yang dapat Anda gunakan untuk memantau dan menganalisis lingkungan inti Greengrass, dan bertindak berdasarkan acara lokal. Untuk informasi selengkapnya, lihat Menggunakan CloudWatch metrik Amazon di Panduan CloudWatch Pengguna Amazon.

Konektor ini menerima data metrik sebagai pesan MQTT. Konektor mengumpulkan metrik yang berada di namespace yang sama dan menerbitkannya secara berkala. CloudWatch

Konektor ini memiliki versi berikut.

Versi

ARN

5

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/5

4

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4

3

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/3

2

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/2

1

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/1

Untuk informasi tentang perubahan versi, lihat Changelog.

Persyaratan

Konektor ini memiliki persyaratan sebagai berikut:

Version 3 - 5
  • AWS IoT Greengrass perangkat lunak Core v1.9.3 atau yang lebih baru.

  • Python versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

    catatan

    Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan cloudwatch:PutMetricData tindakan, seperti yang ditunjukkan dalam contoh berikut AWS Identity and Access Management kebijakan (IAM).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

    Untuk informasi selengkapnya tentang CloudWatch izin, lihat referensi CloudWatch izin Amazon di Panduan Pengguna IAM.

Versions 1 - 2
  • AWS IoT Greengrass perangkat lunak Core v1.7 atau yang lebih baru.

  • Python versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan cloudwatch:PutMetricData tindakan, seperti yang ditunjukkan dalam contoh berikut AWS Identity and Access Management kebijakan (IAM).

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

    Untuk informasi selengkapnya tentang CloudWatch izin, lihat referensi CloudWatch izin Amazon di Panduan Pengguna IAM.

Parameter Konektor

Konektor ini menyediakan parameter berikut:

Versions 4 - 5
PublishInterval

Jumlah maksimum detik untuk menunggu sebelum menerbitkan metrik batched untuk namespace tertentu. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan metrik seperti yang diterima (tanpa batching), tentukan 0.

Konektor mempublikasikan CloudWatch setelah menerima 20 metrik di namespace yang sama atau setelah interval yang ditentukan.

catatan

Konektor tidak menjamin urutan acara terbitan.

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan Interval

Wajib: true

Jenis: string

Nilai yang valid: 0 - 900

Pola yang valid: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Wilayah AWSUntuk memposting CloudWatch metrik ke. Nilai ini menimpa Wilayah metrik Greengrass default. Ini diperlukan hanya saat memposting metrik lintas-Wilayah.

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan wilayah

Wajib: false

Jenis: string

Pola yang valid: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

Memori (dalam KB) untuk mengalokasikan ke konektor.

Nama tampilan pada konsol AWS IoT tersebut: Ukuran memori

Wajib: true

Jenis: string

Pola yang valid: ^[0-9]+$

MaxMetricsToRetain

Jumlah maksimum metrik dalam semua namespaces untuk dipertahankan dalam memori sebelum diganti dengan metrik baru. Nilai minimumnya adalah 2000.

Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru. Metrik dalam namespace tertentu diganti hanya dengan metrik dalam namespace yang sama.

catatan

Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, gangguan ini dapat terjadi selama deployment grup atau ketika perangkat dimulai ulang.

Nama tampilan pada konsol AWS IoT tersebut: Metrik maksimum untuk dipertahankan

Wajib: true

Jenis: string

Pola yang valid: ^([2-9]\d{3}|[1-9]\d{4,})$

IsolationMode

Mode kontainerisasi untuk konektor ini. Default-nya adalah GreengrassContainer, yang berarti bahwa konektor berjalan dalam lingkungan waktu aktif terisolasi dalam kontainer AWS IoT Greengrass ini.

catatan

Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.

Nama tampilan pada konsol AWS IoT tersebut: Mode isolasi kontainer

Wajib: false

Jenis: string

Nilai yang valid: GreengrassContainer or NoContainer

Pola yang valid: ^NoContainer$|^GreengrassContainer$

Versions 1 - 3
PublishInterval

Jumlah maksimum detik untuk menunggu sebelum menerbitkan metrik batched untuk namespace tertentu. Nilai maksimumnya adalah 900. Untuk mengonfigurasi konektor untuk menerbitkan metrik seperti yang diterima (tanpa batching), tentukan 0.

Konektor mempublikasikan CloudWatch setelah menerima 20 metrik di namespace yang sama atau setelah interval yang ditentukan.

catatan

Konektor tidak menjamin urutan acara terbitan.

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan Interval

Wajib: true

Jenis: string

Nilai yang valid: 0 - 900

Pola yang valid: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Wilayah AWSUntuk memposting CloudWatch metrik ke. Nilai ini menimpa Wilayah metrik Greengrass default. Ini diperlukan hanya saat memposting metrik lintas-Wilayah.

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan wilayah

Wajib: false

Jenis: string

Pola yang valid: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

Memori (dalam KB) untuk mengalokasikan ke konektor.

Nama tampilan pada konsol AWS IoT tersebut: Ukuran memori

Wajib: true

Jenis: string

Pola yang valid: ^[0-9]+$

MaxMetricsToRetain

Jumlah maksimum metrik dalam semua namespaces untuk dipertahankan dalam memori sebelum diganti dengan metrik baru. Nilai minimumnya adalah 2000.

Batas ini berlaku bila tidak ada koneksi ke internet dan konektor mulai buffer metrik untuk diterbitkan nanti. Ketika buffer penuh, metrik terlama digantikan oleh metrik baru. Metrik dalam namespace tertentu diganti hanya dengan metrik dalam namespace yang sama.

catatan

Metrik tidak dipertahankan jika proses host untuk konektor terganggu. Sebagai contoh, gangguan ini dapat terjadi selama deployment grup atau ketika perangkat dimulai ulang.

Nama tampilan pada konsol AWS IoT tersebut: Metrik maksimum untuk dipertahankan

Wajib: true

Jenis: string

Pola yang valid: ^([2-9]\d{3}|[1-9]\d{4,})$

Buat Contoh Konektor (AWS CLI)

Perintah CLI berikut membuat ConnectorDefinition dengan versi awal yang berisi konektor CloudWatch Metrik.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyCloudWatchMetricsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4", "Parameters": { "PublishInterval" : "600", "PublishRegion" : "us-west-2", "MemorySize" : "16", "MaxMetricsToRetain" : "2500", "IsolationMode" : "GreengrassContainer" } } ] }'

Di konsol AWS IoT Greengrass tersebut, Anda dapat menambahkan konektor dari halaman grup Konektor ini. Untuk informasi lebih lanjut, lihat Memulai dengan konektor Greengrass (konsol).

Data input

Konektor ini menerima metrik pada topik MQTT dan menerbitkan metrik ke. CloudWatch Pesan input harus dalam format JSON.

Filter topik dalam langganan

cloudwatch/metric/put

Properti pesan
request

Informasi tentang metrik dalam pesan ini.

Objek permintaan berisi data metrik untuk dipublikasikan CloudWatch. Nilai metrik harus memenuhi spesifikasi PutMetricDataAPI. Hanya namespace, metricData.metricName, dan metricData.value properti yang diperlukan.

Wajib: true

Jenis: object yang mencakup properti berikut:

namespace

Namespace yang ditentukan pengguna untuk data metrik dalam permintaan ini. CloudWatch menggunakan ruang nama sebagai wadah untuk titik data metrik.

catatan

Anda tidak dapat menentukan namespace yang dimulai dengan string yang dicadangkan AWS/.

Wajib: true

Jenis: string

Pola yang valid: [^:].*

metricData

Data untuk metrik.

Wajib: true

Jenis: object yang mencakup properti berikut:

metricName

Nama metrik.

Wajib: true

Jenis: string

dimensions

Dimensi yang terkait dengan metrik. Dimensi memberikan informasi lebih lanjut tentang metrik dan datanya. Metrik dapat menentukan hingga 10 dimensi.

Konektor ini secara otomatis menyertakan dimensi bernamacoreName, di mana nilainya adalah nama inti.

Wajib: false

Jenis: array objek dimensi yang mencakup properti berikut:

name

Nama dimensi.

Wajib: false

Jenis: string

value

Nilai dimensi.

Wajib: false

Jenis: string

timestamp

Waktu data metrik diterima, dinyatakan sebagai jumlah detik sejak Jan 1, 1970 00:00:00 UTC. Jika nilai ini dihilangkan, konektor menggunakan waktu yang menerima pesan.

Wajib: false

Jenis: timestamp

catatan

Jika Anda menggunakan antara versi 1 dan 4 konektor ini, kami sarankan Anda mengambil stempel waktu secara terpisah untuk setiap metrik saat Anda mengirim beberapa metrik dari satu sumber. Jangan menggunakan variabel untuk menyimpan catatan waktu.

value

Nilai untuk metrik.

catatan

CloudWatch menolak nilai yang terlalu kecil atau terlalu besar. Nilai harus dalam kisaran 8.515920e-109 ke 1.174271e+108 (Basis 10) atau 2e-360 ke 2e360 (Basis 2). Nilai khusus (sebagai contoh, NaN, +Infinity, -Infinity) tidak didukung.

Wajib: true

Jenis: double

unit

Unit untuk metrik.

Wajib: false

Jenis: string

Nilai yang valid: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None

Batas

Semua batasan yang diberlakukan oleh CloudWatch PutMetricDataAPI berlaku untuk metrik saat menggunakan konektor ini. Batas berikut sangat penting:

  • Batas 40 KB pada muatan API

  • 20 metrik per permintaan API

  • 150 transaksi per detik (TPS) untuk API PutMetricData

Untuk informasi selengkapnya, lihat CloudWatch batasan di Panduan CloudWatch Pengguna Amazon.

Contoh masukan
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }

Data output

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

Filter topik dalam langganan

cloudwatch/metric/put/status

Contoh keluaran: Sukses

Responsnya mencakup namespace data metrik dan RequestId bidang dari respons. CloudWatch

{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
Contoh keluaran: Kegagalan
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
catatan

Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya.

Contoh Penggunaan

Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

catatan
  1. Pastikan Anda memenuhi persyaratan untuk konektor.

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

  2. Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

    Simpan kode contoh sebagai file PY. Unduh dan unzip AWS IoT Greengrass Core SDK for Python. Kemudian, buat paket zip yang berisi file PY dan folder greengrasssdk dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

    Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

  3. Konfigurasikan grup Greengrass Anda.

    1. Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau "Pinned": true dalam CLI).

    2. Tambahkan konektor dan konfigurasikan parameter.

    3. Tambahkan langganan yang mengizinkan konektor untuk menerima data input dan mengirim data output pada filter topik yang didukung.

      • Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.

      • Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status dalam konsol AWS IoT tersebut.

  4. Men-deploy grup.

  5. Di konsol AWS IoT tersebut, pada halaman Tes ini, berlangganan ke topik data output untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

    Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau "Pinned": false dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

Contoh

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'cloudwatch/metric/put' def create_request_with_all_fields(): return { "request": { "namespace": "Greengrass_CW_Connector", "metricData": { "metricName": "Count1", "dimensions": [ { "name": "test", "value": "test" } ], "value": 1, "unit": "Seconds", "timestamp": time.time() } } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

Lisensi

Konektor CloudWatch Metrik mencakup perangkat lunak/lisensi pihak ketiga berikut:

Konektor ini dirilis di bawah Perjanjian Lisensi Perangkat lunak core Greengrass.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

5

Perbaiki untuk menambahkan dukungan untuk stempel waktu duplikat dalam data input.

4

Ditambahkan parameter IsolationMode untuk mengonfigurasi mode kontainerisasi untuk konektor.

3

Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif.

2

Perbaiki untuk mengurangi pencatatan berlebihan.

1

Pelepasan awal.

Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.

Lihat juga