| {%- from "kubernetes/map.jinja" import common with context -%} |
| --- |
| kind: ConfigMap |
| apiVersion: v1 |
| metadata: |
| name: fluentd-aggregator-cfg |
| namespace: {{ common.addons.fluentd.get('namespace', 'stacklight') }} |
| labels: |
| addonmanager.kubernetes.io/mode: Reconcile |
| data: |
| fluent.conf: | |
| @include forward-input.conf |
| @include general.conf |
| @include kubernetes-filter.conf |
| @include systemd-filter.conf |
| @include output.conf |
| |
| forward-input.conf: | |
| <source> |
| @type forward |
| port "#{ENV['FLUENTD_AGGREGATOR_BIND_PORT']}" |
| bind 0.0.0.0 |
| </source> |
| |
| general.conf: | |
| <match fluent.**> |
| @type null |
| </match> |
| <source> |
| @type http |
| port 9880 |
| bind 0.0.0.0 |
| </source> |
| <filter **> |
| @type record_transformer |
| enable_ruby |
| <record> |
| Type log |
| environment_label "#{ENV['ENVIRONMENT_LABEL']}" |
| Hostname ${ hostname } |
| Timestamp ${ time.strftime("{{ common.addons.fluentd.aggregator.config.general.get('time_format', '%Y-%m-%dT%H:%M:%S.%N%z') }}") } |
| </record> |
| </filter> |
| |
| kubernetes-filter.conf: | |
| <filter temp.kubernetes.**> |
| @type kubernetes_metadata |
| merge_json_log true |
| preserve_json_log true |
| </filter> |
| <filter temp.kubernetes.**> |
| @type record_transformer |
| enable_ruby true |
| <record> |
| kubernetes_namespace_container_name ${record["kubernetes"]["namespace_name"]}.${record["kubernetes"]["container_name"]} |
| </record> |
| </filter> |
| <match temp.kubernetes.container> |
| @type rewrite_tag_filter |
| <rule> |
| key |
| pattern ^(.*)$ |
| tag __TAG__.$1 |
| </rule> |
| </match> |
| <filter temp.kubernetes.container.**> |
| @type record_transformer |
| enable_ruby |
| <record> |
| severity_label ${ {"ERROR"=>"stderr","INFO"=>"stdout"}.key(record["stream"]) } |
| Severity ${ {3=>"stderr",6=>"stdout"}.key(record["stream"]) } |
| programname ${ record['kubernetes']['container_name'] } |
| </record> |
| </filter> |
| |
| systemd-filter.conf: | |
| <filter systemd.source> |
| @type record_transformer |
| enable_ruby |
| <record> |
| severity_label ${ {"TRACE"=>8,"DEBUG"=>7,"INFO"=>6,"NOTICE"=>5,"WARNING"=>4,"ERROR"=>3,"CRITICAL"=>2,"ALERT"=>1,"EMERGENCY"=>0}.key(record["Severity"].to_i) } |
| </record> |
| </filter> |
| <match systemd.source> |
| @type rewrite_tag_filter |
| <rule> |
| key ident |
| pattern ^(.*)$ |
| tag __TAG__.$1 |
| </rule> |
| </match> |
| <filter systemd.source.kubelet> |
| @type parser |
| format kubernetes |
| reserve_data true |
| key_name Payload |
| </filter> |
| <filter systemd.source.kube-apiserver> |
| @type parser |
| format kubernetes |
| reserve_data true |
| key_name Payload |
| </filter> |
| <filter systemd.source.**> |
| @type record_transformer |
| remove_keys message, severity |
| </filter> |
| |
| output.conf: | |
| <match temp.kubernetes.container.**> |
| @type rewrite_tag_filter |
| <rule> |
| key log_path |
| pattern ^.*\/(.*)\.log$ |
| tag kubernetes.container.$1 |
| </rule> |
| </match> |
| |
| <match **> |
| @type elasticsearch |
| @log_level {{ common.addons.fluentd.aggregator.config.output.get('log_level', 'info') }} |
| host "#{ENV['FLUENTD_ELASTICSEARCH_HOST']}" |
| port "#{ENV['FLUENTD_ELASTICSEARCH_PORT']}" |
| scheme "#{ENV['FLUENTD_ELASTICSEARCH_SCHEME'] || 'http'}" |
| ssl_verify "#{ENV['FLUENTD_ELASTICSEARCH_SSL_VERIFY'] || 'true'}" |
| reload_connections "#{ENV['FLUENTD_ELASTICSEARCH_RELOAD_CONNECTIONS'] || 'true'}" |
| type_name message |
| tag_key Logger |
| include_tag_key true |
| time_key Timestamp |
| time_key_exclude_timestamp true |
| logstash_format {{ common.addons.fluentd.aggregator.config.output.get('logstash_format', 'true') | lower }} |
| logstash_prefix {{ common.addons.fluentd.aggregator.config.output.get('logstash_prefix', 'log') }} |
| logstash_dateformat {{ common.addons.fluentd.aggregator.config.output.get('logstash_dateformat', '%Y.%m.%d') }} |
| request_timeout {{ common.addons.fluentd.aggregator.config.output.get('request_timeout', '10s') }} |
| buffer_chunk_limit {{ common.addons.fluentd.aggregator.config.output.get('buffer_chunk_limit', '2m') }} |
| buffer_queue_limit {{ common.addons.fluentd.aggregator.config.output.get('buffer_queue_limit', '32') }} |
| flush_interval {{ common.addons.fluentd.aggregator.config.output.get('flush_interval', '10s') }} |
| max_retry_wait {{ common.addons.fluentd.aggregator.config.output.get('max_retry_wait', '30') }} |
| disable_retry_limit |
| num_threads {{ common.addons.fluentd.aggregator.config.output.get('num_threads', '8') }} |
| </match> |