diff --git a/fluent-logging/templates/bin/_helm-tests.sh.tpl b/fluent-logging/templates/bin/_helm-tests.sh.tpl
index 12bbf3786..24d94f11a 100644
--- a/fluent-logging/templates/bin/_helm-tests.sh.tpl
+++ b/fluent-logging/templates/bin/_helm-tests.sh.tpl
@@ -18,73 +18,6 @@ limitations under the License.
set -ex
-# Test whether indexes have been created for each Elasticsearch output defined
-function check_output_indexes_exist () {
- {{/*
- First, determine the sum of Fluentbit and Fluentd's flush intervals. This
- ensures we wait long enough for recorded events to be indexed
- */}}
- {{ $fluentBitConf := first .Values.conf.fluentbit }}
- {{ $fluentBitServiceConf := index $fluentBitConf "service" }}
- {{ $fluentBitFlush := index $fluentBitServiceConf "Flush" }}
- fluentBitFlush={{$fluentBitFlush}}
-
- {{/*
- The generic Elasticsearch output should always be last, and intervals for all
- Elasticsearch outputs should match. This means we can safely use the last item
- in fluentd's configuration to get the Fluentd flush output interval
- */}}
- {{- $fluentdConf := last .Values.conf.fluentd -}}
- {{- $fluentdElasticsearchConf := index $fluentdConf "elasticsearch" -}}
- {{- $fluentdFlush := index $fluentdElasticsearchConf "flush_interval" -}}
- fluentdFlush={{$fluentdFlush}}
-
- totalFlush=$(($fluentBitFlush + $fluentdFlush))
- sleep $totalFlush
-
- {{/*
- Iterate over Fluentd's config and for each Elasticsearch output, determine
- the logstash index prefix and check Elasticsearch for that index
- */}}
- {{ range $key, $config := .Values.conf.td_agent -}}
-
- {{/* Get list of keys to determine config header to index on */}}
- {{- $keyList := keys $config -}}
- {{- $configSection := first $keyList -}}
-
- {{/* Index config section dictionary */}}
- {{- $configEntry := index $config $configSection -}}
-
- {{- if hasKey $configEntry "type" -}}
- {{- $type := index $configEntry "type" -}}
- {{- if eq $type "elasticsearch" -}}
- {{- if hasKey $configEntry "logstash_prefix" -}}
- {{- $logstashPrefix := index $configEntry "logstash_prefix" }}
- {{$logstashPrefix}}_total_hits=$(curl -K- <<< "--user ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
- -XGET "${ELASTICSEARCH_ENDPOINT}/{{$logstashPrefix}}-*/_search?pretty" -H 'Content-Type: application/json' \
- | python -c "import sys, json; print json.load(sys.stdin)['hits']['total']")
- if [ "${{$logstashPrefix}}_total_hits" -gt 0 ]; then
- echo "PASS: Successful hits on {{$logstashPrefix}}-* index!"
- else
- echo "FAIL: No hits on query for {{$logstashPrefix}}-* index! Exiting";
- exit 1;
- fi
- {{ else }}
- logstash_total_hits=$(curl -K- <<< "--user ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}" \
- -XGET "${ELASTICSEARCH_ENDPOINT}/logstash-*/_search?pretty" -H 'Content-Type: application/json' \
- | python -c "import sys, json; print json.load(sys.stdin)['hits']['total']")
- if [ "$logstash_total_hits" -gt 0 ]; then
- echo "PASS: Successful hits on logstash-* index!"
- else
- echo "FAIL: No hits on query for logstash-* index! Exiting";
- exit 1;
- fi
- {{ end }}
- {{- end }}
- {{- end }}
- {{- end -}}
-}
-
{{ if and (.Values.manifests.job_elasticsearch_template) (not (empty .Values.conf.templates)) }}
# Tests whether fluent-logging has successfully generated the elasticsearch index mapping
# templates defined by values.yaml
@@ -106,4 +39,3 @@ function check_templates () {
{{ if and (.Values.manifests.job_elasticsearch_template) (not (empty .Values.conf.templates)) }}
check_templates
{{ end }}
-check_output_indexes_exist
diff --git a/fluent-logging/templates/configmap-etc.yaml b/fluent-logging/templates/configmap-etc.yaml
index 80c3f964d..fae65dcac 100644
--- a/fluent-logging/templates/configmap-etc.yaml
+++ b/fluent-logging/templates/configmap-etc.yaml
@@ -23,9 +23,9 @@ metadata:
name: fluent-logging-etc
type: Opaque
data:
- fluent-bit.conf: {{ include "fluent_logging.utils.to_fluentbit_conf" .Values.conf.fluentbit | b64enc }}
- parsers.conf: {{ include "fluent_logging.utils.to_fluentbit_conf" .Values.conf.parsers | b64enc }}
- fluent.conf: {{ include "fluent_logging.utils.to_fluentd_conf" .Values.conf.fluentd | b64enc }}
+ fluent-bit.conf: {{ .Values.conf.fluentbit.template | b64enc }}
+ parsers.conf: {{ .Values.conf.parsers.template | b64enc }}
+ fluent.conf: {{ .Values.conf.fluentd.template | b64enc }}
{{ range $template, $fields := .Values.conf.templates }}
{{ $template }}.json: {{ toJson $fields | b64enc }}
{{ end }}
diff --git a/fluent-logging/templates/utils/_to_fluentbit_conf.tpl b/fluent-logging/templates/utils/_to_fluentbit_conf.tpl
deleted file mode 100644
index c32f82e01..000000000
--- a/fluent-logging/templates/utils/_to_fluentbit_conf.tpl
+++ /dev/null
@@ -1,44 +0,0 @@
-{{/*
-Copyright 2017 The Openstack-Helm Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/}}
-
-# This function generates fluentbit configuration files with entries in the
-# fluent-logging values.yaml. It results in a configuration section with the
-# following format (for as many key/value pairs defined in values for a section):
-# [HEADER]
-# key value
-# key value
-# key value
-# The configuration schema can be found here:
-# http://fluentbit.io/documentation/0.12/configuration/schema.html
-
-{{- define "fluent_logging.utils.to_fluentbit_conf" -}}
-{{- range $values := . -}}
-{{- range $section := . -}}
-{{- $header := pick . "header" -}}
-{{- $config := omit . "header" }}
-[{{$header.header | upper }}]
-{{range $key, $value := $config -}}
-{{ if eq $key "Rename" }}
-{{- range $original, $new := $value -}}
-{{ printf "Rename %s %s" $original $new | indent 4 }}
-{{end}}
-{{- else -}}
-{{ $key | indent 4 }} {{ $value }}
-{{end -}}
-{{- end -}}
-{{- end -}}
-{{- end -}}
-{{- end -}}
diff --git a/fluent-logging/templates/utils/_to_fluentd_conf.tpl b/fluent-logging/templates/utils/_to_fluentd_conf.tpl
deleted file mode 100644
index de9672c32..000000000
--- a/fluent-logging/templates/utils/_to_fluentd_conf.tpl
+++ /dev/null
@@ -1,90 +0,0 @@
-{{/*
-Copyright 2017 The Openstack-Helm Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/}}
-
-# This function generates fluentd configuration files with entries in the
-# fluent-logging values.yaml. It results in a configuration section with either
-# of the following formats (for as many key/value pairs defined in values for a
-section):
-#
-# key value
-# key value
-# key value
-#
-# or
-#
-# key value
-#
-# key value
-#
-#
-# The configuration schema can be found here:
-# https://docs.fluentd.org/v0.12/articles/config-file
-
-{{- define "fluent_logging.utils.to_fluentd_conf" -}}
-{{- range $values := . -}}
-{{- range $section := . -}}
-{{- $header := pick . "header" -}}
-{{- $config := omit . "header" "expression" -}}
-{{- if hasKey . "expression" -}}
-{{ $regex := pick . "expression" }}
-{{ printf "<%s %s>" $header.header $regex.expression }}
-{{- else }}
-{{ printf "<%s>" $header.header }}
-{{- end }}
-{{- range $key, $value := $config -}}
-{{- if kindIs "slice" $value }}
-{{- range $value := . -}}
-{{- range $innerSection := . -}}
-{{- $innerHeader := pick . "header" -}}
-{{- $innerConfig := omit . "header" "expression" -}}
-{{- if hasKey . "expression" -}}
-{{ $innerRegex := pick . "expression" }}
-{{ printf "<%s %s>" $innerHeader.header $innerRegex.expression | indent 2 }}
-{{- else }}
-{{ printf "<%s>" $innerHeader.header | indent 2 }}
-{{- end }}
-{{- range $innerKey, $innerValue := $innerConfig -}}
-{{- if eq $innerKey "type" -}}
-{{ $type := list "@" "type" | join "" }}
-{{ $type | indent 4 }} {{ $innerValue }}
-{{- else if contains "ENV" ($innerValue | quote) }}
-{{ $innerKey | indent 4 }} {{ $innerValue | quote }}
-{{- else if eq $innerKey "flush_interval" }}
-{{ $innerKey | indent 4 }} {{ printf "%ss" $innerValue }}
-{{- else }}
-{{ $innerKey | indent 4 }} {{ $innerValue }}
-{{- end }}
-{{- end }}
-{{ printf "%s>" $innerHeader.header | indent 2 }}
-{{- end -}}
-{{ end -}}
-{{- else }}
-{{- if eq $key "type" -}}
-{{ $type := list "@" "type" | join "" }}
-{{ $type | indent 2 }} {{ $value }}
-{{- else if contains "ENV" ($value | quote) }}
-{{ $key | indent 2 }} {{ $value | quote }}
-{{- else if eq $key "flush_interval" }}
-{{ $key | indent 2 }} {{ printf "%ss" $value }}
-{{- else }}
-{{ $key | indent 2 }} {{ $value }}
-{{- end -}}
-{{- end -}}
-{{- end }}
-{{ printf "%s>" $header.header }}
-{{- end }}
-{{ end -}}
-{{- end -}}
diff --git a/fluent-logging/values.yaml b/fluent-logging/values.yaml
index 22b46fb86..a2f57a785 100644
--- a/fluent-logging/values.yaml
+++ b/fluent-logging/values.yaml
@@ -103,347 +103,340 @@ dependencies:
service: fluentd
conf:
- fluentbit:
- - service:
- header: service
- Flush: 30
- Daemon: Off
- Log_Level: info
- Parsers_File: parsers.conf
- - kernel_messages:
- header: input
- Name: tail
- Tag: kernel
- Path: /var/log/kern.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - containers_tail:
- header: input
- Name: tail
- Tag: kube.*
- Path: /var/log/containers/*.log
- Parser: docker
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - libvirt:
- header: input
- Name: tail
- Tag: libvirt
- Path: /var/log/libvirt/libvirtd.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - qemu:
- header: input
- Name: tail
- Tag: qemu
- Path: /var/log/libvirt/qemu/*.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - kubelet:
- header: input
- Name: systemd
- Tag: journal.*
- Path: ${JOURNAL_PATH}
- Systemd_Filter: _SYSTEMD_UNIT=kubelet.service
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - docker_daemon:
- header: input
- Name: systemd
- Tag: journal.*
- Path: ${JOURNAL_PATH}
- Systemd_Filter: _SYSTEMD_UNIT=docker.service
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - throttle_filter:
- header: filter
- Name: throttle
- Match: "**"
- Rate: 1000
- Window: 300
- Interval: 1s
- - libvirt_record_modifier:
- header: filter
- Name: record_modifier
- Match: libvirt
- Record: hostname ${HOSTNAME}
- - qemu_record_modifier:
- header: filter
- Name: record_modifier
- Match: qemu
- Record: hostname ${HOSTNAME}
- - kernel_record_modifier:
- header: filter
- Name: record_modifier
- Match: kernel
- Record: hostname ${HOSTNAME}
- - systemd_modify_fields:
- header: filter
- Name: modify
- Match: journal.**
- Rename:
- _BOOT_ID: BOOT_ID
- _CAP_EFFECTIVE: CAP_EFFECTIVE
- _CMDLINE: CMDLINE
- _COMM: COMM
- _EXE: EXE
- _GID: GID
- _HOSTNAME: HOSTNAME
- _MACHINE_ID: MACHINE_ID
- _PID: PID
- _SYSTEMD_CGROUP: SYSTEMD_CGROUP
- _SYSTEMD_SLICE: SYSTEMD_SLICE
- _SYSTEMD_UNIT: SYSTEMD_UNIT
- _UID: UID
- _TRANSPORT: TRANSPORT
- - drop_fluentd_logs:
- header: output
- Name: "null"
- Match: "**.fluentd**"
- - kube_filter:
- header: filter
- Name: kubernetes
- Match: kube.*
- Merge_JSON_Log: On
- - fluentd_output:
- header: output
- Name: forward
- Match: "*"
- Host: ${FLUENTD_HOST}
- Port: ${FLUENTD_PORT}
- parsers:
- - docker:
- header: parser
- Name: docker
- Format: json
- Time_Key: time
- Time_Format: "%Y-%m-%dT%H:%M:%S.%L"
- Time_Keep: On
- Decode_Field_As: escaped_utf8 log
fluentd:
- - metrics_agent:
- header: source
- type: monitor_agent
- bind: 0.0.0.0
- port: 24220
- - fluentbit_forward:
- header: source
- type: forward
- port: "#{ENV['FLUENTD_PORT']}"
- bind: 0.0.0.0
- - filter_fluentd_logs:
- header: match
- expression: "fluent.**"
- type: "null"
- # NOTE(srwilkers): Look for specific keywords in the log key to determine
- # log level of event
- - tag_kubernetes_log_level:
- header: match
- type: rewrite_tag_filter
- expression: "kube.var.log.containers.**.log"
- rule:
- -
- - header: rule
- key: log
- pattern: /info/i
- tag: info.${tag}
- - header: rule
- key: log
- pattern: /warn/i
- tag: warn.${tag}
- - header: rule
- key: log
- pattern: /error/i
- tag: error.${tag}
- - header: rule
- key: log
- pattern: /critical/i
- tag: critical.${tag}
- - header: rule
- key: log
- pattern: (.+)
- tag: info.${tag}
- # NOTE(srwilkers): Create new key for log level, and use the tag prefix
- # added previously
- - add_kubernetes_log_level_and_application_key:
- header: filter
- type: record_transformer
- enable_ruby: true
- expression: "**.kube.var.log.containers.**.log"
- record:
- -
- - header: record
- level: ${tag_parts[0]}
- application: ${record["kubernetes"]["labels"]["application"]}
- - add_openstack_application_key:
- header: filter
- type: record_transformer
- expression: "openstack.**"
- record:
- -
- - header: record
- application: ${tag_parts[1]}
- #NOTE(srwilkers): This prefixes the tag for oslo.log entries from the
- # fluent handler/formatter with the log level, allowing for lookups on
- # openstack logs with a particular log level (ie: error.openstack.keystone)
- - tag_openstack_log_level:
- header: match
- type: rewrite_tag_filter
- expression: "openstack.**"
- rule:
- -
- - header: rule
- key: level
- pattern: INFO
- tag: info.${tag}
- - header: rule
- key: level
- pattern: WARN
- tag: warn.${tag}
- - header: rule
- key: level
- pattern: ERROR
- tag: error.${tag}
- - header: rule
- key: level
- pattern: CRITICAL
- tag: critical.${tag}
- #NOTE(tp6510): This prefixes the tag for auth entries
- # it allows for lookups on openstack logs with
- # a particular auth log (ie: auth.openstack.keystone)
- - tag_auth_log:
- header: match
- type: rewrite_tag_filter
- expression: "*.openstack.**"
- rule:
- -
- - header: rule
- key: application
- pattern: keystone
- tag: auth.${tag}
- - header: rule
- key: application
- pattern: horizon
- tag: auth.${tag}
- - header: rule
- key: application
- pattern: mariadb
- tag: auth.${tag}
- - header: rule
- key: application
- pattern: memcached
- tag: auth.${tag}
- - header: rule
- key: application
- pattern: rabbitmq
- tag: auth.${tag}
- - libvirt_elasticsearch:
- header: match
- type: elasticsearch
- user: "#{ENV['ELASTICSEARCH_USERNAME']}"
- password: "#{ENV['ELASTICSEARCH_PASSWORD']}"
- expression: "libvirt"
- include_tag_key: true
- host: "#{ENV['ELASTICSEARCH_HOST']}"
- port: "#{ENV['ELASTICSEARCH_PORT']}"
- logstash_format: true
- logstash_prefix: libvirt
- buffer:
- -
- - header: buffer
- flush_thread_count: 8
- flush_interval: "15"
- chunk_limit_size: 8MB
- queue_limit_length: 256
- retry_max_interval: 30
- retry_forever: false
- - qemu_elasticsearch:
- header: match
- type: elasticsearch
- user: "#{ENV['ELASTICSEARCH_USERNAME']}"
- password: "#{ENV['ELASTICSEARCH_PASSWORD']}"
- expression: "qemu"
- include_tag_key: true
- host: "#{ENV['ELASTICSEARCH_HOST']}"
- port: "#{ENV['ELASTICSEARCH_PORT']}"
- logstash_format: true
- logstash_prefix: qemu
- buffer:
- -
- - header: buffer
- flush_thread_count: 8
- flush_interval: "15"
- chunk_limit_size: 8MB
- queue_limit_length: 256
- retry_max_interval: 30
- retry_forever: false
- - journal_elasticsearch:
- header: match
- type: elasticsearch
- user: "#{ENV['ELASTICSEARCH_USERNAME']}"
- password: "#{ENV['ELASTICSEARCH_PASSWORD']}"
- expression: "journal.**"
- include_tag_key: true
- host: "#{ENV['ELASTICSEARCH_HOST']}"
- port: "#{ENV['ELASTICSEARCH_PORT']}"
- logstash_format: true
- logstash_prefix: journal
- buffer:
- -
- - header: buffer
- flush_thread_count: 8
- flush_interval: "15"
- chunk_limit_size: 8MB
- queue_limit_length: 256
- retry_max_interval: 30
- retry_forever: false
- - kernel_elasticsearch:
- header: match
- type: elasticsearch
- user: "#{ENV['ELASTICSEARCH_USERNAME']}"
- password: "#{ENV['ELASTICSEARCH_PASSWORD']}"
- expression: "kernel"
- include_tag_key: true
- host: "#{ENV['ELASTICSEARCH_HOST']}"
- port: "#{ENV['ELASTICSEARCH_PORT']}"
- logstash_format: true
- logstash_prefix: kernel
- buffer:
- -
- - header: buffer
- flush_thread_count: 8
- flush_interval: "15"
- chunk_limit_size: 8MB
- queue_limit_length: 256
- retry_max_interval: 30
- retry_forever: false
- - elasticsearch:
- header: match
- type: elasticsearch
- user: "#{ENV['ELASTICSEARCH_USERNAME']}"
- password: "#{ENV['ELASTICSEARCH_PASSWORD']}"
- expression: "**"
- include_tag_key: true
- host: "#{ENV['ELASTICSEARCH_HOST']}"
- port: "#{ENV['ELASTICSEARCH_PORT']}"
- logstash_format: true
- type_name: fluent
- buffer:
- -
- - header: buffer
- flush_thread_count: 8
- flush_interval: "15"
- chunk_limit_size: 8MB
- queue_limit_length: 256
- retry_max_interval: 30
- retry_forever: false
- flush_interval: "15"
+ template: |
+
+
+
+
+
+ @type null
+
+
+
+
+ key log
+ pattern /info/i
+ tag info.${tag}
+
+
+ key log
+ pattern /warn/i
+ tag warn.${tag}
+
+
+ key log
+ pattern /error/i
+ tag error.${tag}
+
+
+ key log
+ pattern /critical/i
+ tag critical.${tag}
+
+
+ key log
+ pattern (.+)
+ tag info.${tag}
+
+ @type rewrite_tag_filter
+
+
+
+ enable_ruby true
+
+ application ${record["kubernetes"]["labels"]["application"]}
+ level ${tag_parts[0]}
+
+ @type record_transformer
+
+
+
+
+ application ${tag_parts[1]}
+
+ @type record_transformer
+
+
+
+
+ key level
+ pattern INFO
+ tag info.${tag}
+
+
+ key level
+ pattern WARN
+ tag warn.${tag}
+
+
+ key level
+ pattern ERROR
+ tag error.${tag}
+
+
+ key level
+ pattern CRITICAL
+ tag critical.${tag}
+
+ @type rewrite_tag_filter
+
+
+
+
+ key application
+ pattern keystone
+ tag auth.${tag}
+
+
+ key application
+ pattern horizon
+ tag auth.${tag}
+
+
+ key application
+ pattern mariadb
+ tag auth.${tag}
+
+
+ key application
+ pattern memcached
+ tag auth.${tag}
+
+
+ key application
+ pattern rabbitmq
+ tag auth.${tag}
+
+ @type rewrite_tag_filter
+
+
+
+
+ chunk_limit_size 8MB
+ flush_interval 15s
+ flush_thread_count 8
+ queue_limit_length 256
+ retry_forever false
+ retry_max_interval 30
+
+ host "#{ENV['ELASTICSEARCH_HOST']}"
+ include_tag_key true
+ logstash_format true
+ logstash_prefix libvirt
+ password "#{ENV['ELASTICSEARCH_PASSWORD']}"
+ port "#{ENV['ELASTICSEARCH_PORT']}"
+ @type elasticsearch
+ user "#{ENV['ELASTICSEARCH_USERNAME']}"
+
+
+
+
+ chunk_limit_size 8MB
+ flush_interval 15s
+ flush_thread_count 8
+ queue_limit_length 256
+ retry_forever false
+ retry_max_interval 30
+
+ host "#{ENV['ELASTICSEARCH_HOST']}"
+ include_tag_key true
+ logstash_format true
+ logstash_prefix qemu
+ password "#{ENV['ELASTICSEARCH_PASSWORD']}"
+ port "#{ENV['ELASTICSEARCH_PORT']}"
+ @type elasticsearch
+ user "#{ENV['ELASTICSEARCH_USERNAME']}"
+
+
+
+
+ chunk_limit_size 8MB
+ flush_interval 15s
+ flush_thread_count 8
+ queue_limit_length 256
+ retry_forever false
+ retry_max_interval 30
+
+ host "#{ENV['ELASTICSEARCH_HOST']}"
+ include_tag_key true
+ logstash_format true
+ logstash_prefix journal
+ password "#{ENV['ELASTICSEARCH_PASSWORD']}"
+ port "#{ENV['ELASTICSEARCH_PORT']}"
+ @type elasticsearch
+ user "#{ENV['ELASTICSEARCH_USERNAME']}"
+
+
+
+
+ chunk_limit_size 8MB
+ flush_interval 15s
+ flush_thread_count 8
+ queue_limit_length 256
+ retry_forever false
+ retry_max_interval 30
+
+ host "#{ENV['ELASTICSEARCH_HOST']}"
+ include_tag_key true
+ logstash_format true
+ logstash_prefix kernel
+ password "#{ENV['ELASTICSEARCH_PASSWORD']}"
+ port "#{ENV['ELASTICSEARCH_PORT']}"
+ @type elasticsearch
+ user "#{ENV['ELASTICSEARCH_USERNAME']}"
+
+
+
+
+ chunk_limit_size 8MB
+ flush_interval 15s
+ flush_thread_count 8
+ queue_limit_length 256
+ retry_forever false
+ retry_max_interval 30
+
+ flush_interval 15s
+ host "#{ENV['ELASTICSEARCH_HOST']}"
+ include_tag_key true
+ logstash_format true
+ password "#{ENV['ELASTICSEARCH_PASSWORD']}"
+ port "#{ENV['ELASTICSEARCH_PORT']}"
+ @type elasticsearch
+ type_name fluent
+ user "#{ENV['ELASTICSEARCH_USERNAME']}"
+
+ fluentbit:
+ template: |
+ [SERVICE]
+ Daemon false
+ Flush 30
+ Log_Level info
+ Parsers_File parsers.conf
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name tail
+ Path /var/log/kern.log
+ Tag kernel
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name tail
+ Parser docker
+ Path /var/log/containers/*.log
+ Tag kube.*
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name tail
+ Path /var/log/libvirt/libvirtd.log
+ Tag libvirt
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name tail
+ Path /var/log/libvirt/qemu/*.log
+ Tag qemu
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name systemd
+ Path ${JOURNAL_PATH}
+ Systemd_Filter _SYSTEMD_UNIT=kubelet.service
+ Tag journal.*
+
+ [INPUT]
+ Buffer_Chunk_Size 1M
+ Buffer_Max_Size 1M
+ Mem_Buf_Limit 5MB
+ Name systemd
+ Path ${JOURNAL_PATH}
+ Systemd_Filter _SYSTEMD_UNIT=docker.service
+ Tag journal.*
+
+ [FILTER]
+ Interval 1s
+ Match **
+ Name throttle
+ Rate 1000
+ Window 300
+
+ [FILTER]
+ Match libvirt
+ Name record_modifier
+ Record hostname ${HOSTNAME}
+
+ [FILTER]
+ Match qemu
+ Name record_modifier
+ Record hostname ${HOSTNAME}
+
+ [FILTER]
+ Match kernel
+ Name record_modifier
+ Record hostname ${HOSTNAME}
+
+ [FILTER]
+ Match journal.**
+ Name modify
+ Rename _BOOT_ID BOOT_ID
+ Rename _CAP_EFFECTIVE CAP_EFFECTIVE
+ Rename _CMDLINE CMDLINE
+ Rename _COMM COMM
+ Rename _EXE EXE
+ Rename _GID GID
+ Rename _HOSTNAME HOSTNAME
+ Rename _MACHINE_ID MACHINE_ID
+ Rename _PID PID
+ Rename _SYSTEMD_CGROUP SYSTEMD_CGROUP
+ Rename _SYSTEMD_SLICE SYSTEMD_SLICE
+ Rename _SYSTEMD_UNIT SYSTEMD_UNIT
+ Rename _TRANSPORT TRANSPORT
+ Rename _UID UID
+
+ [OUTPUT]
+ Match **.fluentd**
+ Name null
+
+ [FILTER]
+ Match kube.*
+ Merge_JSON_Log true
+ Name kubernetes
+
+ [OUTPUT]
+ Host ${FLUENTD_HOST}
+ Match *
+ Name forward
+ Port ${FLUENTD_PORT}
+ parsers:
+ template: |
+ [PARSER]
+ Decode_Field_As escaped_utf8 log
+ Format json
+ Name docker
+ Time_Format %Y-%m-%dT%H:%M:%S.%L
+ Time_Keep true
+ Time_Key time
+
fluentd_exporter:
log:
format: "logger:stdout?json=true"
diff --git a/tools/deployment/armada/manifests/armada-lma.yaml b/tools/deployment/armada/manifests/armada-lma.yaml
index 6d7d50a40..968dff685 100644
--- a/tools/deployment/armada/manifests/armada-lma.yaml
+++ b/tools/deployment/armada/manifests/armada-lma.yaml
@@ -369,461 +369,6 @@ data:
component: test
values:
release_uuid: ${RELEASE_UUID}
- conf:
- fluentbit:
- - service:
- header: service
- Flush: 30
- Daemon: Off
- Log_Level: info
- Parsers_File: parsers.conf
- - ceph_cluster_logs:
- header: input
- Name: tail
- Tag: ceph.cluster.*
- Path: /var/log/ceph/ceph.log
- Parsers: syslog
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - ceph_audit_logs:
- header: input
- Name: tail
- Tag: ceph.audit.*
- Path: /var/log/ceph/ceph.audit.log
- Parsers: syslog
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - ceph_mon_logs:
- header: input
- Name: tail
- Tag: ceph.mon.*
- Path: /var/log/ceph/ceph-mon**.log
- Parsers: syslog
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - ceph_osd_logs:
- header: input
- Name: tail
- Tag: ceph.osd.*
- Path: /var/log/ceph/ceph-osd**.log
- Parsers: syslog
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - kernel_messages:
- header: input
- Name: tail
- Tag: kernel
- Path: /var/log/kern.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - kubelet:
- header: input
- Name: systemd
- Tag: journal.*
- Path: ${JOURNAL_PATH}
- Systemd_Filter: _SYSTEMD_UNIT=kubelet.service
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - libvirt:
- header: input
- Name: tail
- Tag: libvirt
- Path: /var/log/libvirt/libvirtd.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - qemu:
- header: input
- Name: tail
- Tag: qemu
- Path: /var/log/libvirt/qemu/*.log
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - docker_daemon:
- header: input
- Name: systemd
- Tag: journal.*
- Path: ${JOURNAL_PATH}
- Systemd_Filter: _SYSTEMD_UNIT=docker.service
- Mem_Buf_Limit: 5MB
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - throttle_filter:
- header: filter
- Name: throttle
- Match: "**"
- Rate: 1000
- Window: 300
- Interval: 1s
- - libvirt_record_modifier:
- header: filter
- Name: record_modifier
- Match: libvirt
- Record: hostname ${HOSTNAME}
- - qemu_record_modifier:
- header: filter
- Name: record_modifier
- Match: qemu
- Record: hostname ${HOSTNAME}
- - kernel_record_modifier:
- header: filter
- Name: record_modifier
- Match: kernel
- Record: hostname ${HOSTNAME}
- - systemd_modify_fields:
- header: filter
- Name: modify
- Match: journal.**
- Rename:
- _BOOT_ID: BOOT_ID
- _CAP_EFFECTIVE: CAP_EFFECTIVE
- _CMDLINE: CMDLINE
- _COMM: COMM
- _EXE: EXE
- _GID: GID
- _HOSTNAME: HOSTNAME
- _MACHINE_ID: MACHINE_ID
- _PID: PID
- _SYSTEMD_CGROUP: SYSTEMD_CGROUP
- _SYSTEMD_SLICE: SYSTEMD_SLICE
- _SYSTEMD_UNIT: SYSTEMD_UNIT
- _UID: UID
- _TRANSPORT: TRANSPORT
- - containers_tail:
- header: input
- Name: tail
- Tag: kube.*
- Path: /var/log/containers/*.log
- Parser: docker
- DB: /var/log/flb_kube.db
- Mem_Buf_Limit: 5MB
- DB.Sync: Normal
- Buffer_Chunk_Size: 1M
- Buffer_Max_Size: 1M
- - drop_fluentd_logs:
- header: output
- Name: "null"
- Match: "**.fluentd**"
- - kube_filter:
- header: filter
- Name: kubernetes
- Match: kube.*
- Merge_JSON_Log: On
- - fluentd_output:
- header: output
- Name: forward
- Match: "*"
- Host: ${FLUENTD_HOST}
- Port: ${FLUENTD_PORT}
- parsers:
- - docker:
- header: parser
- Name: docker
- Format: json
- Time_Key: time
- Time_Format: "%Y-%m-%dT%H:%M:%S.%L"
- Time_Keep: On
- - syslog:
- header: parser
- Name: syslog
- Format: regex
- Regex: '^(?