Konfigurasi default ELK/Loki stack adalah mengambil log dari docker container di pod yang terletak di tiap node di path /var/log/container/*.log. Namun di OKE file tersebut memang ada, tapi bukan file asli melainkan symbolic link ke file aslinya di /u01/data/docker/containers/*/.log
Sehingga pod daemonset tidak dapat mengakses file tersebut, solusinya adalah menambah volume mount /u01/data/docker/containers/*/.log ke pod daemonset Filebeats/Loki.
Solusi ini ditemukan setelah melihat log pada promtail, lalu mencoba melihat log di node menggunakan kubectl-node-shell (ssh ke node dengan cepat tanpa jump host)
Jika anda memakai helm chart filebeats, edit values.yaml menjadi berikut:
extraVolumeMounts:
- name: u01
mountPath: /u01/data/docker
readOnly: true
extraVolumes:
- name: u01
hostPath:
path: /u01/data/docker
Jika anda memakai helm chart loki-stack stack, anda harus mendownload chart tersebut (helm pull), mengekstraknya (tar -xf), dan mengubah file loki-stack/charts/loki/values.yaml :
# Extra volumes to scrape logs from
volumes:
- name: docker
hostPath:
path: /var/lib/docker/containers
- name: pods
hostPath:
path: /var/log/pods
- name: u01
hostPath:
path: /u01/data/docker
# Custom volumes together with the default ones
extraVolumes: []
volumeMounts:
- name: docker
mountPath: /var/lib/docker/containers
readOnly: true
- name: pods
mountPath: /var/log/pods
readOnly: true
- name: u01
mountPath: /u01/data/docker
readOnly: true