kubernetes container_name fluentdconfiguration'da null aldı
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:ingeniş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
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.