Jika Anda mengalami masalah dalam mengumpulkan log dari kontainer standar atau Kubernetes menggunakan Logtail, gunakan topik ini untuk melakukan troubleshooting, memeriksa status berjalan, dan menjalankan operasi pemeliharaan lainnya.
Periksa heartbeat kelompok mesin
Periksa heartbeat kelompok mesin untuk memverifikasi bahwa Logtail telah terpasang dengan benar di kontainer Anda.
-
Periksa status heartbeat kelompok mesin.
Login ke Simple Log Service console.
Pada bagian Projects, klik project yang diinginkan.

-
Di panel navigasi kiri, pilih .
-
Pada daftar kelompok mesin, klik kelompok mesin target.
-
Pada halaman Machine Group Configurations, lihat status kelompok mesin dan catat jumlah node dengan status heartbeat OK.
-
Periksa jumlah node pekerja di kluster kontainer.
-
Jalankan perintah berikut untuk melihat jumlah node pekerja di kluster.
kubectl get node | grep -v masterOutput-nya mirip seperti berikut:
NAME STATUS ROLES AGE VERSION cn-hangzhou.i-bp17enxc2us3624wexh2 Ready <none> 238d v1.10.4 cn-hangzhou.i-bp1ad2b02jtqd1shi2ut Ready <none> 220d v1.10.4
-
Bandingkan jumlah node dengan status heartbeat OK terhadap jumlah node pekerja di kluster kontainer. Lakukan troubleshooting berdasarkan hasilnya.
-
Status heartbeat semua node dalam kelompok mesin adalah Failed.
-
Jika Anda mengumpulkan log dari kontainer Docker standar, lihat Collect logs from Docker containers (standard output and files) untuk memverifikasi bahwa parameter
${your_region_name},${your_aliyun_user_id}, dan${your_machine_group_user_defined_id}sudah benar. -
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, lihat Collect text logs from Kubernetes containers by using a sidecar untuk memverifikasi bahwa parameter
{regionId},{aliuid},{access-key-id}, dan{access-key-secret}sudah benar.Jika parameter salah, jalankan perintah
helm del --purge alibaba-log-controlleruntuk menghapus paket instalasi, lalu instal ulang.
-
-
Jumlah node dengan status heartbeat OK lebih sedikit daripada jumlah node pekerja di kluster.
-
Periksa apakah DaemonSet dideploy secara manual menggunakan file YAML.
-
Jalankan perintah berikut. Jika ada hasil yang dikembalikan, artinya DaemonSet dideploy secara manual menggunakan file YAML.
kubectl get po -n kube-system -l k8s-app=logtail -
Atur parameter seperti ${your_region_name}, ${your_aliyun_user_id}, dan ${your_machine_group_name} ke nilai aktualnya.
-
Jalankan perintah berikut untuk menerapkan file yang telah diperbarui.
kubectl apply -f ./logtail-daemonset.yaml
-
-
-
FAQ: Mengapa tidak ada heartbeat setelah deploy Docker/LoongCollector?
Jika LoongCollector atau Logtail tidak menampilkan heartbeat atau gagal mendaftar ke kelompok mesin setelah deployment Docker, penyebab utamanya biasanya adalah konfigurasi identifier pengguna (AliUID) yang tidak tersedia.
Solusi:
-
Di mesin host, buat direktori
/etc/ilogtail/users/.mkdir -p /etc/ilogtail/users/ -
Di direktori
/etc/ilogtail/users/, buat file kosong dengan nama sesuai ID akun Alibaba Cloud Anda.touch /etc/ilogtail/users/<your-alibaba-cloud-account-id> -
Saat menjalankan kontainer LoongCollector atau Logtail, mount direktori tersebut sebagai read-only dengan menambahkan flag berikut:
-v /etc/ilogtail/users:/etc/ilogtail/users:ro -
Restart kontainer LoongCollector atau Logtail.
Verifikasi: Login ke Konsol SLS, buka Resources > Machine Groups, lalu buka kelompok mesin target. Pada halaman Machine Group Configurations, pastikan status heartbeat kelompok mesin telah berubah menjadi OK.
FAQ: Mengapa kelompok mesin hanya menampilkan satu server padahal beberapa server Docker Swarm melaporkan IP yang sama?
Penyebab: Di kluster Docker Swarm, beberapa server dapat melaporkan alamat IP internal yang sama melalui jaringan kontainer. Jika server-server tersebut juga menggunakan nilai variabel lingkungan ALIYUN_LOGTAIL_USER_DEFINED_ID yang sama, sistem tidak dapat membedakannya, sehingga Machine Groups hanya menampilkan satu entri.
Solusi 1: Atur variabel lingkungan ALIYUN_LOGTAIL_USER_DEFINED_ID yang unik untuk kontainer Logtail di setiap server.
Gunakan nilai berbeda di setiap server dan pastikan nilainya sesuai dengan konfigurasi Machine Groups yang sesuai. Contohnya:
-e ALIYUN_LOGTAIL_USER_DEFINED_ID=<unique-id-for-this-server>
Solusi 2: Atur variabel lingkungan ALIYUN_LOGTAIL_WORKING_IP untuk menentukan alamat IP unik secara manual untuk setiap server.
Gunakan nilai yang secara unik mengidentifikasi setiap host, seperti alamat IP publik host atau alamat IP jaringan internal yang unik di seluruh server:
-e ALIYUN_LOGTAIL_WORKING_IP=<unique-ip-for-this-server>
Troubleshoot pengumpulan log kontainer
Jika Anda tidak menemukan log apa pun di halaman Preview atau halaman kueri Logstore di Konsol Simple Log Service, kemungkinan Simple Log Service tidak mengumpulkan log kontainer Anda. Periksa status kontainer, lalu lakukan pemeriksaan berikut.
-
Saat mengumpulkan log dari file di dalam kontainer, perhatikan hal-hal berikut:
-
Setelah menerapkan konfigurasi Logtail, Logtail tidak akan mengumpulkan log dari file kecuali file tersebut diperbarui. Untuk informasi lebih lanjut, lihat Read logs.
-
Logtail hanya dapat mengumpulkan log dari file yang disimpan di penyimpanan kontainer default atau dipasang ke path lokal. Metode penyimpanan lain tidak didukung.
-
-
Setelah log dikumpulkan, Anda harus membuat indeks untuk melakukan kueri dan analisis di Logstore. Untuk informasi lebih lanjut, lihat Create an index.
-
Periksa masalah heartbeat kelompok mesin. Untuk informasi lebih lanjut, lihat Check the machine group heartbeat.
-
Periksa apakah konfigurasi Logtail sudah benar.
Periksa apakah pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv dalam konfigurasi Logtail memenuhi kebutuhan pengumpulan log Anda.
Catatan-
Label yang ditentukan di sini adalah label kontainer dari output
docker inspect, bukan label Kubernetes. -
Anda dapat sementara menghapus pengaturan IncludeLabel, ExcludeLabel, IncludeEnv, dan ExcludeEnv untuk memeriksa apakah log dapat dikumpulkan. Jika log berhasil dikumpulkan, berarti pengaturan parameternya salah.
CatatanJika Anda menggunakan node Docker yang dikelola sendiri (non-Kubernetes) dengan konfigurasi Logtail lama, perhatikan hal berikut:
-
Bidang
_container_name_tidak mendukung pencocokan ekspresi reguler untuk beberapa nilai. Anda tidak dapat menggunakan satu ekspresi reguler untuk memfilter beberapa nama kontainer tertentu. -
Jika Anda perlu mengumpulkan log dari beberapa kontainer tertentu (misalnya, kontainer bernama
adanb), buat dua konfigurasi Logtail terpisah, masing-masing dengan daftar izinnya sendiri, lalu bind keduanya ke Machine Groups yang sama. -
Nama label ganda dalam satu konfigurasi Logtail tidak dikenali. Jika Anda perlu mencocokkan nilai berbeda untuk nama label yang sama, gunakan ekspresi reguler atau buat beberapa konfigurasi Logtail independen.
-
Kelompok mesin tidak mencakup semua node kontainer
Gejala: Heartbeat kelompok mesin normal, tetapi pengumpulan log dari beberapa kontainer berhenti.
Masalah ini dapat terjadi ketika kontainer berjalan di server yang tidak termasuk dalam Machine Groups.
Langkah troubleshooting:
-
Di semua server terkait, jalankan perintah berikut untuk mengidentifikasi node tempat kontainer sebenarnya berjalan:
docker ps -a | grep <container-name> -
Jika kontainer berjalan di server yang belum ditambahkan ke kelompok mesin, tambahkan alamat IP server tersebut ke Machine Groups di Konsol SLS.
FAQ: Mengapa saya tidak dapat menemukan Pod di pratinjau metadata kontainer, atau mengapa log tidak dapat dikumpulkan dari emptyDir?
Penyebab: Logtail yang berjalan dalam mode DaemonSet tidak dapat langsung mengakses penyimpanan sementara emptyDir di dalam kontainer. Hal ini mencegah Logtail membaca file log dan mengekstraksi metadata kontainer, sehingga Pod tidak muncul di pratinjau metadata kontainer Preview.
Solusi 1 (Direkomendasikan): Arahkan output log aplikasi ke standard output (stdout/stderr).
-
Modifikasi aplikasi Anda agar menulis log ke stdout atau stderr, bukan ke file.
-
Di Konsol SLS, konfigurasikan path pengumpulan untuk menggunakan path log Kubernetes standar:
/logtail_host/var/log/pods/<namespace>_<pod-name>-<uid>/<container-name>/*.log
Solusi 2: Jika aplikasi Anda harus menulis log ke file, ubah mount volume log dari emptyDir ke hostPath atau PVC.
-
Dalam spesifikasi Pod Anda, ganti volume
emptyDirdengan definisihostPathatau PVC agar log disimpan di path yang dapat diakses dari host. -
Sesuaikan path pengumpulan SLS agar mengarah ke path mount aktual di host, misalnya:
/logtail_host/var/log/your-app/*.log
FAQ: Bagaimana cara menangani kegagalan pembuatan file atau error permission saat mengumpulkan log kontainer?
Gejala: Pesan error menunjukkan bahwa Logtail perlu membuat file kosong tertentu di dalam kontainer, tetapi pembuatan file gagal atau dilaporkan error permission.
Solusi:
-
Buat secara manual file kosong yang disebutkan dalam pesan error di dalam kontainer.
-
Atur permission file menjadi
-rw-r--r--(644):chmod 644 <file-path> -
Restart kontainer.
Alternatif: Jika masalah tetap berlanjut setelah langkah-langkah di atas, mount direktori log kontainer ke mesin host dan konfigurasikan SLS untuk mengumpulkan log dari path host yang sesuai. Pendekatan ini lebih stabil dibandingkan pengumpulan file di dalam kontainer.
FAQ: Bagaimana cara menangani error "parse cri docker line error: invalid CRI log, timestamp not found"?
Penyebab: Penguraian log gagal. Error ini umumnya disebabkan oleh konfigurasi log multiline yang salah.
Solusi:
-
Periksa dan sesuaikan ekspresi reguler awal baris, atau nonaktifkan mode multiline:
-
Dalam konfigurasi YAML: Beri komentar pada bagian konfigurasi
multiline. -
Di Konsol SLS: Buka konfigurasi Logtail dan nonaktifkan mode multiline.
-
-
Verifikasi bahwa K8s Namespace Regex dan bidang format lainnya sudah benar. Jika Anda perlu menentukan beberapa namespace, pastikan dipisahkan dengan delimiter yang benar.
-
Setelah memodifikasi konfigurasi YAML, terapkan kembali agar perubahan berlaku:
kubectl apply -f <your-config-file>.yaml
Operasi maintenance lainnya
Login ke kontainer Logtail
-
Docker Standar
-
Di host, jalankan perintah berikut untuk menemukan kontainer Logtail.
docker ps | grep logtailOutput-nya mirip seperti berikut:
223****6e registry.cn-hangzhou.aliyuncs.com/log-service/logtail "/usr/local/ilogta..." 8 days ago Up 8 days logtail-iba -
Jalankan perintah berikut untuk memulai shell bash di kontainer Logtail.
docker exec -it 223****6e bashGanti
223****6edengan ID kontainer aktual.
-
-
Kubernetes
-
Jalankan perintah berikut untuk menemukan pod Logtail.
kubectl get po -n kube-system | grep logtailOutput-nya mirip seperti berikut:
logtail-ds-****d 1/1 Running 0 8d logtail-ds-****8 1/1 Running 0 8d -
Jalankan perintah berikut untuk login ke pod tersebut.
kubectl exec -it -n kube-system logtail-ds-****d -- bashGanti
logtail-ds-****ddengan ID pod aktual.
-
Lihat log waktu proses Logtail
Logtail menyimpan log-nya di direktori /usr/local/ilogtail/ di kontainer Logtail. File log-nya adalah ilogtail.LOG dan logtail_plugin.LOG.
-
Login ke kontainer Logtail. Untuk informasi lebih lanjut, lihat Log on to a Logtail container.
-
Masuk ke direktori /usr/local/ilogtail/.
cd /usr/local/ilogtail -
Lihat file ilogtail.LOG dan logtail_plugin.LOG.
cat ilogtail.LOG cat logtail_plugin.LOG
Standard output (stdout) kontainer Logtail
Standard output kontainer Logtail tidak memberikan informasi berguna untuk troubleshooting. Anda dapat mengabaikan konten berikut.
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
Periksa status komponen Kubernetes
Jalankan perintah berikut untuk melihat status dan informasi deployment Simple Log Service.
kubectl get deploy -n kube-system | grep -E 'alibaba-log-controller|loongcollector-operator'
Output berikut dikembalikan:
NAME READY UP-TO-DATE AVAILABLE AGE
alibaba-log-controller 1/1 1 1 11d
Jalankan perintah berikut untuk melihat informasi status resource DaemonSet.
kubectl get ds -n kube-system | grep -E 'logtail-ds|loongcollector-ds'
Output berikut dikembalikan:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
logtail-ds 2 2 2 2 2 **ux 11d
Versi Logtail, alamat IP, dan waktu startup
-
Di host, jalankan perintah berikut untuk melihat versi, alamat IP, dan waktu startup Logtail.
Informasi tersebut disimpan di file
/usr/local/ilogtail/app_info.jsondi kontainer Logtail.kubectl exec logtail-ds-****k -n kube-system cat /usr/local/ilogtail/app_info.jsonOutput-nya mirip seperti berikut:
{ "UUID" : "", "hostname" : "logtail-****k", "instance_id" : "0EB****_172.20.4.2_1517810940", "ip" : "172.20.4.2", "logtail_version" : "0.16.2", "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64", "update_time" : "2018-02-05 06:09:01" }
Dapatkan informasi troubleshooting untuk log Pod di kluster ACK
Jika pengumpulan log untuk Pod di kluster ACK tidak normal, Anda dapat menggunakan langkah-langkah berikut untuk mendapatkan informasi dasar yang diperlukan untuk troubleshooting mandiri atau untuk diberikan kepada dukungan teknis.
Langkah 1: Temukan nama Pod Logtail atau LoongCollector.
kubectl get pods -n kube-system | grep loongcollector
Langkah 2: Dapatkan alamat IP instans Logtail atau LoongCollector dari file app_info.json.
kubectl exec <pod-name> -n kube-system cat /usr/local/ilogtail/app_info.json
Bidang ip dalam output JSON yang dikembalikan adalah alamat IP instans Logtail.
Saat meminta dukungan, berikan informasi berikut untuk membantu troubleshooting:
Nama Project SLS
Nama konfigurasi pengumpulan Logtail
Nama Pod target
Nama kontainer target
Menangani Logstore CRD yang terhapus secara tidak sengaja
Jika Anda menghapus Logstore yang dibuat secara otomatis oleh Custom Resource Definition (CRD), data yang dikumpulkan tidak dapat dipulihkan dan konfigurasi CRD untuk Logstore tersebut menjadi tidak valid. Untuk mencegah masalah pengumpulan log, pilih salah satu solusi berikut:
-
Dalam konfigurasi CRD, gunakan Logstore yang berbeda dari yang telah Anda hapus.
-
Restart pod alibaba-log-controller.
Jalankan perintah berikut untuk menemukan pod tersebut.
kubectl get po -n kube-system | grep alibaba-log-controller