Skenario 2: Data hampir waktu nyata untuk tim keamanan - Solusi Data Pengaliran di AWS dengan Amazon Kinesis

Skenario 2: Data hampir waktu nyata untuk tim keamanan

Perusahaan ABC2Badge menyediakan sensor dan lencana untuk acara korporasi atau acara berskala besar seperti AWS re:Invent. Pengguna akan mendaftar ke acara tersebut dan menerima lencana unik yang akan dideteksi oleh sensor di seluruh kampus. Ketika pengguna melewati sebuah sensor, informasi anonim mereka akan dicatat ke dalam basis data relasional.

Dalam acara mendatang, karena tingginya volume peserta, ABC2Badge telah diminta oleh tim keamanan acara ini untuk mengumpulkan data untuk area kampus yang paling terkonsentrasi setiap 15 menit. Data ini akan memberi tim keamanan cukup waktu untuk bereaksi dan mengerahkan personel keamanan secara proporsional ke area yang terkonsentrasi. Mengingat kebutuhan baru dari tim keamanan ini dan kurangnya pengalaman membangun solusi pengaliran, untuk memproses data secara hampir waktu nyata, ABC2Badge mencari solusi yang sederhana namun terukur dan dapat diandalkan.

Solusi gudang data mereka saat ini adalah Amazon Redshift. Saat meninjau fitur layanan Amazon Kinesis, mereka mendapati bahwa Amazon Kinesis Data Firehose dapat menerima aliran catatan data, melakukan batch terhadap catatan berdasarkan ukuran buffer dan/atau interval waktu, dan memasukkannya ke dalam Amazon Redshift. Mereka membuat aliran pengiriman Kinesis Data Firehose dan mengonfigurasinya sehingga layanan ini akan menyalin data ke tabel Amazon Redshift mereka setiap lima menit. Sebagai bagian dari solusi baru ini, mereka menggunakan Amazon Kinesis Agent di server mereka. Setiap lima menit, Kinesis Data Firehose memuat data ke Amazon Redshift, sehingga mendukung tim Kecerdasan Bisnis (BI) untuk melakukan analisisnya dan mengirim data ke tim keamanan setiap 15 menit.

Solusi baru menggunakan Amazon Kinesis Data Firehose

Solusi baru menggunakan Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose adalah cara paling mudah untuk memuat data pengaliran ke AWS. Layanan ini dapat menangkap, mentransformasikan, dan memuat data pengaliran ke Amazon Kinesis Data Analytics, Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service), dan Splunk. Selain itu, Kinesis Data Firehose dapat memuat data pengaliran ke titik akhir HTTP atau titik akhir HTTP kustom yang dimiliki oleh penyedia layanan pihak ketiga yang didukung.

Kinesis Data Firehose memungkinkan analitik hampir waktu nyata dengan alat Kecerdasan Bisnis (BI) yang ada dan dasbor yang Anda gunakan saat ini. Ini adalah layanan nirserver terkelola penuh yang secara otomatis diskalakan agar sesuai dengan throughput data Anda dan tidak memerlukan administrasi terus-menerus. Kinesis Data Firehose dapat melakukan batch, kompresi, dan enkripsi data sebelum memuatnya, sehingga meminimalkan jumlah penyimpanan yang digunakan di tujuan dan meningkatkan keamanan. Layanan ini juga dapat mentransformasikan data sumber menggunakan AWS Lambda dan mengirimkan data yang ditransformasi ke tujuan. Anda mengonfigurasi produsen data Anda untuk mengirim data ke Kinesis Data Firehose, yang akan mengirimkan data secara otomatis ke tujuan yang telah Anda tetapkan.

Mengirim data ke aliran pengiriman Firehose

Untuk mengirim data ke aliran pengiriman Anda, ada beberapa opsi. AWS menawarkan SDK untuk banyak bahasa pemrograman populer, yang masing-masing menyediakan API untuk Amazon Kinesis Data Firehose. AWS memiliki utilitas untuk membantu mengirim data ke aliran pengiriman Anda. Kinesis Data Firehose telah terintegrasi dengan layanan AWS lain untuk mengirim data langsung dari layanan tersebut ke dalam aliran pengiriman Anda.

Menggunakan agen Amazon Kinesis

Agen Amazon Kinesis adalah aplikasi perangkat lunak mandiri yang terus memantau serangkaian file log agar data baru dikirim ke aliran pengiriman. Agen ini secara otomatis menangani rotasi file, melakukan checkpointing, mencoba kembali jika ada kegagalan, dan mengirimkan metrik Amazon CloudWatch untuk memantau dan mengatasi masalah aliran pengiriman. Konfigurasi tambahan, seperti pra-pemrosesan data, pemantauan sejumlah direktori file, dan penulisan ke sejumlah aliran pengiriman, dapat diterapkan pada agen ini.

Agen ini dapat diinstal pada server berbasis Linux atau Windows seperti server web, server log, dan server basis data. Setelah agen ini terinstal, Anda cukup menentukan file log yang akan dipantau dan aliran pengiriman yang akan dikirimkan. Agen ini akan mengirim data baru ke aliran pengiriman secara tahan lama dan andal.

Menggunakan API dengan SDK AWS dan layanan AWS sebagai sumber

API Kinesis Data Firehose menawarkan dua operasi untuk mengirim data ke aliran pengiriman Anda. PutRecord mengirimkan satu catatan data dalam satu panggilan. PutRecordBatch dapat mengirim sejumlah catatan data dalam satu panggilan, dan dapat mencapai throughput yang lebih tinggi per produsen. Dalam setiap metode, Anda harus menentukan nama aliran pengiriman dan catatan data, atau array catatan data, ketika menggunakan metode ini. Untuk informasi selengkapnya dan kode sampel untuk operasi API Kinesis Data Firehose, lihat Menulis ke Aliran Pengiriman Firehose Menggunakan SDK AWS.

Kinesis Data Firehose juga berjalan dengan Kinesis Data Streams, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service (Amazon SNS), Amazon API Gateway, dan AWS IoT. Anda dapat mengirim aliran data, log, peristiwa, dan data IoT Anda secara terskala dan andal ke tujuan Kinesis Data Firehose.

Memproses data sebelum pengiriman ke tujuan

Dalam beberapa skenario, Anda sebaiknya mentransformasikan atau meningkatkan data pengaliran Anda sebelum dikirim ke tujuannya. Misalnya, produsen data mungkin mengirim teks yang tidak terstruktur di setiap catatan data, dan Anda perlu mentransformasikannya menjadi JSON sebelum mengirimkannya ke OpenSearch Service. Atau, Anda sebaiknya mengonversi data JSON menjadi format file kolom seperti Apache Parquet atau Apache ORC sebelum menyimpan data di Amazon S3.

Kinesis Data Firehose memiliki kemampuan konversi format data bawaan. Menggunakan kemampuan ini, Anda dapat dengan mudah mengonversi aliran data JSON Anda ke format file Apache Parquet atau Apache ORC.

Aliran transformasi data

Untuk memungkinkantransformasi data pengaliran, Kinesis Data Firehose menggunakan fungsi Lambda yang Anda buat untuk mentransformasikan data Anda. Kinesis Data Firehose melakukan buffer terhadap data yang masuk menjadi ukuran buffer tertentu untuk fungsi, lalu memanggil fungsi Lambda yang ditentukan secara asinkron. Data yang ditransformasi dikirim dari Lambda ke Kinesis Data Firehose, dan Kinesis Data Firehose mengirimkan data ke tujuan.

Konversi format data

Anda juga dapat mengaktifkan konversi format data Kinesis Data Firehose, yang akan mengonversi aliran data JSON Anda ke Apache Parquet atau Apache ORC. Fitur ini hanya dapat mengonversi JSON ke Apache Parquet atau Apache ORC. Jika Anda memiliki data yang ada di CSV, Anda dapat mentransformasikan data tersebut melalui fungsi Lambda ke JSON, lalu menerapkan konversi format data.

Pengiriman data

Sebagai aliran pengiriman hampir waktu nyata, Kinesis Data Firehose melakukan buffer terhadap data yang masuk. Setelah ambang batas buffering aliran pengiriman tercapai, data Anda dikirimkan ke tujuan yang telah Anda konfigurasi. Ada beberapa perbedaan dalam bagaimana Kinesis Data Firehose memberikan data ke setiap tujuan, yang ditinjau dalam laporan ini di bagian berikut.

Amazon S3

Amazon S3 adalah penyimpanan objek dengan antarmuka layanan web sederhana untuk menyimpan dan mengambil jumlah data dari mana pun di web. Produk ini dirancang untuk menyediakan ketahanan 99,999999999% dan menskalakan melebihi triliunan objek di seluruh dunia.

Pengiriman data ke Amazon S3

Untuk pengiriman data ke Amazon S3, Kinesis Data Firehose menggabungkan sejumlah catatan masuk berdasarkan konfigurasi buffering aliran pengiriman Anda, lalu mengirimkannya ke Amazon S3 sebagai objek S3. Frekuensi pengiriman data ke S3 ditentukan oleh ukuran buffer (1 MB sampai 128 MB) atau interval buffer (60 detik sampai 900 detik) di S3, mana yang tercapai lebih dulu.

Pengiriman data ke bucket S3 Anda mungkin gagal karena berbagai alasan. Misalnya, bucket mungkin sudah tidak ada lagi, atau AWS Identity and Access Management (IAM) role yang diambil Kinesis Data Firehose mungkin tidak memiliki akses ke bucket. Dalam kondisi ini, Kinesis Data Firehose terus mencoba kembali hingga 24 jam sampai pengiriman berhasil. Waktu penyimpanan data maksimum Kinesis Data Firehose adalah 24 jam. Jika pengiriman data gagal selama lebih dari 24 jam, data Anda hilang.

Amazon Redshift

Amazon Redshift adalah gudang data cepat dan terkelola penuh yang memudahkan dan menghemat biaya dalam menganalisis semua data Anda menggunakan SQL standar dan alat-alat BI Anda yang sudah ada. Layanan ini memungkinkan Anda menjalankan kueri analitik kompleks pada data terstruktur berskala petabita menggunakan optimasi kueri canggih, penyimpanan kolom pada disk lokal berperforma tinggi, dan pemrosesan kueri paralel secara masif.

Pengiriman data ke Amazon Redshift

Untuk pengiriman data ke Amazon Redshift, Kinesis Data Firehose pertama kali mengirimkan data masuk ke bucket S3 Anda dalam format yang dijelaskan sebelumnya. Kinesis Data Firehose kemudian mengeluarkan perintah COPY Amazon Redshift untuk memuat data dari bucket S3 ke klaster Amazon Redshift Anda.

Frekuensi operasi COPY data dari S3 ke Amazon Redshift ditentukan berdasarkan seberapa cepat klaster Amazon Redshift Anda dapat menyelesaikan perintah COPY. Untuk tujuan Amazon Redshift, Anda dapat menentukan durasi percobaan ulang (0-7200 detik) saat membuat aliran pengiriman untuk menangani kegagalan pengiriman data. Kinesis Data Firehose mencoba ulang selama durasi waktu yang ditentukan dan melewati batch objek S3 tersebut jika tidak berhasil. Informasi objek yang dilewati dikirimkan ke bucket S3 Anda sebagai file manifes dalam folder “errors/”, yang dapat Anda gunakan untuk backfill manual.

Berikut ini adalah diagram arsitektur aliran data Kinesis Data Firehose ke Amazon Redshift. Meskipun aliran data ini unik untuk Amazon Redshift, Kinesis Data Firehose mengikuti pola serupa untuk target tujuan lainnya.

Aliran data dari Kinesis Data Firehose ke Amazon Redshift

Aliran data dari Kinesis Data Firehose ke Amazon Redshift

Amazon OpenSearch Service (OpenSearch Service)

OpenSearch Service adalah layanan terkelola penuh yang memberikan API OpenSearch yang mudah digunakan dan kemampuan waktu nyata bersama dengan ketersediaan, skalabilitas, dan keamanan yang diperlukan oleh beban kerja produksi. OpenSearch Service memudahkan untuk men-deploy, mengoperasikan, dan menskalakan OpenSearch untuk analitik log, pencarian teks lengkap, dan pemantauan aplikasi.

Pengiriman data ke OpenSearch Service

Untuk pengiriman data ke OpenSearch Service, Kinesis Data Firehose melakukan buffer terhadap data masuk berdasarkan konfigurasi buffering dari aliran pengiriman Anda, lalu menghasilkan permintaan OpenSearch massal untuk mengindeks sejumlah catatan ke klaster OpenSearch Anda. Frekuensi pengiriman data ke OpenSearch Service ditentukan oleh nilai ukuran buffer (1 MB sampai 100 MB) dan interval buffer (60 detik sampai 900 detik) di OpenSearch, mana yang tercapai lebih dulu.

Untuk tujuan OpenSearch Service, Anda dapat menentukan durasi percobaan ulang (0-7200 detik) saat membuat aliran pengiriman. Kinesis Data Firehose mencoba ulang selama durasi waktu yang ditentukan, lalu melewati permintaan indeks tersebut. Dokumen yang dilewati dikirim ke bucket S3 Anda di folder elasticsearch_failed/, yang dapat Anda gunakan untuk backfill manual.

Amazon Kinesis Data Firehose dapat merotasi indeks OpenSearch Service Anda berdasarkan durasi waktu. Tergantung pada opsi rotasi yang Anda pilih (NoRotation, OneHour, OneDay, OneWeek, atau OneMonth), Kinesis Data Firehose menambahkan sebagian dari stempel waktu kedatangan Waktu Universal Terkoordinasi (UTC) ke nama indeks yang Anda tentukan.

Titik akhir HTTP kustom atau penyedia layanan pihak ketiga yang didukung

Kinesis Data Firehose dapat mengirim data baik ke titik akhir HTTP Kustom atau penyedia pihak ketiga yang didukung seperti Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk, dan Sumo Logic.

Titik akhir HTTP kustom atau penyedia layanan pihak ketiga yang didukung

Agar Kinesis Data Firehose berhasil mengirimkan data ke titik akhir HTTP kustom, titik akhir ini harus menerima permintaan dan mengirim respons menggunakan format permintaan dan respons Kinesis Data Firehose tertentu.

Saat mengirimkan data ke titik akhir HTTP yang dimiliki oleh penyedia layanan pihak ketiga yang didukung, Anda dapat menggunakan layanan AWS Lambda terintegrasi untuk membuat fungsi guna mentransformasikan catatan masuk ke format yang sesuai dengan format yang diharapkan oleh integrasi penyedia layanan.

Untuk frekuensi pengiriman data, setiap penyedia layanan memiliki ukuran buffer yang direkomendasikan. Hubungi penyedia layanan Anda untuk informasi lebih lanjut tentang ukuran buffer yang direkomendasikan. Untuk penanganan kegagalan pengiriman data, Kinesis Data Firehose membuat koneksi dengan titik akhir HTTP terlebih dahulu dengan menunggu respons dari tujuan. Kinesis Data Firehose terus membuat koneksi, sampai durasi percobaan ulang berakhir. Setelah itu, Kinesis Data Firehose menganggapnya sebagai kegagalan pengiriman data dan mencadangkan data ke bucket S3 Anda.

Ringkasan

Kinesis Data Firehose dapat terus-menerus mengirimkan data pengaliran Anda ke tujuan yang didukung. Layanan ini adalah solusi terkelola penuh, sehingga membutuhkan sedikit atau tidak ada pengembangan. Untuk Perusahaan ABC2Badge, menggunakan Kinesis Data Firehose adalah pilihan alami. Mereka sudah menggunakan Amazon Redshift sebagai solusi gudang data mereka. Karena sumber data mereka terus menulis ke log transaksi, mereka dapat memanfaatkan Amazon Kinesis Agent untuk melakukan pengaliran data tersebut tanpa menulis kode tambahan apa pun. Sekarang perusahaan ABC2Badge telah membuat aliran catatan sensor dan menerima catatan ini melalui Kinesis Data Firehose. Mereka dapat menggunakan hal ini sebagai dasar untuk kasus penggunaan tim keamanan.