Buatlah sebuah konektor kustom ke sebuah sumber data - Amazon CloudWatch

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

Untuk menghubungkan sumber data kustom ke CloudWatch, Anda memiliki dua opsi:

  • Mulailah dengan menggunakan contoh template yang CloudWatch menyediakan. Anda dapat menggunakan salah satu JavaScript atau Python dengan template ini. Templat 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.

  • Buat 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

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.
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pada panel navigasi, silakan pilih Pengaturan.

  3. Pilih tab Sumber data metrik.

  4. Pilih Buat sumber data.

  5. Pilih tombol radio untuk Kustom - memulai template dan kemudian pilih Berikutnya.

  6. Masukkan sebuah nama untuk sumber data.

  7. Pilih salah satu template yang terdaftar.

  8. Pilih Node.js atau Python.

  9. Pilih Buat sumber data.

    Sumber kustom baru yang baru saja Anda tambahkan tidak muncul sampai AWS CloudFormation tumpukan 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.

  10. (Opsional) Untuk menjalankan kueri data pengujian dari sumber ini di konsol, ikuti instruksi di Membuat sebuah grafik metrik dari sumber data lain.

  11. Ubah fungsi Lambda untuk kebutuhan Anda.

    1. Pada panel navigasi, silakan pilih Pengaturan.

    2. Pilih tab Sumber data metrik.

    3. 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. DescribeGetMetricDataRespons 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 sebagai InternalError 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 sebagai InternalError 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 mengembalikan 10: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. PartialDataberarti bahwa satu set titik data yang tidak lengkap dikembalikan. Jika ini dihilangkan, defaultnya adalah Complete.

    Nilai yang valid: Complete | InternalError | PartialData | Forbidden

  • Pesan – Daftar pesan opsional dengan informasi tambahan tentang data yang dikembalikan.

    Jenis: Array MessageDataobjek dengan Code dan Value 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] adalah Values[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 untuk Timestamps[x] adalah Values[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.

    Jenis: 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 ke String.

    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 kredensil

Jika fungsi Lambda Anda perlu menggunakan kredensyal untuk mengakses sumber data, sebaiknya gunakan untuk menyimpan kredensyal ini alih-alih mengkodekannya AWS Secrets Manager ke dalam fungsi Lambda Anda. Untuk informasi selengkapnya tentang penggunaan AWS Secrets Manager dengan Lambda, lihat Menggunakan AWS Secrets Manager rahasia dalam AWS Lambda fungsi.

(Opsional) Hubungkan ke sebuah sumber data dalam sebuah VPC

Jika sumber data Anda berada dalam sebuah VPC yang dikelola oleh Cloud Privat Virtual Amazon, Anda harus mengonfigurasi fungsi Lambda Anda untuk mengaksesnya. Untuk informasi selengkapnya, silakan lihat Menghubungkan jaringan keluar ke sumber daya di VPC.

Anda mungkin juga perlu mengonfigurasi titik akhir layanan VPC untuk mengakses layanan seperti AWS Secrets Manager. Untuk informasi selengkapnya, lihat Mengakses AWS layanan menggunakan titik akhir VPC 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, ganti my-data-source-functiondengan nama fungsi Lambda Anda, dan ganti MyDataSource- DataSourcePermission 1234 dengan nilai unik yang sewenang-wenang.

    aws lambda add-permission --function-name my-data-source-function --statement-id MyDataSource-DataSourcePermission1234 --action lambda:InvokeFunction --principal lambda.datasource.cloudwatch.amazonaws.com --source-account 123456789012

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 secara otomatis diterapkan oleh AWS CloudFormation tumpukan yang mengonfigurasinya. 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 dan custom sebagai nilai.