Cedera log sebagai JSON di Container Optimized OS

Sep 29 2020

Saya dapat memasukkan log ke Google Log Viewer dengan bantuan agen logging stackdriver dari Container Optimized OS sebagai JSON.

Ini menginjeksi log sebagai nilai untuk pesan, tetapi tidak sebagai payload json dengan konfigurasi default

Apa yang sudah saya coba?

Saya telah mengubah konfigurasi fluentd di /etc/stackdriver/logging.config.d/fluentd-lakitu.conf menjadi berikut:

<source>
  @type tail
  format json
  path /var/lib/docker/containers/*/*.log
  <parse>
    @type json
  </parse>
  pos_file /var/log/google-fluentd/containers.log.pos
  tag reform_contain
  read_from_head true
</source>

Tetapi tidak dapat mengirim log ke Log viewer

OS: OS yang Dioptimalkan untuk Penampung cos-81-12871-1196-0

Jawaban

4 KameliaY Sep 30 2020 at 01:57

Saya menemukan masalah ini di Pelacak Masalah Publik Google yang membahas masalah yang sama dengan yang Anda sebutkan dalam kasus penggunaan Anda. Tim Produk Google telah diberi tahu tentang batasan ini dan mereka sedang mengatasinya. Anda hanya perlu pergi ke sana dan mengeklik bintang di sebelah judul sehingga Anda mendapatkan pembaruan tentang masalah tersebut dan memberikan visibilitas yang lebih besar pada masalah tersebut.

GamerAtmos Dec 28 2020 at 11:20

Seperti yang disebutkan @Kamelia Y tentang filehttps://issuetracker.google.com/issues/137517429

Ada penyebutan tentang solusi yang digunakan

<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>

Cuplikan di atas mengurai log menjadi JSON dan menginjeksi ke Cloud Logging.

Dalam diskusi di Google Grup di Stackdriver ini, kita telah membahas tentang cara menggunakannya dengan skrip-startup.

Berikut ini cuplikan untuk skrip startup.

cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save
# Shorter version of the above: cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf{,-save}
(
head -n -2 /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save; cat <<EOF
<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>
EOF
) > /etc/stackdriver/logging.config.d/fluentd-lakitu.conf
sudo systemctl start stackdriver-logging

Gambar ini dapat digunakan untuk membuat log JSON acak. https://hub.docker.com/repository/docker/patelathreya/json-random-logger