Поврежденные журналы из Fluentd в Graylog
Мне удается отправить журналы кластера kubernetes на graylog2 с помощью fluentd, настроив демон-набор kubernetes.
проблема у меня заключается в том, что я не могу прочитать сообщение журнала в graylog, потому что оно кажется каким-то образом поврежденным.
беглый конф
<source>
type tail
path /var/log/containers/*.log
pos_file /var/log/es-containers.log.pos
time_format %Y-%m-%dT%H:%M:%S
tag kubernetes.*
format json
read_from_head true
</source>
<filter kubernetes.**>
type kubernetes_metadata
</filter>
<filter kubernetes.**>
type record_transformer
renew_record true
enable_ruby true
keep_keys facility,stream
<record>
host ${Socket.gethostname}
version "1.1"
short_message ${log}
_docker_container_id ${docker[:container_id]}
_kubernetes_namespace ${kubernetes[:namespace_name]}
_kubernetes_pod ${kubernetes[:pod_name]}
_kubernetes_container ${kubernetes[:container_name]}
</record>
</filter>
<match kubernetes.**>
type copy
<store>
type gelf
input_encoding 'UTF-8'
host "#{ENV['GELF_HOST']}"
port "#{ENV['GELF_PORT']}"
flush_interval 5s
</store>
</match>
Dockerfile:
FROM fabric8/fluentd:0.14.8
MAINTAINER Gilbert Roulot <gilbert.roulot@tech-angels.com>
ENTRYPOINT ["fluentd"]
RUN yum install -y gcc-c++ wget
RUN scl enable rh-ruby23 'gem install --no-document string-scrub -v 0.0.5' && \
scl enable rh-ruby23 'gem install --no-document fluent-plugin-kubernetes_metadata_filter -v 0.18.0' && \
scl enable rh-ruby23 'gem install --no-document fluent-plugin-elasticsearch -v 1.4.0' && \
scl enable rh-ruby23 'gem install --no-document gelf' && \
scl enable rh-ruby23 'gem cleanup fluentd'
RUN mkdir -p /etc/fluent/plugin \
&& wget https://raw.githubusercontent.com/tech-angels/fluent-plugin-gelf/master/lib/fluent/plugin/out_gelf.rb -O /etc/fluent/plugin/out_gelf.rb
ENV GELF_HOST my_host
ENV GELF_PORT my_port
ADD fluent.conf /etc/fluent/fluent.conf
Развертывание демона Kubernetes:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: logger
labels:
k8s-app: logger
spec:
template:
metadata:
labels:
name: logger
spec:
containers:
- name: logger
image: 'My fluent image location'
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
imagePullSecrets:
- name: my docker pull key
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
Журналы на Graylog2:
Я не знаю, почему сообщение кажется поврежденным или зашифрованным.