@@ -14,45 +14,61 @@ data:
14
14
log_level "#{ENV['FLUENT_LOG_LEVEL'] || 'warn'}"
15
15
</system>
16
16
17
- <filter kubernetes.**>
18
- @type record_transformer
19
- enable_ruby
20
- <record>
21
- message ${record["log"]} ${record["message"]}
22
- timestamp ${record["time"]}
23
- {{- if or .Values.kubernetes.cluster_name .Values.global.clusterName }}
24
- {{ include "kubernetes.cluster_name" . | nindent 8 }}
25
- {{- end}}
26
- {{- if .Values.fluent.device_less_logs }}
27
- resource.service.name ${record.dig("kubernetes","labels","app") != nil ? record.dig("kubernetes","labels","app") : record.dig("kubernetes","labels","app_kubernetes_io/name") != nil ? record.dig("kubernetes","labels","app_kubernetes_io/name") : record.dig("kubernetes","container_name") != nil ? record.dig("kubernetes","container_name") : record.dig("kubernetes","pod_name") != nil ? record.dig("kubernetes","pod_name") : "unknown" }
28
- resource.service.namespace ${record["kubernetes"]["namespace_name"]}
17
+ <label @PROCESS_AFTER_CONCAT>
18
+ <filter kubernetes.**>
19
+ @type kubernetes_metadata
20
+ @id filter_kube_metadata
21
+ kubernetes_url "#{ENV['FLUENT_FILTER_KUBERNETES_URL'] || 'https://' + ENV.fetch('KUBERNETES_SERVICE_HOST') + ':' + ENV.fetch('KUBERNETES_SERVICE_PORT') + '/api'}"
22
+ verify_ssl "#{ENV['KUBERNETES_VERIFY_SSL'] || true}"
23
+ ca_file "#{ENV['KUBERNETES_CA_FILE']}"
24
+ skip_labels "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_LABELS'] || 'false'}"
25
+ skip_container_metadata "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_CONTAINER_METADATA'] || 'false'}"
26
+ skip_master_url "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_MASTER_URL'] || 'false'}"
27
+ skip_namespace_metadata "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_NAMESPACE_METADATA'] || 'false'}"
28
+ </filter>
29
+
30
+ <filter kubernetes.**>
31
+ @type record_transformer
32
+ enable_ruby
33
+ <record>
34
+ message ${record["log"]} ${record["message"]}
35
+ timestamp ${record["time"]}
36
+ {{- if or .Values.kubernetes.cluster_name .Values.global.clusterName }}
37
+ {{ include "kubernetes.cluster_name" . | nindent 8 }}
38
+ {{- end}}
39
+ {{- if .Values.fluent.device_less_logs }}
40
+ resource.service.name ${record.dig("kubernetes","labels","app") != nil ? record.dig("kubernetes","labels","app") : record.dig("kubernetes","labels","app_kubernetes_io/name") != nil ? record.dig("kubernetes","labels","app_kubernetes_io/name") : record.dig("kubernetes","container_name") != nil ? record.dig("kubernetes","container_name") : record.dig("kubernetes","pod_name") != nil ? record.dig("kubernetes","pod_name") : "unknown" }
41
+ resource.service.namespace ${record["kubernetes"]["namespace_name"]}
42
+ {{- end}}
43
+ </record>
44
+ remove_keys log
45
+ </filter>
46
+
47
+ <match kubernetes.**>
48
+ @type lm
49
+ company_name {{ if .Values.lm_company_name }} {{ .Values.lm_company_name }} {{ else }} {{ required "A valid .Values.lm_company_name or .Values.global.account entry is required!" .Values.global.account }} {{ end }}
50
+ resource_mapping {"kubernetes.pod_name": "auto.name"}
51
+ {{- if and ( or .Values.lm_access_id .Values.global.accessID ) ( or .Values.lm_access_key .Values.global.accessKey) }}
52
+ access_id {{ .Values.lm_access_id | default .Values.global.accessID }}
53
+ access_key {{ .Values.lm_access_key | default .Values.global.accessKey }}
54
+ {{- else if .Values.lm_bearer_token }}
55
+ bearer_token {{ .Values.lm_bearer_token }}
56
+ {{- else }} {{ required "Either specify valid lm_access_id and lm_access_key both or lm_bearer_token for authentication with LogicMonitor." .Values.lm_bearer_token }}
29
57
{{- end}}
30
- </record>
31
- remove_keys log
32
- </filter>
58
+ debug false
59
+ compression gzip
60
+ include_metadata {{ hasKey .Values.fluent "include_metadata" | ternary .Values.fluent.include_metadata true }}
61
+ device_less_logs {{ .Values.fluent.device_less_logs | default false }}
62
+ <buffer>
63
+ @type memory
64
+ flush_interval {{ .Values.fluent.buffer.memory.flush_interval | default "1s" }}
65
+ chunk_limit_size {{ .Values.fluent.buffer.memory.chunk_limit_size | default "8m" }}
66
+ flush_thread_count {{ .Values.fluent.buffer.memory.flush_thread_count | default "8"}}
67
+ </buffer>
68
+ </match>
69
+ </label>
70
+
33
71
34
- <match kubernetes.**>
35
- @type lm
36
- company_name {{ if .Values.lm_company_name }} {{ .Values.lm_company_name }} {{ else }} {{ required "A valid .Values.lm_company_name or .Values.global.account entry is required!" .Values.global.account }} {{ end }}
37
- resource_mapping {"kubernetes.pod_name": "auto.name"}
38
- {{- if and ( or .Values.lm_access_id .Values.global.accessID ) ( or .Values.lm_access_key .Values.global.accessKey) }}
39
- access_id {{ .Values.lm_access_id | default .Values.global.accessID }}
40
- access_key {{ .Values.lm_access_key | default .Values.global.accessKey }}
41
- {{- else if .Values.lm_bearer_token }}
42
- bearer_token {{ .Values.lm_bearer_token }}
43
- {{- else }} {{ required "Either specify valid lm_access_id and lm_access_key both or lm_bearer_token for authentication with LogicMonitor." .Values.lm_bearer_token }}
44
- {{- end}}
45
- debug false
46
- compression gzip
47
- include_metadata {{ hasKey .Values.fluent "include_metadata" | ternary .Values.fluent.include_metadata true }}
48
- device_less_logs {{ .Values.fluent.device_less_logs | default false }}
49
- <buffer>
50
- @type memory
51
- flush_interval {{ .Values.fluent.buffer.memory.flush_interval | default "1s" }}
52
- chunk_limit_size {{ .Values.fluent.buffer.memory.chunk_limit_size | default "8m" }}
53
- flush_thread_count {{ .Values.fluent.buffer.memory.flush_thread_count | default "8"}}
54
- </buffer>
55
- </match>
56
72
kubernetes.conf : |
57
73
<source>
58
74
@type tail
@@ -79,26 +95,15 @@ data:
79
95
80
96
<filter kubernetes.**>
81
97
@type concat
82
- key log
98
+ key {{ .Values.kubernetes.multiline_concat_key }}
83
99
seperator ""
84
100
multiline_start_regexp {{ .Values.kubernetes.multiline_start_regexp }}
85
- timeout_label @NORMAL
101
+ timeout_label @PROCESS_AFTER_CONCAT
86
102
</filter>
87
103
88
- <label @NORMAL >
89
- <match kubernetes.**>
90
- @type stdout
91
- </match>
92
- </label>
104
+ <match kubernetes.** >
105
+ @type relabel
106
+ @label @PROCESS_AFTER_CONCAT
107
+ </match>
108
+
93
109
94
- <filter kubernetes.**>
95
- @type kubernetes_metadata
96
- @id filter_kube_metadata
97
- kubernetes_url "#{ENV['FLUENT_FILTER_KUBERNETES_URL'] || 'https://' + ENV.fetch('KUBERNETES_SERVICE_HOST') + ':' + ENV.fetch('KUBERNETES_SERVICE_PORT') + '/api'}"
98
- verify_ssl "#{ENV['KUBERNETES_VERIFY_SSL'] || true}"
99
- ca_file "#{ENV['KUBERNETES_CA_FILE']}"
100
- skip_labels "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_LABELS'] || 'false'}"
101
- skip_container_metadata "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_CONTAINER_METADATA'] || 'false'}"
102
- skip_master_url "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_MASTER_URL'] || 'false'}"
103
- skip_namespace_metadata "#{ENV['FLUENT_KUBERNETES_METADATA_SKIP_NAMESPACE_METADATA'] || 'false'}"
104
- </filter>
0 commit comments