Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kirim data telemetri dari AWS Lambda ke OpenSearch untuk analitik dan visualisasi waktu nyata
Tabby Ward, Guy Bachar, dan David Kilzer, Amazon Web Services
Ringkasan
Aplikasi modern menjadi semakin terdistribusi dan didorong oleh peristiwa, yang memperkuat kebutuhan akan pemantauan dan observabilitas waktu nyata. AWS Lambda adalah layanan komputasi tanpa server yang memainkan peran penting dalam membangun arsitektur yang dapat diskalakan dan digerakkan oleh peristiwa. Namun, pemantauan dan pemecahan masalah fungsi Lambda dapat menjadi tantangan jika Anda hanya mengandalkan Amazon CloudWatch Logs, yang dapat memperkenalkan latensi dan periode retensi terbatas.
Untuk mengatasi tantangan ini, AWS memperkenalkan Lambda Telemetry API, yang memungkinkan fungsi Lambda mengirim data telemetri langsung ke alat pemantauan dan observabilitas pihak ketiga. API ini mendukung streaming real-time log, metrik, dan jejak, serta memberikan tampilan yang komprehensif dan tepat waktu tentang kinerja dan kesehatan fungsi Lambda Anda.
Pola ini menjelaskan cara mengintegrasikan API Telemetri Lambda dengan OpenSearch
Pola ini menjelaskan cara mengatur dan mengonfigurasi integrasi API Telemetri Lambda dengan OpenSearch, dan mencakup praktik terbaik untuk keamanan, pengoptimalan biaya, dan skalabilitas. Tujuannya adalah untuk membantu Anda mendapatkan wawasan yang lebih dalam tentang fungsi Lambda Anda dan meningkatkan pengamatan keseluruhan aplikasi tanpa server Anda.
Catatan: Pola ini berfokus pada integrasi Lambda Telemetry API dengan managed. OpenSearch Namun, prinsip dan teknik yang dibahas juga berlaku untuk self-managed OpenSearch dan Elasticsearch. |
|---|
Prasyarat dan batasan
Sebelum Anda memulai proses integrasi, pastikan Anda memiliki prasyarat berikut:
Akun AWS: Aktif Akun AWS dengan izin yang sesuai untuk membuat dan mengelola AWS sumber daya berikut:
AWS Lambda
AWS Identity and Access Management (IAM)
OpenSearch Layanan Amazon (jika Anda menggunakan OpenSearch kluster terkelola)
OpenSearch klaster:
Anda dapat menggunakan OpenSearch kluster yang dikelola sendiri atau layanan terkelola seperti OpenSearch Layanan.
Jika Anda menggunakan OpenSearch Layanan, siapkan OpenSearch klaster Anda dengan mengikuti petunjuk di Memulai OpenSearch Layanan Amazon di dokumentasi OpenSearch Layanan.
Pastikan OpenSearch klaster dapat diakses dari fungsi Lambda Anda dan dikonfigurasi dengan pengaturan keamanan yang diperlukan, seperti kebijakan akses, enkripsi, dan otentikasi.
Konfigurasikan OpenSearch cluster dengan pemetaan dan pengaturan indeks yang diperlukan untuk menyerap data telemetri Lambda. Untuk informasi selengkapnya, lihat Memuat data streaming ke OpenSearch Layanan Amazon di dokumentasi OpenSearch Layanan.
Konektivitas jaringan:
Pastikan fungsi Lambda Anda memiliki konektivitas jaringan yang diperlukan untuk mengakses cluster. OpenSearch Untuk panduan tentang cara mengonfigurasi setelan virtual private cloud (VPC), lihat Meluncurkan domain OpenSearch Layanan Amazon Anda dalam VPC di dokumentasi Layanan. OpenSearch
Peran dan kebijakan IAM:
Buat peran IAM dengan izin yang diperlukan untuk fungsi Lambda Anda untuk mengakses OpenSearch klaster dan mengakses kredensil Anda yang disimpan di dalamnya. AWS Secrets Manager
Lampirkan kebijakan IAM yang sesuai ke peran, seperti
AWSLambdaBasicExecutionRolekebijakan dan izin tambahan apa pun yang diperlukan untuk berinteraksi. OpenSearchVerifikasi bahwa izin IAM yang diberikan ke fungsi Lambda Anda memungkinkannya menulis data ke cluster. OpenSearch Untuk informasi tentang mengelola izin IAM, lihat Mendefinisikan izin fungsi Lambda dengan peran eksekusi dalam dokumentasi Lambda.
Pengetahuan bahasa pemrograman:
Anda akan memerlukan pengetahuan dasar tentang Python (atau bahasa pemrograman pilihan Anda) untuk memahami dan memodifikasi kode sampel untuk fungsi Lambda dan ekstensi Lambda.
Lingkungan pengembangan:
Siapkan lingkungan pengembangan lokal dengan alat dan dependensi yang diperlukan untuk membangun dan menerapkan fungsi dan ekstensi Lambda.
AWS CLI atau AWS Management Console:
Instal dan konfigurasikan AWS Command Line Interface (AWS CLI) atau gunakan AWS Management Console dengan kredensil yang sesuai untuk berinteraksi dengan yang diperlukan. Layanan AWS
Pemantauan dan pencatatan:
Biasakan diri dengan pemantauan dan pencatatan praktik terbaik AWS, termasuk layanan seperti Amazon CloudWatch dan AWS CloudTrail untuk tujuan pemantauan dan audit.
Periksa CloudWatch Log untuk fungsi Lambda Anda untuk mengidentifikasi kesalahan atau pengecualian yang terkait dengan integrasi API Telemetri Lambda. Untuk panduan pemecahan masalah, lihat dokumentasi Lambda Telemetry API.
Arsitektur
Pola ini menggunakan OpenSearch Layanan untuk menyimpan log dan data telemetri yang dihasilkan oleh fungsi Lambda. Pendekatan ini memungkinkan Anda untuk dengan cepat mengalirkan log langsung ke OpenSearch klaster Anda, yang mengurangi latensi dan biaya yang terkait dengan penggunaan CloudWatch Log sebagai perantara.
catatanKode ekstensi Lambda Anda dapat mendorong telemetri ke OpenSearch Layanan, baik dengan langsung menggunakan OpenSearch API atau dengan menggunakan pustaka klien. OpenSearch |
|---|
Diagram alur kerja berikut menggambarkan alur kerja log untuk fungsi Lambda saat Anda menggunakan klaster sebagai OpenSearch titik akhir.

Arsitektur mencakup komponen-komponen ini:
Fungsi Lambda: Fungsi tanpa server yang menghasilkan log dan data telemetri selama eksekusi.
Ekstensi Lambda: Ekstensi berbasis Python yang menggunakan API Telemetri Lambda untuk berintegrasi langsung dengan cluster. OpenSearch Ekstensi ini berjalan bersama fungsi Lambda di lingkungan eksekusi yang sama.
Lambda Telemetry API: API yang memungkinkan ekstensi Lambda mengirim data telemetri, termasuk log, metrik, dan jejak, langsung ke alat pemantauan dan observabilitas pihak ketiga.
Kluster OpenSearch Layanan Amazon: OpenSearch Kluster terkelola yang di-host AWS. Cluster ini bertanggung jawab untuk menelan, menyimpan, dan mengindeks data log yang dialirkan dari fungsi Lambda melalui ekstensi Lambda.
Alur kerja terdiri dari langkah-langkah ini:
Fungsi Lambda dipanggil, dan menghasilkan log dan data telemetri selama pelaksanaannya.
Ekstensi Lambda berjalan di samping fungsi untuk menangkap log dan data telemetri dengan menggunakan Lambda Telemetry API.
Ekstensi Lambda membuat koneksi aman dengan kluster OpenSearch Layanan dan mengalirkan data log secara real time.
Kluster OpenSearch Layanan menyerap, mengindeks, dan menyimpan data log untuk membuatnya tersedia untuk pencarian, analisis, dan visualisasi melalui penggunaan alat seperti Kibana atau aplikasi lain yang kompatibel.
Dengan menghindari CloudWatch Log dan mengirimkan data log langsung ke OpenSearch cluster, solusi ini memberikan beberapa manfaat:
Streaming dan analisis log waktu nyata, memungkinkan pemecahan masalah yang lebih cepat dan peningkatan pengamatan.
Mengurangi latensi dan potensi pembatasan retensi yang terkait dengan CloudWatch Log.
Fleksibilitas untuk menyesuaikan ekstensi Lambda atau membuat ekstensi Anda sendiri untuk format keluaran tertentu atau pemrosesan tambahan.
Integrasi dengan kemampuan pencarian, analitik, dan visualisasi OpenSearch Layanan untuk analisis dan pemantauan log.
Bagian Epics memberikan step-by-step instruksi untuk menyiapkan ekstensi Lambda, mengonfigurasi fungsi Lambda, dan mengintegrasikan dengan kluster Layanan. OpenSearch Untuk pertimbangan keamanan, strategi pengoptimalan biaya, dan tips untuk memantau dan memecahkan masalah solusi, lihat bagian Praktik terbaik.
Alat
Layanan AWS
AWS Lambda
adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Lambda menjalankan kode Anda hanya saat diperlukan dan menskalakan secara otomatis, dari beberapa permintaan per hari hingga ribuan per detik. Amazon OpenSearch Service adalah layanan
terkelola penuh yang disediakan oleh AWS yang memudahkan untuk menyebarkan, mengoperasikan, dan menskalakan OpenSearch cluster di cloud. Ekstensi Lambda memperluas fungsionalitas fungsi Lambda Anda dengan menjalankan kode khusus di sampingnya. Anda dapat menggunakan ekstensi Lambda untuk mengintegrasikan Lambda dengan berbagai alat pemantauan, observabilitas, keamanan, dan tata kelola.
AWS Lambda API telemetri memungkinkan Anda menggunakan ekstensi untuk menangkap data pemantauan dan observabilitas yang disempurnakan langsung dari Lambda dan mengirimkannya ke tujuan pilihan Anda.
AWS CloudFormation
membantu Anda memodelkan dan mengatur AWS sumber daya sehingga Anda dapat menghabiskan lebih sedikit waktu untuk mengelola sumber daya tersebut dan lebih banyak waktu untuk berfokus pada aplikasi Anda.
Repositori kode
AWS Lambda Ekstensi
mencakup demo dan proyek sampel dari AWS dan AWS Mitra untuk membantu Anda memulai membangun ekstensi Anda sendiri. Contoh Integrasi Telemetri Lambda untuk menyediakan OpenSearch
contoh ekstensi Lambda yang menunjukkan cara mengirim log dari fungsi Lambda ke cluster. OpenSearch
Alat lainnya
OpenSearch
adalah mesin pencari dan analitik terdistribusi open-source yang menyediakan platform yang kuat untuk menelan, menyimpan, dan menganalisis volume data yang besar. Kibana adalah alat visualisasi dan eksplorasi data sumber terbuka yang dapat Anda gunakan. OpenSearch Perhatikan bahwa implementasi visualisasi dan analitik berada di luar cakupan pola ini. Untuk informasi selengkapnya, lihat dokumentasi Kibana dan sumber daya
lainnya.
Praktik terbaik
Saat Anda mengintegrasikan API Telemetri Lambda dengan OpenSearch, pertimbangkan praktik terbaik berikut.
Keamanan dan kontrol akses
Komunikasi aman: Enkripsi semua komunikasi antara fungsi Lambda Anda dan klaster dengan OpenSearch menggunakan HTTPS. Konfigurasikan SSL/TLS pengaturan yang diperlukan di ekstensi dan OpenSearch konfigurasi Lambda Anda.
Izin IAM:
Ekstensi berjalan di lingkungan eksekusi yang sama dengan fungsi Lambda, sehingga mereka mewarisi tingkat akses yang sama ke sumber daya seperti sistem file, jaringan, dan variabel lingkungan.
Berikan izin IAM minimum yang diperlukan ke fungsi Lambda Anda untuk mengakses API Telemetri Lambda dan menulis data ke cluster. OpenSearch Gunakan prinsip hak istimewa terkecil untuk membatasi ruang lingkup izin.
OpenSearch kontrol akses: Terapkan kontrol akses berbutir halus di OpenSearch klaster Anda untuk membatasi akses ke data sensitif. Gunakan fitur keamanan bawaan, seperti otentikasi pengguna, kontrol akses berbasis peran, dan izin tingkat indeks, di. OpenSearch
Ekstensi tepercaya: Selalu pasang ekstensi dari sumber tepercaya saja. Gunakan alat infrastruktur sebagai kode (IAc) seperti AWS CloudFormation untuk menyederhanakan proses melampirkan konfigurasi ekstensi yang sama, termasuk izin IAM, ke beberapa fungsi Lambda. Alat IAC juga menyediakan catatan audit ekstensi dan versi yang digunakan sebelumnya.
Penanganan data sensitif: Saat membuat ekstensi, hindari mencatat data sensitif. Sanitasi muatan dan metadata sebelum mencatat atau menyimpannya untuk tujuan audit.
Optimalisasi biaya
Pemantauan dan peringatan: Siapkan mekanisme pemantauan dan peringatan untuk melacak volume data yang dikirim OpenSearch dari fungsi Lambda Anda. Ini akan membantu Anda mengidentifikasi dan mengatasi potensi pembengkakan biaya.
Retensi data: Pertimbangkan dengan cermat periode retensi data yang sesuai untuk data telemetri Lambda Anda di. OpenSearch Periode retensi yang lebih lama dapat meningkatkan biaya penyimpanan, jadi seimbangkan kebutuhan observabilitas Anda dengan pengoptimalan biaya.
Kompresi dan pengindeksan: Aktifkan kompresi data dan optimalkan strategi OpenSearch pengindeksan Anda untuk mengurangi jejak penyimpanan data telemetri Lambda Anda.
Mengurangi ketergantungan pada CloudWatch: Dengan mengintegrasikan API Telemetri Lambda secara langsung dengan OpenSearch, Anda berpotensi mengurangi ketergantungan Anda pada CloudWatch Log, yang dapat menghasilkan penghematan biaya. Ini karena Lambda Telemetry API memungkinkan Anda untuk mengirim log langsung ke OpenSearch, yang melewati kebutuhan untuk menyimpan dan memproses data. CloudWatch
Skalabilitas dan keandalan
Pemrosesan asinkron: Gunakan pola pemrosesan asinkron, seperti Amazon Simple Queue Service (Amazon SQS) atau Amazon Kinesis, untuk memisahkan eksekusi fungsi Lambda dari konsumsi data. OpenSearch Ini membantu menjaga daya tanggap fungsi Lambda Anda dan meningkatkan keandalan sistem secara keseluruhan.
OpenSearch penskalaan klaster: Pantau kinerja dan pemanfaatan sumber daya OpenSearch klaster Anda, dan tingkatkan atau turunkan sesuai kebutuhan untuk menangani peningkatan volume data telemetri Lambda.
Failover dan pemulihan bencana: Menerapkan strategi pemulihan bencana yang kuat untuk OpenSearch klaster Anda, termasuk pencadangan reguler dan kemampuan untuk memulihkan data dengan cepat jika terjadi kegagalan.
Observabilitas dan pemantauan
Dasbor dan visualisasi: Gunakan Kibana atau alat dasbor lainnya untuk membuat dasbor dan visualisasi khusus yang memberikan wawasan tentang kinerja dan kesehatan fungsi Lambda Anda berdasarkan data telemetri di. OpenSearch
Peringatan dan pemberitahuan: Siapkan peringatan dan notifikasi untuk secara proaktif memantau anomali, kesalahan, atau masalah kinerja di fungsi Lambda Anda. Integrasikan peringatan dan pemberitahuan ini dengan proses manajemen insiden yang ada.
Penelusuran dan korelasi: Pastikan data telemetri Lambda Anda menyertakan informasi penelusuran yang relevan, seperti permintaan IDs atau korelasi IDs, untuk memungkinkan end-to-end pengamatan dan pemecahan masalah di seluruh aplikasi tanpa server terdistribusi Anda.
Dengan mengikuti praktik terbaik ini, Anda dapat memastikan bahwa integrasi API Telemetri Lambda Anda aman, hemat biaya, dan dapat diskalakan, serta memberikan pengamatan komprehensif untuk aplikasi tanpa server Anda. OpenSearch
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Unduh kode sumbernya. | Unduh ekstensi sampel dari repositori AWS Lambda Extensions | Pengembang aplikasi, arsitek Cloud |
Arahkan ke | Repositori AWS Lambda Ekstensi | Pengembang aplikasi, arsitek Cloud |
Tambahkan izin untuk menjalankan titik akhir ekstensi. | Jalankan perintah berikut untuk membuat endpoint ekstensi dapat dieksekusi:
| Pengembang aplikasi, arsitek Cloud |
Instal dependensi ekstensi secara lokal. | Jalankan perintah berikut untuk menginstal dependensi lokal untuk kode Python:
Dependensi ini akan dipasang bersama dengan kode ekstensi. | Pengembang aplikasi, arsitek Cloud |
Buat paket.zip untuk ekstensi untuk menerapkannya sebagai lapisan. | File ekstensi.zip harus berisi direktori root yang disebut Buat paket.zip untuk ekstensi:
| Pengembang aplikasi, arsitek Cloud |
Terapkan ekstensi sebagai lapisan Lambda. | Publikasikan layer dengan menggunakan file ekstensi.zip Anda dan perintah berikut:
| Pengembang aplikasi, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan lapisan ke fungsi Anda. |
| Pengembang aplikasi, arsitek Cloud |
Mengatur variabel lingkungan untuk fungsi. | Pada halaman fungsi, pilih tab Konfigurasi dan tambahkan variabel lingkungan berikut ke fungsi Anda:
| Pengembang aplikasi, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan pernyataan logging ke fungsi Anda. | Tambahkan pernyataan logging ke fungsi Anda dengan menggunakan salah satu mekanisme logging bawaan atau modul logging pilihan Anda. Berikut adalah contoh pesan logging dengan Python:
| Pengembang aplikasi, arsitek Cloud |
Uji fungsi Anda. |
Anda harus melihat Executing function: berhasil jika semuanya berfungsi dengan baik. | Pengembang aplikasi, arsitek Cloud |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kueri indeks Anda. | Di OpenSearch, jalankan perintah berikut untuk menanyakan indeks Anda:
Log Anda harus ditampilkan dalam hasil kueri. | Arsitek awan |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Masalah konektivitas |
|
Kesalahan konsumsi data |
|
Sumber daya terkait
Contoh Integrasi Telemetri Lambda
untuk (repositori) OpenSearch GitHub Menambah fungsi Lambda menggunakan ekstensi Lambda (dokumentasi Lambda)
Memperkenalkan API AWS Lambda Telemetri
(AWS posting blog) Mengintegrasikan API AWS Lambda Telemetri dengan Prometheus
dan (posting blog) OpenSearch AWS
Informasi tambahan
Mengubah struktur log
Ekstensi mengirimkan log sebagai dokumen bersarang secara OpenSearch default. Ini memungkinkan Anda melakukan kueri bersarang untuk mengambil nilai kolom individual.
Jika keluaran log default tidak memenuhi kebutuhan spesifik Anda, Anda dapat menyesuaikannya dengan memodifikasi kode sumber ekstensi Lambda yang disediakan oleh. AWS AWS mendorong pelanggan untuk menyesuaikan output agar sesuai dengan kebutuhan bisnis mereka. Untuk mengubah output log, cari dispatch_to_opensearch fungsi dalam telemetry_dispatcher.py file dalam kode sumber ekstensi dan buat perubahan yang diperlukan.