ELK Beats/Loki Promtail Log Tidak Terbaca di Oracle Kubernetes Engine (OKE)

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

Leave a Reply

Please Connect to comment
  Subscribe  
Notify of