kubernetes container_name fluentdconfiguration'da null aldı

Sep 22 2020

Uygulama kapsayıcımdan günlük almaya ve projemde yardımcı kapsayıcı olarak fluentd günlük aracısını eklemeye çalışıyorum. Ve Kibana panomdaki hangi günlüğün hangi uygulamadan geldiğini öğrenmek istiyorum. Bu yüzden fluentd'de böyle yapılandırdım.

<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>

Ama onu konuşlandırdığımda, ${[record[""]["container_name"]}görüntülendiği için boş kaldı unknown placeholder ${record["kubernetes"]["container_name"]}. Lütfen nasıl çözeceğime yardım edin, teşekkürler.

Bu hata mesajını aldım

0 bir hata olayını döküm: error_class = RuntimeError error = "genişletilemedi record[\"kubernetes\"][\"container_name\"]: hata = tanımsız yöntem []' 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 genişletmede kurtarma '" tag = "kubernetes.myapp.container" time = 2020-09-23 11: 29: 05.705209241 +0000 kaydı = {"message" => "{" log ":" I0923 11: 28: 59.157177 1 main.go: 71] Sağlık kontrolü başarılı \ n "," stream ":" stderr "," time ":" 2020-09- 23T11: 28: 59.157256887Z "}"}

'

Yanıtlar

1 Azeem Sep 24 2020 at 03:16

recordEğer erişim yani istediğiniz gerekli alanları içermiyor record["kubernetes"]["container_name"].

Bu alanlara sahip olduğundan emin olmanız gerekir.

Bununla ilgili ayrıntılı bilgi için lütfen Container Deployment ve kubernetes_metadata_filter eklentisini inceleyin.