Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buatlah sebuah konektor kustom ke sebuah sumber data
Topik ini menjelaskan cara menghubungkan sumber data kustom ke CloudWatch. Anda dapat menghubungkan sumber data kustom dengan dua CloudWatch cara:
-
Menggunakan contoh template yang CloudWatch menyediakan. Anda dapat menggunakan salah satu JavaScript atau Python dengan template ini. Template ini mencakup contoh kode Lambda yang akan berguna bagi Anda saat Anda membuat fungsi Lambda Anda. Anda kemudian dapat memodifikasi fungsi Lambda dari template untuk terhubung ke sumber data kustom Anda.
-
Membuat AWS Lambda fungsi dari awal yang mengimplementasikan konektor sumber data, kueri data, dan persiapan deret waktu untuk digunakan oleh CloudWatch. Fungsi ini harus melakukan pra-agregat atau menggabungkan titik data jika diperlukan, dan juga menyelaraskan periode dan stempel waktu agar kompatibel dengannya. CloudWatch
Daftar Isi
Gunakan sebuah templat
Menggunakan sebuah template untuk membuat sebuah contoh fungsi Lambda, dan membantu Anda membuat konektor kustom Anda dibangun lebih cepat. Fungsi sampel ini menyediakan kode sampel untuk banyak skenario umum yang terlibat dengan pembuatan konektor khusus. Anda dapat memeriksa kode Lambda setelah Anda membuat sebuah konektor dengan templat, lalu memodifikasinya untuk digunakan untuk terhubung ke sumber data Anda.
Selain itu, jika Anda menggunakan template, CloudWatch berhati-hatilah dalam membuat kebijakan izin Lambda dan melampirkan tag sumber daya ke fungsi Lambda.
Gunakan template untuk membuat sebuah konektor ke sebuah sumber data kustom.
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Pada panel navigasi, silakan pilih Pengaturan.
Pilih tab Sumber data metrik.
Pilih Buat sumber data.
Pilih tombol radio untuk Kustom - memulai template dan kemudian pilih Berikutnya.
Masukkan sebuah nama untuk sumber data.
Pilih salah satu template yang terdaftar.
Pilih Node.js atau Python.
Pilih Buat sumber data.
Sumber kustom baru yang baru saja Anda tambahkan tidak muncul sampai AWS CloudFormation stack selesai membuatnya. Untuk memeriksa kemajuan, Anda dapat memilih Lihat status CloudFormation tumpukan saya. Atau Anda dapat memilih ikon muat ulang untuk memperbarui daftar ini.
Ketika sumber data baru Anda muncul dalam daftar ini, maka siap untuk diujicoba di konsol dan dimodifikasi.
(Opsional) Untuk menjalankan kueri data pengujian dari sumber ini di konsol, ikuti instruksi di Membuat sebuah grafik metrik dari sumber data lain.
Ubah fungsi Lambda untuk kebutuhan Anda.
Pada panel navigasi, silakan pilih Pengaturan.
Pilih tab Sumber data metrik.
Pilih Lihat di konsol Lambda untuk sumber yang ingin Anda ubah.
Sekarang Anda dapat memodifikasi fungsi untuk mengakses sumber data Anda. Untuk informasi selengkapnya, lihat Langkah 1: Membuat fungsi .
catatan
Dengan menggunakan templat, ketika Anda menulis fungsi Lambda Anda, Anda tidak perlu mengikuti instruksi di Langkah 2: Membuat Kebijakan Izin Lambda atau Langkah 3: Melampirkan sebuah tanda sumber daya ke fungsi Lambda. Langkah-langkah ini dilakukan oleh CloudWatch karena Anda menggunakan template.
Buat sebuah sumber data kustom dari awal
Ikuti langkah-langkah di bagian ini untuk membuat fungsi Lambda yang terhubung CloudWatch ke sumber data.
Langkah 1: Membuat fungsi
Konektor sumber data khusus harus mendukung GetMetricData
peristiwa dari CloudWatch. Secara opsional, Anda juga dapat mengimplementasikan DescribeGetMetricData
acara untuk memberikan dokumentasi kepada pengguna di CloudWatch konsol tentang cara menggunakan konektor. DescribeGetMetricData
Respons juga dapat digunakan untuk mengatur default yang digunakan dalam pembuat kueri CloudWatch kustom.
CloudWatch menyediakan cuplikan kode sebagai contoh untuk membantu Anda memulai. Untuk informasi lebih lanjut, lihat repositori sampel di. https://github.com/aws-samples/cloudwatch-data-source-samples
Kekurangan
Respons dari Lambda harus lebih kecil dari 6 Mb. Jika respons melebihi 6 Mb, respons
GetMetricData
akan menandai fungsi Lambda sebagaiInternalError
dan tidak ada data yang dikembalikan.Fungsi Lambda harus menyelesaikan pelaksanaan dalam waktu 10 detik untuk tujuan visualisasi dan dasbor, atau dalam 4,5 detik untuk penggunaan alarm. Jika respons melebihi itu, respons
GetMetricData
akan menandai fungsi Lambda sebagaiInternalError
dan tidak ada data yang dikembalikan.Fungsi Lambda harus mengirimkan hasil akhirnya menggunakan stempel waktu dalam masa hitungan detik.
Jika fungsi Lambda tidak mengambil sampel ulang data dan sebaliknya mengembalikan data yang tidak sesuai dengan waktu mulai dan panjang periode yang diminta oleh CloudWatch pengguna, data tersebut akan diabaikan oleh. CloudWatch Data tambahan dibuang dari visualisasi atau pengaturan alarm apapun. Data apa pun yang tidak berada di antara waktu mulai dan waktu akhir juga dibuang.
Sebagai contoh, jika seorang pengguna meminta data dari pukul 10:00 hingga 11:00 dengan jangka waktu 5 menit, maka "10:00:00 hingga 10:04:59" dan "10:05:00 hingga 10:09:59" adalah rentang waktu yang valid untuk data yang akan dikembalikan. Anda harus mengembalikan sebuah deret waktu yang mencakup
10:00 value1
,10:05 value2
, dan sebagainya. Jika fungsi tersebut mengembalikan10:03 valueX
, misalnya, maka fungsi akan jatuh karena 10:03 tidak sesuai dengan waktu mulai dan periode yang diminta.Kueri multi-baris tidak didukung oleh konektor sumber CloudWatch data. Setiap umpan baris digantikan dengan sebuah ruang saat kueri dijalankan, atau saat Anda membuat sebuah alarm atau widget dasbor dengan kuerinya. Dalam beberapa kasus, ini mungkin membuat kueri Anda tidak valid.
GetMetricData acara
Meminta muatan
Berikut ini adalah contoh muatan permintaan GetMetricData
yang dikirimkan sebagai input ke fungsi Lambda.
{ "EventType": "GetMetricData", "GetMetricDataRequest": { "StartTime": 1697060700, "EndTime": 1697061600, "Period": 300, "Arguments": ["serviceregistry_external_http_requests{host_cluster!=\"prod\"}"] } }
StartTime— Stempel waktu yang menentukan data paling awal untuk dikembalikan. Jenis adalah stempel waktu masa detik.
EndTime— Stempel waktu yang menentukan data terbaru yang akan dikembalikan. Jenis adalah stempel waktu masa detik.
Periode – Jumlah detik yang diwakili oleh setiap kumpulan data metrik. Minimal adalah 60 detik. Jenis masa adalah detik.
Argumen – Serangkaian argumen yang akan diteruskan ke ekspresi matematika metrik Lambda. Untuk informasi selengkapnya tentang argumen yang diteruskan, silakan lihat Cara meneruskan argumen ke fungsi Lambda Anda.
Muatan respons
Berikut ini adalah contoh muatan respons GetMetricData
yang dikembalikan oleh fungsi Lambda.
{ "MetricDataResults": [ { "StatusCode": "Complete", "Label": "CPUUtilization", "Timestamps": [ 1697060700, 1697061000, 1697061300 ], "Values": [ 15000, 14000, 16000 ] } ] }
Muatan respons ini akan berisi bidang MetricDataResults
atau bidang Error
, tetapi tidak keduanya.
Bidang MetricDataResults
adalah daftar bidang-bidang deret waktu jenis MetricDataResult
. Masing-masing bidang deret waktu tersebut dapat mencakup bidang-bidang berikut ini.
StatusCode— (Opsional)
Complete
menunjukkan bahwa semua titik data dalam rentang waktu yang diminta dikembalikan.PartialData
berarti bahwa satu set titik data yang tidak lengkap dikembalikan. Jika ini dihilangkan, defaultnya adalahComplete
.Nilai yang valid:
Complete
|InternalError
|PartialData
|Forbidden
Pesan – Daftar pesan opsional dengan informasi tambahan tentang data yang dikembalikan.
Jenis: Array MessageDataobjek dengan
Code
danValue
string.Label – Label yang dapat dibaca manusia yang terkait dengan data.
Tipe: String
Stempel waktu – Stempel waktu untuk titik data, yang diformat dalam waktu masa. Jumlah stempel waktu selalu cocok dengan jumlah nilai dan nilai untuk
Timestamps[x]
adalahValues[x
].Tipe: Array stempel waktu
Nilai–Nilai – Nilai titik data untuk metrik, yang sesuai dengan
Timestamps
. Jumlah nilai selalu cocok dengan jumlah stempel waktu dan nilai untukTimestamps[x]
adalahValues[x
].Tipe: Array ganda
Untuk informasi selengkapnya tentang objek Error
, silakan lihat bagian-bagian berikut.
Format respons kesalahan
Anda dapat secara opsional menggunakan respons kesalahan untuk memberikan informasi lebih lanjut tentang kesalahan. Kami menyarankan Anda mengembalikan kesalahan dengan Validasi Kode ketika kesalahan validasi terjadi, seperti ketika sebuah parameter hilang atau jenis parameter salah.
Berikut ini adalah contoh respon ketika fungsi Lambda ingin memunculkan pengecualian validasi GetMetricData
.
{ "Error": { "Code": "Validation", "Value": "Invalid Prometheus cluster" } }
Berikut ini adalah contoh respons ketika fungsi Lambda mengindikasikn bahwa fungsi Lambda tidak dapat mengembalikan data karena masalah akses. Respons diterjemahkan ke dalam satu deret waktu dengan kode status Forbidden
.
{ "Error": { "Code": "Forbidden", "Value": "Unable to access ..." } }
Berikut ini adalah sebuah contoh ketika fungsi Lambda memunculkan pengecualian InternalError
keseluruhan, yang diterjemahkan ke dalam sebuah rangkaian waktu tunggal dengan kode status InternalError
dan sebuah pesan. Setiap kali kode kesalahan memiliki nilai selain Validation
atauForbidden
, CloudWatch mengasumsikan bahwa itu adalah kesalahan internal generik.
{ "Error": { "Code": "PrometheusClusterUnreachable", "Value": "Unable to communicate with the cluster" } }
DescribeGetMetricData acara
Meminta muatan
Berikut ini adalah contoh muatan permintaan DescribeGetMetricData
.
{ "EventType": "DescribeGetMetricData" }
Muatan respons
Berikut ini adalah contoh muatan respons DescribeGetMetricData
.
{ "Description": "Data source connector", "ArgumentDefaults": [{ Value: "default value" }] }
Deskripsi – Sebuah deskripsi tentang cara menggunakan konektor sumber data. Deskripsi ini akan muncul di CloudWatch konsol. Markdown didukung.
Tipe: String
ArgumentDefaults— Array opsional nilai default argumen yang digunakan pra-mengisi pembuat sumber data kustom.
Jika
[{ Value: "default value 1"}, { Value: 10}]
, dikembalikan, pembuat kueri di CloudWatch konsol menampilkan dua input, yang pertama dengan “nilai default 1" dan yang kedua dengan 10.Jika
ArgumentDefaults
tidak tersedia, satu input tunggal akan ditampilkan dengan jenis default yang disetel keString
.Tipe: Array objek yang mengandung Nilai dan Tipe.
Kesalahan – (Opsional) Sebuah bidang kesalahan dapat dimasukkan dalam respons apa pun. Anda dapat melihat contoh di GetMetricData acara.
Pertimbangan penting untuk alarm CloudWatch
Jika Anda akan menggunakan sumber data untuk mengatur CloudWatch alarm, Anda harus mengaturnya untuk melaporkan data dengan stempel waktu setiap menit. CloudWatch Untuk informasi selengkapnya dan pertimbangan lain untuk membuat alarm pada metrik dari sumber data yang terhubung, silakan lihat Membuat sebuah alarm berdasarkan pada sumber data yang terhubung.
(Opsional) Gunakan AWS Secrets Manager untuk menyimpan kredensi
Jika fungsi Lambda Anda perlu menggunakan kredensil untuk mengakses sumber data, sebaiknya gunakan AWS Secrets Manager untuk menyimpan kredensil ini alih-alih mengkodekannya ke dalam fungsi Lambda Anda. Untuk informasi lebih lanjut tentang penggunaan AWS Secrets Manager dengan Lambda, lihat Gunakan AWS Secrets Manager rahasia di AWS Lambda fungsi.
(Opsional) Connect ke sumber data di VPC
Jika sumber data Anda VPC dikelola oleh Amazon Virtual Private Cloud, Anda harus mengonfigurasi fungsi Lambda Anda untuk mengaksesnya. Untuk informasi selengkapnya, lihat Menghubungkan jaringan keluar ke sumber daya di file. VPC
Anda mungkin juga perlu mengonfigurasi titik akhir VPC layanan untuk mengakses layanan seperti AWS Secrets Manager. Untuk informasi selengkapnya, lihat Mengakses AWS layanan menggunakan VPC titik akhir antarmuka.
Langkah 2: Membuat Kebijakan Izin Lambda
Anda harus menggunakan buat pernyataan kebijakan yang memberikan CloudWatch izin untuk menggunakan fungsi Lambda yang Anda buat. Anda dapat menggunakan AWS CLI atau konsol Lambda untuk membuat pernyataan kebijakan.
Untuk menggunakan AWS CLI untuk membuat pernyataan kebijakan
Masukkan perintah berikut. Ganti
123456789012
dengan ID akun Anda, gantimy-data-source-function
dengan nama fungsi Lambda Anda, dan gantiMyDataSource-DataSourcePermission1234
dengan nilai unik yang sewenang-wenang.aws lambda add-permission --function-name
my-data-source-function
--statement-idMyDataSource-DataSourcePermission1234
--action lambda:InvokeFunction --principal lambda.datasource.cloudwatch.amazonaws.com --source-account123456789012
Langkah 3: Melampirkan sebuah tanda sumber daya ke fungsi Lambda
CloudWatch Konsol menentukan fungsi Lambda mana yang merupakan konektor sumber data dengan menggunakan tag. Saat Anda membuat sumber data menggunakan salah satu wizard, tag diterapkan secara otomatis oleh AWS CloudFormation tumpukan yang mengkonfigurasinya. Saat Anda membuat sumber data sendiri, maka Anda dapat menggunakan tanda berikut untuk fungsi Lambda Anda. Ini membuat konektor Anda muncul di dropdown sumber data di CloudWatch konsol saat Anda melakukan kueri metrik.
Tanda dengan
cloudwatch:datasource
sebagai kunci dancustom
sebagai nilai.