Kirim data telemetri dari AWS Lambda ke OpenSearch untuk analitik dan visualisasi waktu nyata - AWS Prescriptive Guidance

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, yang merupakan mesin pencari dan analitik terdistribusi sumber terbuka. OpenSearch menawarkan platform yang kuat dan terukur untuk menelan, menyimpan, dan menganalisis volume data yang besar, yang menjadikannya pilihan ideal untuk data telemetri Lambda. Secara khusus, pola ini menunjukkan cara mengirim log dari fungsi Lambda yang ditulis dengan Python langsung ke cluster dengan menggunakan OpenSearch ekstensi Lambda yang disediakan oleh. AWS Solusi ini fleksibel dan dapat disesuaikan, sehingga Anda dapat membuat ekstensi Lambda Anda sendiri atau mengubah kode sumber sampel untuk mengubah format output sesuai keinginan.

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:

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 AWSLambdaBasicExecutionRole kebijakan dan izin tambahan apa pun yang diperlukan untuk berinteraksi. OpenSearch

  • Verifikasi 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.

catatan

Kode ekstensi Lambda Anda dapat mendorong telemetri ke OpenSearch Layanan, baik dengan langsung menggunakan OpenSearch API atau dengan menggunakan pustaka klien. OpenSearch Ekstensi Lambda dapat menggunakan operasi massal yang didukung oleh OpenSearch API untuk menggabungkan peristiwa telemetri bersama-sama dan mengirimkannya ke OpenSearch Layanan dalam satu permintaan.

Diagram alur kerja berikut menggambarkan alur kerja log untuk fungsi Lambda saat Anda menggunakan klaster sebagai OpenSearch titik akhir.

Alur kerja untuk mengirim data telemetri ke cluster. OpenSearch

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:

  1. Fungsi Lambda dipanggil, dan menghasilkan log dan data telemetri selama pelaksanaannya.

  2. Ekstensi Lambda berjalan di samping fungsi untuk menangkap log dan data telemetri dengan menggunakan Lambda Telemetry API.

  3. Ekstensi Lambda membuat koneksi aman dengan kluster OpenSearch Layanan dan mengalirkan data log secara real time.

  4. 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 CloudFormationmembantu 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

Alat lainnya

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

TugasDeskripsiKeterampilan yang dibutuhkan

Unduh kode sumbernya.

Unduh ekstensi sampel dari repositori AWS Lambda Extensions.

Pengembang aplikasi, arsitek Cloud

Arahkan ke python-example-telemetry-opensearch-extension folder.

Repositori AWS Lambda Ekstensi yang Anda unduh berisi banyak contoh untuk beberapa kasus penggunaan dan runtime bahasa. Arahkan ke folder python-example-telemetry-opensearch-extension untuk menggunakan ekstensi OpenSearch Python, yang mengirimkan log ke. OpenSearch

Pengembang aplikasi, arsitek Cloud

Tambahkan izin untuk menjalankan titik akhir ekstensi.

Jalankan perintah berikut untuk membuat endpoint ekstensi dapat dieksekusi:

chmod +x python-example-telemetry-opensearch-extension/extension.py
Pengembang aplikasi, arsitek Cloud

Instal dependensi ekstensi secara lokal.

Jalankan perintah berikut untuk menginstal dependensi lokal untuk kode Python:

pip3 install -r python-example-telemetry-opensearch-extension/requirements.txt -t ./python-example-telemetry-opensearch-extension/

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 disebutextensions/, di mana ekstensi yang dapat dieksekusi berada, dan direktori root lain disebutpython-example-telemetry-opensearch-extension/, di mana logika inti ekstensi dan dependensinya berada.

Buat paket.zip untuk ekstensi:

chmod +x extensions/python-example-telemetry-opensearch-extension zip -r extension.zip extensions python-example-telemetry-opensearch-extension
Pengembang aplikasi, arsitek Cloud

Terapkan ekstensi sebagai lapisan Lambda.

Publikasikan layer dengan menggunakan file ekstensi.zip Anda dan perintah berikut:

aws lambda publish-layer-version \ --layer-name "python-example-telemetry-opensearch-extension" \ --zip-file "fileb://extension.zip"
Pengembang aplikasi, arsitek Cloud
TugasDeskripsiKeterampilan yang dibutuhkan

Tambahkan lapisan ke fungsi Anda.

  1. Masuk ke AWS Management Console dan buka halaman Fungsi AWS Lambda konsol.

  2. Pilih fungsi Anda.

  3. Di bawah Lapisan, pilih Tambah lapisan.

  4. Di bawah Pilih layer, pilih Custom layer sebagai sumber layer dan tambahkan layer Anda.

Untuk informasi selengkapnya tentang menambahkan layer ke fungsi Lambda Anda, lihat dokumentasi Lambda.

Pengembang aplikasi, arsitek Cloud

Mengatur variabel lingkungan untuk fungsi.

Pada halaman fungsi, pilih tab Konfigurasi dan tambahkan variabel lingkungan berikut ke fungsi Anda:

  • URL— URI OpenSearch titik akhir Anda di mana log Anda akan dikirim.

  • AUTH_SECRET— ARN OpenSearch kredensil Anda disimpan di. AWS Secrets Manager Ini harus disimpan sebagai pasangan kunci-nilai dan memiliki dua kunci: username dan. password

  • PLATFORM_INDEX,FUNCTION_INDEX, dan EXTENSION_INDEX — Nama-nama indeks yang akan menyimpan data telemetri, log fungsi, dan log ekstensi Anda. Pastikan mereka mematuhi kriteria penamaan yang tepat. Jika tidak, indeks Anda tidak akan dibuat.

  • DISPATCH_MIN_BATCH_SIZE— Jumlah peristiwa log yang ingin Anda batch. Namun, ketika fungsi dimatikan, log Anda akan dikirim terlepas dari pengaturan ini.

Pengembang aplikasi, arsitek Cloud
TugasDeskripsiKeterampilan 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:

print("Your Log Message Here") logger = logging.getLogger(__name__) logger.info("Test Info Log.") logger.error("Test Error Log.")
Pengembang aplikasi, arsitek Cloud

Uji fungsi Anda.

  1. Di halaman fungsi, pilih tab Uji.

  2. Buat acara pengujian untuk fungsi Anda dan jalankan pengujian. Untuk informasi selengkapnya, lihat Menguji fungsi Lambda di konsol dalam dokumentasi Lambda.

Anda harus melihat Executing function: berhasil jika semuanya berfungsi dengan baik.

Pengembang aplikasi, arsitek Cloud
TugasDeskripsiKeterampilan yang dibutuhkan

Kueri indeks Anda.

Di OpenSearch, jalankan perintah berikut untuk menanyakan indeks Anda:

SELECT * FROM index-name

Log Anda harus ditampilkan dalam hasil kueri.

Arsitek awan

Pemecahan Masalah

IsuSolusi

Masalah konektivitas

  • Konfirmasikan bahwa fungsi Lambda Anda memiliki konektivitas jaringan yang diperlukan untuk mengakses cluster. OpenSearch Lihat dokumentasi OpenSearch Layanan untuk panduan tentang mengonfigurasi setelan VPC.

  • Verifikasi bahwa izin IAM yang diberikan ke fungsi Lambda Anda memungkinkannya menulis data ke cluster. OpenSearch Tinjau dokumentasi Lambda untuk informasi tentang mengelola izin IAM.

Kesalahan konsumsi data

  • Periksa CloudWatch Log untuk fungsi Lambda Anda untuk mengidentifikasi kesalahan atau pengecualian yang terkait dengan integrasi API Telemetri Lambda. Lihat dokumentasi API Telemetri Lambda untuk panduan pemecahan masalah.

  • Verifikasi bahwa OpenSearch cluster dikonfigurasi dengan benar dan memiliki pemetaan dan pengaturan indeks yang diperlukan untuk menyerap data telemetri Lambda. Konsultasikan OpenSearch dokumentasi untuk informasi lebih lanjut.

Sumber daya terkait

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.