Jika aturan transformasi melibatkan pemuatan resource dari Object Storage Service (OSS), error pemuatan atau pembaruan resource dapat terjadi. Pelajari penyebab umum dan cara melakukan troubleshooting.
Setelah Mesin DPI membaca data dari Logstore sumber, log event tersebut ditransformasikan. Jika aturan transformasi memuat resource eksternal dari OSS, ApsaraDB RDS, atau Logstore lainnya, error pemuatan atau pembaruan resource dapat terjadi.
Dampak error
Bidang logging.levelname dalam log error menentukan tingkat error: WARNING atau ERROR.
-
Untuk error tingkat ERROR, log event yang terpengaruh akan dibuang. Output transformasi tidak menyertakan event ini, dan pemrosesan dilanjutkan ke log event berikutnya tanpa percobaan ulang.
-
Untuk error tingkat WARNING, seperti ketidaksesuaian regex, langkah DSL saat ini dilewati untuk event tersebut, dan pemrosesan dilanjutkan ke langkah berikutnya.
Troubleshooting
-
Periksa bidang
logging.levelnamedalam log error untuk menentukan tingkat error. -
Periksa bidang
messagedalam log error untuk mengidentifikasi log event mana yang menyebabkan error. Untuk informasi lebih lanjut, lihat View error logs. -
Periksa bidang
reasondalam log error untuk menentukan penyebab error pada log event tersebut.
Berdasarkan penyebabnya, tambahkan logika ke skrip transformasi Anda untuk menangani exception ini. Anda dapat menggunakan fungsi kontrol proses, seperti e_if dan e_switch, untuk menangkap dan mengelola error ini. Berikut adalah contoh log error: Bidang message berisi detail log event yang gagal, dan bidang reason menunjukkan penyebab error, yaitu integer division or modulo by zero:
07-26 16:21:48
__source__:
__tag__:__job_name__: etl-preview-1564110081-604324
__tag__:__schedule_type__: DryRun
__topic__: __etl-log-status__
etl_context: {
"project": "ali-licheng-test-uk2",
"logstore": "source_logstore",
"shard_id": "2"}
event_id: transorm_data:process:fail
extra_info_params: {"src_event": {"__time__": "1563266137", "__topic__": "", "__source__": xxx, "__tag__:__client_ip__": xxx,
"__tag__:__receive_time__": "1563774221", "body_bytes_sent": "740", "client_ip": "1.2.3.4", "host": "m.abcd.com", "status": "403"}}
logging: {"process": "34", "levelname": "ERROR", "funcName": "_transform_events_to_logstore", "module": "logclient_operator", "threadName": "MainThread",
"thread": "139890150307648", "processName": "ForkProcess-1"}
message: [ali-licheng-test-uk2/source_logstore/2]transform_data: fail to process event: {"__time__": "1563266137", "__topic__": "", "__source__": xxx,
"__tag__:__client_ip__": xxx, "__tag__:__receive_time__": "1563774221", "body_bytes_sent": "740", "client_ip": "1.2.3.4", "host": "m.abcd.com", "status": "403"},
detail=integer division or modulo by zero
reason: integer division or modulo by zero
Error umum saat mengambil data dari OSS
Pada contoh berikut, AK_ID adalah singkatan dari AccessKeyId, dan AK_KEY adalah singkatan dari AccessKeySecret.
Jalur file atau format file salah
Log error 404 dihasilkan karena direktori `data` tidak ada di OSS atau format file salah.
-
Contoh aturan transformasi
# Anggap bahwa direktori yang benar adalah test. e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'data/test.txt', format='text', change_detect_interval=20)) # Format ini tidak ada di direktori test. e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.dat', format='text', change_detect_interval=20)) -
Log error
message: Exception: {'status': 404, 'x-oss-request-id': '5D49****878', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': '5D4***8878', 'HostId': 'lo***g.oss-cn-hangzhou.aliyuncs.com', 'Key': 'oss/test.txt'}} -
Troubleshooting
Periksa log event yang menyebabkan error. Jika
statusdalam pesan error adalah 404 dan bidangMessagesterkait dengan file, pertama-tama periksa apakah jalur file sudah benar. -
Solusi
Ubah parameter
res_oss_filedalam orkestrasi fungsifilemenjadi jalur file yang benar.# Anggap bahwa direktori yang benar adalah test. e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20))
Error decoding file
Terjadi error saat file yang ditarik dari OSS didecode atau saat metode decoding yang tidak didukung digunakan.
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20, encoding='unicode')) -
Log error
{ "reason": "LookupError: unknown encoding: unicode" } -
Troubleshooting
Periksa log event yang menyebabkan error. Jika pesan error adalah
unknown encoding: unicode, periksa apakah parameterencodinguntuk decoding file sudah benar. -
Solusi
Ubah nilai parameter
encodingdalam orkestrasi fungsires_oss_filemenjadi format decoding yang benar.# Anggap bahwa format decoding yang benar adalah utf8. e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), bucket, 'test/test.txt', format='text', change_detect_interval=20,encoding='utf8'))
Error Endpoint
Endpoint salah saat Anda menggunakan fungsi res_oss_file.
Endpoint tidak ada
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file("https://oss-cn-asd.aliyuncs.com", ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20)) -
Log error
message: get_oss_bytes get errors:{'status': -2, 'x-oss-request-id': '', 'details': "RequestError: HTTPSConnectionPool(host='log-etl-staging.oss-cn-asd.aliyuncs.com', port=443) -
Troubleshooting
Periksa log event error. Jika pesan error adalah
-2dan bidangMessagemenunjukkanRequestError, periksa apakah endpoint tersebut valid. -
Solusi
Ubah nilai parameter
endpointdalam orkestrasi fungsires_oss_filemenjadi nilai yang benar.
Endpoint OSS tidak sesuai dengan nama bucket
AccessKey yang diotorisasi memiliki izin untuk melakukan operasi di wilayah Hangzhou, tetapi Endpoint diatur ke wilayah Shanghai.
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file("https://oss-cn-shanghai.aliyuncs.com", ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20)) -
Log error
message: get_oss_bytes get errors:{'status': 403, 'x-oss-request-id': '5D7219353A90A2852B234D14', 'details': {'Code': 'AccessDenied', 'Message': 'The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.', 'RequestId': '5D7**14', 'HostId': 'log-**.oss-cn-shanghai.aliyuncs.com', 'Bucket': 'log-**', 'Endpoint': 'oss-cn-hangzhou.aliyuncs.com'}} -
Troubleshooting
Periksa log event yang menyebabkan error. Jika pesan error adalah 403 dan bidang
Messagemerujuk pada bucket dan endpoint, pastikan bahwaendpointdan AccessKey berada di wilayah yang sama. -
Solusi
Pada orkestrasi fungsi
res_oss_file, atur parameterencodingke format decoding yang benar.
Error izin
AccessKey salah
AccessKey salah saat Anda menggunakan fungsi res_oss_file.
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file(endpoint, ak_id=res_local("AK_ID"),ak_key=res_local("AK_KEY"), 'your bucket', 'test/test.txt', format='text', change_detect_interval=20)) -
Log error
message: Exception: {'status': 403, 'x-oss-request-id': '5D***BEB6', 'details': {'Code': 'InvalidAccessKeyId', 'Message': 'The OSS Access Key Id you provided does not exist in our records.', 'RequestId': '5D4***BEB6', 'HostId': 'lo***g.oss-cn-hangzhou.aliyuncs.com', 'OSSAccessKeyId': 'LT***Ai'}} -
Troubleshooting
Periksa log event yang menyebabkan error. Jika pesan error adalah 403 dan bidang
Messageterkait dengan AccessKey, periksa apakah AccessKey tersebut benar. -
Solusi
Perbaiki Informasi AccessKey dalam orkestrasi fungsi
res_oss_file.
Error izin bucket
Terjadi error bucket saat Anda menggunakan fungsi res_oss_file.
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id=os.getenv("SLS_ACCESS_KEY_ID"), ak_key=os.getenv("SLS_ACCESS_KEY_SECRET"), bucket='log', file='test.txt', change_detect_interval=30, encoding='utf8')) -
Log error
message: Exception: {'status': 403, 'x-oss-request-id': '5D674CE8BE0EBC45166026C5', 'details': {'Code': 'AccessDenied', 'Message': 'You have no right to access this object because of bucket acl.', 'RequestId': '5D4***BEB6', 'HostId': 'log.oss-cn-hangzhou.aliyuncs.com'}} -
Troubleshooting
-
Solusi
Perbaiki informasi bucket dalam orkestrasi fungsi
res_oss_file.
Bucket tidak ada
Bucket yang ditentukan tidak ada di OSS.
-
Contoh aturan transformasi
e_set("oss_file",res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id=os.getenv("SLS_ACCESS_KEY_ID"), ak_key=os.getenv("SLS_ACCESS_KEY_SECRET"), bucket='twiss', file='test.txt', change_detect_interval=30, encoding='utf8')) -
Log error
message: Exception: {'status': 404, 'x-oss-request-id': '5D75F6E9BB4097C678A381EF', 'details': {'Code': 'NoSuchBucket', 'Message': 'The specified bucket does not exist.', 'RequestId': '5D75F6E9BB4097C678A381EF', 'HostId': 'twiss.oss-cn-hangzhou.aliyuncs.com', 'BucketName': 'twiss'}} -
Troubleshooting
Periksa log event error. Jika kode error adalah 403 dan bidang
Messageterkait dengan bucket, pastikan bahwa bucket tersebut ada. -
Solusi
Perbaiki informasi bucket dalam orkestrasi fungsi
res_oss_file.
Log error untuk pembaruan file terjadwal
Log error berikut hanya muncul dalam catatan log backend selama pembaruan file terjadwal.
-
Log berikut menunjukkan bahwa upaya pertama untuk mengambil resource gagal, kemungkinan karena masalah jaringan, dan sedang dipersiapkan untuk mencoba ulang.
{ "reason":"Failed to pull data from oss for the first time and it is preparing to re-pull ..." } -
Log berikut menunjukkan bahwa backend melakukan pembaruan secara berkala, tetapi fungsi resource baru gagal mengambil data dan sedang mempersiapkan percobaan ulang.
{ "reason":"get_oss_byte get errors,begin retry ..." } -
Log berikut menunjukkan bahwa percobaan ulang gagal dan sedang dipersiapkan percobaan ulang lainnya. Maksimal tiga kali percobaan ulang dilakukan.
{ "reason":"get_oss_byte get errors,refresh_interval ..." }