Мне нужна помощь, чтобы настроить Fluentd для фильтрации журналов по степени серьезности.
у нас есть две разные системы мониторинга Elasticsearch и Splunk, когда мы включили уровень журнала DEBUG в нашем приложении, оно ежедневно генерирует тонны журналов, поэтому мы хотим отфильтровать журналы по серьезности и отправить его в 2 разные системы ведения журналов.
когда журналы имеют серьезность: INFO и ERROR, затем перенаправляют журналы контейнеров в Splunk, и кроме тех журналов DEBUG, TRACE, WARN и других журналов, которые должны отправляться в elastocsearch, пожалуйста, помогите мне, как мы можем отфильтровать их.
Вот формат сгенерированного журнала:
event.log: { "@ тяжести": "DEBUG", "@ метки времени": "2019-01-18T00: 15: 34.416Z", "@ traceId":
event.log: { "@ тяжести": "INFO", "@ метки времени": "2019-01-18T00: 15: 34.397Z", "@ traceId":
event.log: { "@ тяжести": "WARN", "@ метки времени": "2019-01-18T00: 15: 34.920Z", "@ traceId":
пожалуйста, найдите ниже конфигурацию fluentd.
Я добавил метод исключения в фильтре, а также установил плагин grep, добавил метод grep, он не работает.
добавлен фильтр для тестирования:
<exclude>
@type grep
key severity
pattern DEBUG
</exclude>
также добавлено:
<filter kubernetes.**>
@type grep
exclude1 severity (DEBUG|NOTICE|WARN)
</filter>
kind: ConfigMap
apiVersion: v1
metadata:
name: fluentd-config
namespace: logging
labels:
k8s-app: fluentd
data:
fluentd-standalone.conf: |
<match fluent.**>
@type null
</match>
# include other configs
@include systemd.conf
@include kubernetes.conf
fluentd.conf: |
@include systemd.conf
@include kubernetes.conf
fluentd.conf: |
# Use the config specified by the FLUENTD_CONFIG environment variable, or
# default to fluentd-standalone.conf
@include "#{ENV['FLUENTD_CONFIG'] || 'fluentd-standalone.conf'}"
kubernetes.conf: |
<source>
@type tail
@log_level debug
path /var/log/containers/*.log
pos_file /var/log/kubernetes.log.pos
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag kubernetes.*
format json
</source>
<filter kubernetes.**>
@type kubernetes_metadata
verify_ssl false
<exclude>
@type grep
key severity
pattern DEBUG
</exclude>
</filter>
<filter kubernetes.**>
@type record_transformer
enable_ruby
<record>
event ${record}
</record>
renew_record
auto_typecast
</filter>
<filter kubernetes.**>
@type grep
exclude1 severity (DEBUG|NOTICE|WARN)
</filter>
kubernetes.conf: |
<source>
@type tail
@log_level debug
path /var/log/containers/*.log
pos_file /var/log/kubernetes.log.pos
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag kubernetes.*
format json
</source>
<filter kubernetes.**>
@type kubernetes_metadata
verify_ssl false
</filter>
<filter kubernetes.**>
@type record_transformer
enable_ruby
<record>
event ${record}
</record>
renew_record
auto_typecast
</filter>
# The `all_items` paramater isn't documented, but it is necessary in order for
# us to be able to send k8s events to splunk in a useful manner
<match kubernetes.**>
@type copy
<store>
@type splunk-http-eventcollector
all_items true
server localhost:8088
protocol https
verify false
</store>
<store>
@type elasticsearch
host localhost
port 9200
scheme http
ssl_version TLSv1_2
ssl_verify false
</buffer>
</store>
</match>