kubernetes container_name mendapatkan null di fluentdconfiguration

Sep 22 2020

Saya mencoba mendapatkan log dari wadah aplikasi saya dan melampirkan agen log fluentd sebagai wadah bantuan dalam proyek saya. Dan saya ingin mendapatkan log mana yang berasal dari aplikasi mana di dasbor Kibana saya. Itu sebabnya saya mengonfigurasi seperti itu di fluentd.

<source>
  @id fluentd-containers.log
  @type tail
  path /var/log/containers/mylog*.log
  pos_file /var/log/es-containers.log.pos
  time_format %Y-%m-%dT%H:%M:%S.%NZ
  tag kubernetes.myapp.container
  read_from_head true
  <parse>
    @type none
  </parse>
</source>

<filter kubernetes**>
  @type record_transformer
  enable_ruby true
  <record>
    service_name ${tag_parts[1]} instance_name ${record["kubernetes"]["container_name"]}
    log_type ${tag_parts[2]} host_name ${hostname}
    send_to "ES"
  </record>
</filter>

<match kubernetes.**>
  @type stdout
</match>

Tetapi ketika saya menerapkannya, ${[record[""]["container_name"]}mendapatkan null saat ditampilkan unknown placeholder ${record["kubernetes"]["container_name"]}. Tolong bantu saya bagaimana mengatasinya, terima kasih.

Mendapat pesan kesalahan itu

0 dump an error event: error_class = RuntimeError error = "gagal untuk memperluas record[\"kubernetes\"][\"container_name\"]: error = metode tidak ditentukan []' for nil:NilClass" location="/fluentd/vendor/bundle/ruby/2.6.0/gems/fluentd-1.11.2/lib/fluent/plugin/filter_record_transformer.rb:310:in penyelamatan di expand '" tag = "kubernetes.myapp.container" time = 2020-09-23 11: 29: 05.705209241 +0000 record = {"message" => "{" log ":" I0923 11: 28: 59.157177 1 main.go: 71] Pemeriksaan kesehatan berhasil \ n "," stream ":" stderr "," time ":" 2020-09- 23T11: 28: 59.157256887Z "}"}

`

Jawaban

1 Azeem Sep 24 2020 at 03:16

Tidak recordberisi bidang wajib yang ingin Anda akses, yaitu record["kubernetes"]["container_name"].

Anda perlu memastikan bahwa itu memiliki bidang tersebut.

Silakan buka Container Deployment dan plugin kubernetes_metadata_filter untuk informasi detailnya.