Mengirimkan aliran Amazon Data Firehose ke Apache Iceberg Tables di Amazon S3 sedang dalam pratinjau dan dapat berubah sewaktu-waktu.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Agen Kinesis
Agen Amazon Kinesis adalah aplikasi perangkat lunak Java mandiri yang berfungsi sebagai implementasi referensi untuk menunjukkan bagaimana Anda dapat mengumpulkan dan mengirim data ke Firehose. Agen terus memantau sekumpulan file dan mengirimkan data baru ke aliran Firehose Anda. Agen menunjukkan bagaimana Anda dapat menangani rotasi file, checkpointing, dan coba lagi setelah kegagalan. Ini menunjukkan bagaimana Anda dapat mengirimkan data Anda dengan cara yang andal, tepat waktu, dan sederhana. Ini juga menunjukkan bagaimana Anda dapat memancarkan CloudWatch metrik untuk memantau dan memecahkan masalah proses streaming dengan lebih baik. Untuk mempelajari lebih lanjut, awslabs/ amazon-kinesis-agent
Secara default, catatan diurai dari setiap file berdasarkan karakter baris baru ('\n'
). Namun, agen juga dapat dikonfigurasi untuk mengurai catatan multi-baris (lihat Pengaturan konfigurasi agen).
Anda dapat menginstal agen di lingkungan server berbasis Linux seperti server web, server log, dan server basis data. Setelah menginstal agen, konfigurasikan dengan menentukan file yang akan dipantau dan aliran Firehose untuk data. Setelah agen dikonfigurasi, agen akan mengumpulkan data dari file dan mengirimkannya dengan andal ke aliran Firehose.
Topik
-
Sistem operasi Anda harus Amazon Linux, atau Red Hat Enterprise Linux versi 7 atau yang lebih baru.
-
Agen versi 2.0.0 atau yang lebih baru berjalan menggunakan JRE versi 1.8 atau yang lebih baru. Agen versi 1.1.x berjalan menggunakan JRE 1.7 atau yang lebih baru.
-
Jika Anda menggunakan Amazon EC2 untuk menjalankan agen Anda, luncurkan EC2 instans Anda.
-
IAMPeran atau AWS kredensil yang Anda tentukan harus memiliki izin untuk menjalankan PutRecordBatchoperasi Amazon Data Firehose agar agen dapat mengirim data ke aliran Firehose Anda. Jika Anda mengaktifkan CloudWatch pemantauan untuk agen, izin untuk melakukan CloudWatch PutMetricDataoperasi juga diperlukan. Untuk informasi selengkapnya, lihat Mengontrol akses dengan Amazon Data FirehosePantau kesehatan Agen Kinesis, dan Otentikasi dan Kontrol Akses untuk Amazon CloudWatch.
Kelola AWS kredensyal Anda menggunakan salah satu metode berikut:
-
Buat penyedia kredensial khusus. Untuk detailnya, lihat Buat penyedia kredensi khusus.
-
Tentukan IAM peran saat Anda meluncurkan EC2 instans Anda.
-
Tentukan AWS kredensil saat Anda mengonfigurasi agen (lihat entri untuk
awsAccessKeyId
danawsSecretAccessKey
di tabel konfigurasi di bawah). Pengaturan konfigurasi agen -
Edit
/etc/sysconfig/aws-kinesis-agent
untuk menentukan AWS Region dan kunci AWS akses Anda. -
Jika EC2 instans Anda berada di AWS akun lain, buat IAM peran untuk menyediakan akses ke layanan Amazon Data Firehose. Tentukan peran tersebut saat Anda mengonfigurasi agen (lihat assumeRoleARNdan assumeRoleExternalId). Gunakan salah satu metode sebelumnya untuk menentukan AWS kredensi pengguna di akun lain yang memiliki izin untuk mengambil peran ini.
Anda dapat membuat penyedia kredensial khusus dan memberikan nama kelas dan jalur jarnya ke agen Kinesis dalam pengaturan konfigurasi berikut: userDefinedCredentialsProvider.classname
dan userDefinedCredentialsProvider.location
. Untuk deskripsi dari dua pengaturan konfigurasi ini, lihat Pengaturan konfigurasi agen.
Untuk membuat penyedia kredensial khusus, tentukan kelas yang mengimplementasikan antarmuka AWS CredentialsProvider
, seperti yang ada di contoh berikut.
import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; public class
YourClassName
implements AWSCredentialsProvider { publicYourClassName
() { } public AWSCredentials getCredentials() { return new BasicAWSCredentials("key1
", "key2
"); } public void refresh() { } }
Kelas Anda harus memiliki konstruktor yang tidak mengambil argumen.
AWS memanggil metode penyegaran secara berkala untuk mendapatkan kredensyal yang diperbarui. Jika Anda ingin penyedia kredensial Anda memberikan kredensial yang berbeda sepanjang masa pakainya, sertakan kode untuk menyegarkan kredensial dalam metode ini. Atau, Anda dapat membiarkan metode ini kosong jika Anda ingin penyedia kredensial yang menyediakan kredensial statis (tidak berubah).
Pertama-tama, hubungkan ke instans Anda. Untuk informasi selengkapnya, lihat Connect to Your Instance di Panduan EC2 Pengguna Amazon. Jika Anda mengalami masalah saat menyambung, lihat Pemecahan Masalah Menghubungkan ke Instans Anda di EC2Panduan Pengguna Amazon.
Selanjutnya, instal agen menggunakan salah satu metode berikut.
-
Untuk mengatur agen dari repositori Amazon Linux
Metode ini hanya berfungsi untuk instans Amazon Linux. Gunakan perintah berikut:
sudo yum install –y aws-kinesis-agent
Agent v 2.0.0 atau yang lebih baru diinstal pada komputer dengan sistem operasi Amazon Linux 2 ()AL2. Versi agen ini membutuhkan Java versi 1.8 atau yang lebih baru. Jika versi Java yang diperlukan belum ada, proses instalasi agen akan menginstalnya. Untuk informasi lebih lanjut tentang Amazon Linux 2 lihat https://aws.amazon.com/amazon-linux-2/
. -
Untuk mengatur agen dari repositori Amazon S3
Metode ini berfungsi untuk Red Hat Enterprise Linux, serta instans Amazon Linux 2 karena metode ini menginstal agen dari repositori yang tersedia untuk umum. Gunakan perintah berikut untuk mengunduh dan menginstal versi terbaru dari versi agen 2.x.x:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
Untuk menginstal versi tertentu dari agen, tentukan nomor versi dalam perintah. Sebagai contoh, perintah berikut menginstal agen v 2.0.1.
sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm
Jika Anda memiliki Java 1.7 dan tidak ingin meng-upgrade-nya, Anda dapat mengunduh agen versi 1.x.x, yang kompatibel dengan Java 1.7. Misalnya, untuk mengunduh agen v1.1.6, Anda dapat menggunakan perintah berikut:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm
Agen v1.x.x terbaru dapat diunduh dengan menggunakan perintah berikut:
sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
-
Untuk mengatur agen dari GitHub repo
-
Pertama, pastikan bahwa Anda menginstal versi Java yang diperlukan, tergantung pada versi agen.
-
Unduh agen dari amazon-kinesis-agent GitHub awslabs/repo
. -
Instal agen dengan menavigasi ke direktori unduhan dan menjalankan perintah berikut:
sudo ./setup --install
-
-
Untuk mengatur agen dalam wadah Docker
Agen Kinesis dapat dijalankan dalam wadah juga melalui basis wadah amazonlinux. Gunakan Dockerfile berikut dan kemudian jalankan.
docker build
FROM amazonlinux RUN yum install -y aws-kinesis-agent which findutils COPY agent.json /etc/aws-kinesis/agent.json CMD ["start-aws-kinesis-agent"]
Untuk mengonfigurasi dan memulai agen
-
Buka dan edit file konfigurasi (sebagai pengguna super jika menggunakan izin akses file default):
/etc/aws-kinesis/agent.json
Dalam file konfigurasi ini, tentukan file (
"filePattern"
) dari mana agen mengumpulkan data, dan nama Firehose stream"deliveryStream"
() tempat agen mengirimkan data. Nama file merupakan pola, dan agen mengenali rotasi file. Anda dapat memutar file atau membuat file baru satu kali per detik. Agen menggunakan stempel waktu pembuatan file untuk menentukan file mana yang akan dilacak dan diekor ke aliran Firehose Anda. Membuat file baru atau memutar file lebih sering dari satu kali per detik membuat agen tidak dapat membedakan file-file tersebut dengan benar.{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "yourdeliverystream
" } ] }AWS Wilayah default adalah
us-east-1
. Jika Anda menggunakan Wilayah yang berbeda, tambahkan pengaturanfirehose.endpoint
ke file konfigurasi, dan tentukan titik akhir untuk Wilayah Anda. Untuk informasi selengkapnya, lihat Pengaturan konfigurasi agen. -
Mulailah agen secara manual:
sudo service aws-kinesis-agent start
-
(Opsional) Konfigurasikan agen untuk memulai pada startup sistem:
sudo chkconfig aws-kinesis-agent on
Agen sekarang berjalan sebagai layanan sistem di latar belakang. Ini terus memantau file yang ditentukan dan mengirim data ke aliran Firehose yang ditentukan. Aktivitas agen masuk di /var/log/aws-kinesis-agent/aws-kinesis-agent.log
.
Agen mendukung dua pengaturan konfigurasi wajib, filePattern
dan deliveryStream
, ditambah pengaturan konfigurasi opsional untuk fitur tambahan. Anda dapat menentukan pengaturan konfigurasi wajib dan opsional di /etc/aws-kinesis/agent.json
.
Setiap kali mengubah file konfigurasi, Anda harus menghentikan dan memulai agen, menggunakan perintah berikut:
sudo service aws-kinesis-agent stop
sudo service aws-kinesis-agent start
Atau, Anda dapat menggunakan perintah berikut:
sudo service aws-kinesis-agent restart
Berikut ini adalah pengaturan konfigurasi umum.
Pengaturan Konfigurasi | Deskripsi |
---|---|
assumeRoleARN |
Amazon Resource Name (ARN) dari peran yang akan diasumsikan oleh pengguna. Untuk informasi selengkapnya, lihat Mendelegasikan Akses di Seluruh AWS Akun Menggunakan IAM Peran di Panduan IAM Pengguna. |
assumeRoleExternalId |
Pengidentifikasi opsional yang menentukan siapa yang dapat mengambil peran tersebut. Untuk informasi selengkapnya, lihat Cara Menggunakan ID Eksternal di Panduan IAM Pengguna. |
awsAccessKeyId |
AWS ID kunci akses yang mengesampingkan kredensyal default. Pengaturan ini diutamakan daripada semua penyedia kredensial lainnya. |
awsSecretAccessKey |
AWS kunci rahasia yang mengesampingkan kredensi default. Pengaturan ini diutamakan daripada semua penyedia kredensial lainnya. |
cloudwatch.emitMetrics |
Memungkinkan agen untuk memancarkan metrik ke CloudWatch if set (true). Default: betul |
cloudwatch.endpoint |
Titik akhir regional untuk CloudWatch. Default: |
firehose.endpoint |
Titik akhir regional untuk Amazon Data Firehose. Default: |
sts.endpoint |
Titik akhir regional untuk Layanan Token AWS Keamanan. Default: |
userDefinedCredentialsProvider.classname |
Jika Anda menentukan penyedia kredensial khusus, beri nama kelas yang sepenuhnya memenuhi syarat menggunakan pengaturan ini. Jangan sertakan .class pada akhir nama kelas. |
userDefinedCredentialsProvider.location |
Jika Anda menentukan penyedia kredensial khusus, gunakan pengaturan ini untuk menentukan jalur absolut dari jar yang berisi penyedia kredensial khusus. Agen juga mencari file jar di lokasi berikut: /usr/share/aws-kinesis-agent/lib/ . |
Berikut ini adalah pengaturan konfigurasi aliran.
Pengaturan Konfigurasi | Deskripsi |
---|---|
aggregatedRecordSizeBytes |
Untuk membuat catatan agregat agen dan kemudian memasukkannya ke aliran Firehose dalam satu operasi, tentukan pengaturan ini. Setel ke ukuran yang Anda inginkan untuk memiliki catatan agregat sebelum agen memasukkannya ke aliran Firehose. Default: 0 (tidak ada agregasi) |
dataProcessingOptions |
Daftar opsi pemrosesan diterapkan ke setiap catatan yang diuraikan sebelum dikirim ke aliran Firehose. Pilihan pemrosesan dilakukan dalam urutan yang ditentukan. Untuk informasi selengkapnya, lihat Gunakan Agen untuk melakukan pra-proses data. |
deliveryStream |
[Wajib] Nama aliran Firehose. |
filePattern |
[Diperlukan] Sebuah glob untuk file yang perlu dipantau oleh agen. Setiap file yang cocok dengan pola ini diambil oleh agen secara otomatis dan dipantau. Untuk semua file yang cocok dengan pola ini, berikan izin baca untuk pentingAgen mengambil file yang cocok dengan pola ini. Untuk memastikan bahwa agen tidak mengambil catatan yang tidak diinginkan, pilih pola ini dengan hati-hati. |
initialPosition |
Posisi awal dari mana file mulai diurai. Nilai yang valid adalah Default: |
maxBufferAgeMillis |
Waktu maksimum, dalam milidetik, di mana agen buffer data sebelum mengirimnya ke aliran Firehose. Kisaran nilai: 1.000–900.000 (1 detik sampai 15 menit) Default: 60.000 (1 menit) |
maxBufferSizeBytes |
Ukuran maksimum, dalam byte, di mana agen buffer data sebelum mengirimnya ke aliran Firehose. Kisaran nilai: 1–4.194.304 (4 MB) Default: 4.194.304 (4 MB) |
maxBufferSizeRecords |
Jumlah maksimum catatan yang agen buffer data sebelum mengirimnya ke aliran Firehose. Kisaran nilai: 1–500 Default: 500 |
minTimeBetweenFilePollsMillis |
Interval waktu, dalam milidetik, saat agen melakukan polling dan mengurai file yang dipantau untuk data baru. Kisaran nilai: 1 atau lebih Default: 100 |
multiLineStartPattern |
Pola untuk mengidentifikasi awal catatan. Catatan dibuat dari baris yang cocok dengan pola tersebut dan baris berikutnya yang tidak cocok dengan pola tersebut. Nilai-nilai yang benar adalah ekspresi reguler. Secara default, setiap baris baru dalam file log diurai sebagai satu catatan. |
skipHeaderLines |
Jumlah baris yang dilewati agen untuk diurai di awal file yang dipantau. Kisaran nilai: 0 atau lebih Default: 0 (nol) |
truncatedRecordTerminator |
String yang digunakan agen untuk memotong rekaman yang diuraikan saat ukuran rekaman melebihi batas ukuran rekaman Amazon Data Firehose. (1.000 KB) Default: |
Dengan menentukan beberapa pengaturan konfigurasi aliran, Anda dapat mengonfigurasi agen untuk memantau beberapa direktori file dan mengirim data ke beberapa aliran. Dalam contoh konfigurasi berikut, agen memonitor dua direktori file dan mengirimkan data ke aliran data Kinesis dan aliran Firehose masing-masing. Anda dapat menentukan titik akhir yang berbeda untuk Kinesis Data Streams dan Amazon Data Firehose sehingga aliran data dan aliran Firehose Anda tidak perlu berada di Wilayah yang sama.
{ "cloudwatch.emitMetrics":
true
, "kinesis.endpoint": "https://your/kinesis/endpoint
", "firehose.endpoint": "https://your/firehose/endpoint
", "flows": [ { "filePattern": "/tmp/app1.log*
", "kinesisStream": "yourkinesisstream
" }, { "filePattern": "/tmp/app2.log*
", "deliveryStream": "yourfirehosedeliverystream
" } ] }
Untuk informasi lebih rinci tentang penggunaan agen dengan Amazon Kinesis Data Streams, lihat Menulis ke Amazon Kinesis Data Streams dengan Agen Kinesis.
Agen dapat memproses catatan yang diuraikan dari file yang dipantau sebelum mengirimnya ke aliran Firehose Anda. Anda dapat mengaktifkan fitur ini dengan menambahkan pengaturan konfigurasi dataProcessingOptions
ke aliran file Anda. Satu atau lebih opsi pemrosesan dapat ditambahkan, dan dilakukan dalam urutan yang ditentukan.
Agen mendukung opsi pemrosesan berikut. Karena agen adalah sumber terbuka, Anda dapat lebih mengembangkan dan memperluas pilihan pemrosesannya. Anda dapat mengunduh agen dari Agen Kinesis
Opsi Pemrosesan
SINGLELINE
-
Mengonversi catatan multi-baris untuk catatan baris tunggal dengan menghapus karakter baris baru, spasi di bagian paling depan, dan spasi di bagian paling belakang.
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
Mengonversi rekaman dari format yang dipisahkan pembatas ke format. JSON
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
[Wajib] Nama bidang yang digunakan sebagai kunci di setiap pasangan nilai JSON kunci. Misalnya, jika Anda menentukan
["f1", "f2"]
, catatan "v1, v2" dikonversi ke{"f1":"v1","f2":"v2"}
. delimiter
-
String yang digunakan sebagai pembatas dalam catatan. Default adalah koma (,).
LOGTOJSON
-
Mengonversi catatan dari format log ke JSON format. Format log yang didukung adalah Apache Common Log, Apache Combined Log, Apache Error Log, dan RFC3164 Syslog.
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[Diperlukan] Format entri log. Berikut adalah nilai yang mungkin:
-
COMMONAPACHELOG
— Format Log Umum Apache. Setiap entri log memiliki pola berikut secara default: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
". -
COMBINEDAPACHELOG
— Format Log Gabungan Apache. Setiap entri log memiliki pola berikut secara default: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
". -
APACHEERRORLOG
— Format Log Kesalahan Apache. Setiap entri log memiliki pola berikut secara default: "[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
". -
SYSLOG
— Format RFC3164 Syslog. Setiap entri log memiliki pola berikut secara default: "%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
".
-
matchPattern
-
Menimpa pola default untuk format log tertentu. Gunakan pengaturan ini untuk mengekstraksi nilai dari entri log jika nilai menggunakan format khusus. Jika menentukan
matchPattern
, Anda juga harus menentukancustomFieldNames
. customFieldNames
-
Nama bidang kustom digunakan sebagai kunci di setiap pasangan nilai JSON kunci. Anda dapat menggunakan pengaturan ini untuk menentukan nama bidang untuk nilai-nilai yang diekstraksi dari
matchPattern
, atau menimpa nama bidang default dari format log yang telah ditetapkan sebelumnya.
contoh : LOGTOJSON Konfigurasi
Berikut adalah salah satu contoh LOGTOJSON
konfigurasi untuk entri Apache Common Log yang dikonversi ke JSON format:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
Sebelum konversi:
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
Setelah konversi:
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
contoh : LOGTOJSON Konfigurasi Dengan Bidang Kustom
Berikut adalah contoh lain konfigurasi LOGTOJSON
:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
Dengan pengaturan konfigurasi ini, entri Apache Common Log yang sama dari contoh sebelumnya dikonversi ke JSON format sebagai berikut:
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
contoh : Mengonversi Entri Log Umum Apache
Konfigurasi alur berikut mengonversi entri Apache Common Log ke catatan satu baris dalam format: JSON
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
contoh : Mengonversi Catatan Multi-Baris
Konfigurasi aliran berikut mengurai catatan multi-baris yang baris pertamanya dimulai dengan "[SEQUENCE=
". Setiap catatan dikonversi ke catatan baris tunggal terlebih dahulu. Kemudian, nilai-nilai diekstraksi dari catatan tersebut berdasarkan pembatas tab. Nilai yang diekstraksi dipetakan ke customFieldNames
nilai tertentu untuk membentuk catatan satu baris dalam format. JSON
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
contoh : LOGTOJSON Konfigurasi dengan Pola Pencocokan
Berikut adalah salah satu contoh LOGTOJSON
konfigurasi untuk entri Apache Common Log dikonversi ke JSON format, dengan bidang terakhir (byte) dihilangkan:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
Sebelum konversi:
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
Setelah konversi:
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}
Secara otomatis memulai agen pada sistem start up.
sudo chkconfig aws-kinesis-agent on
Memeriksa status agen:
sudo service aws-kinesis-agent status
Menghentikan agen:
sudo service aws-kinesis-agent stop
Membaca file log agen dari lokasi ini:
/var/log/aws-kinesis-agent/aws-kinesis-agent.log
Menghapus instalasi agen:
sudo yum remove aws-kinesis-agent
Apakah ada Agen Kinesis untuk Windows?
Kinesis Agent untuk Windows adalah perangkat lunak yang berbeda dari Kinesis Agent untuk platform Linux.
Mengapa Agen Kinesis melambat dan/atau meningkat? RecordSendErrors
Ini biasanya karena pelambatan dari Kinesis. Periksa WriteProvisionedThroughputExceeded
metrik untuk Kinesis Data Streams ThrottledRecords
atau metrik untuk aliran Firehose. Setiap peningkatan dari 0 dalam metrik ini menunjukkan bahwa batas aliran perlu ditingkatkan. Untuk informasi selengkapnya, lihat batas Kinesis Data Stream dan aliran Firehose.
Setelah Anda mengesampingkan pembatasan, lihat apakah Agen Kinesis dikonfigurasi untuk mengekor sejumlah besar file kecil. Ada penundaan ketika Agen Kinesis mengekor file baru, jadi Agen Kinesis harus membuntuti sejumlah kecil file yang lebih besar. Coba konsolidasikan file log Anda ke file yang lebih besar.
Mengapa saya mendapatkan java.lang.OutOfMemoryError
pengecualian?
Agen Kinesis tidak memiliki cukup memori untuk menangani beban kerjanya saat ini. Cobalah meningkatkan JAVA_START_HEAP
dan JAVA_MAX_HEAP
masuk /usr/bin/start-aws-kinesis-agent
dan memulai kembali agen.
Mengapa saya mendapatkan IllegalStateException : connection pool shut down
pengecualian?
Agen Kinesis tidak memiliki koneksi yang cukup untuk menangani beban kerjanya saat ini. Coba tingkatkan maxConnections
dan maxSendingThreads
dalam pengaturan konfigurasi agen umum Anda di/etc/aws-kinesis/agent.json
. Nilai default untuk bidang ini adalah 12 kali prosesor runtime yang tersedia. Lihat AgentConfiguration.java
Bagaimana saya bisa men-debug masalah lain dengan Agen Kinesis?
DEBUG
log level dapat diaktifkan di/etc/aws-kinesis/log4j.xml
.
Bagaimana cara mengonfigurasi Agen Kinesis?
Semakin kecilmaxBufferSizeBytes
, semakin sering Agen Kinesis akan mengirim data. Ini bisa bagus karena mengurangi waktu pengiriman catatan, tetapi juga meningkatkan permintaan per detik ke Kinesis.
Mengapa Agen Kinesis mengirimkan catatan duplikat?
Ini terjadi karena kesalahan konfigurasi dalam file tailing. Pastikan masing-masing hanya fileFlow’s filePattern
cocok dengan satu file. Ini juga dapat terjadi jika logrotate
mode yang digunakan dalam copytruncate
mode. Coba ubah mode ke mode default atau buat untuk menghindari duplikasi. Untuk informasi selengkapnya tentang penanganan rekaman duplikat, lihat Menangani Rekaman Duplikat.