Fluentbit Kubernetes - Как извлечь поля из существующих журналов
Я настроил стек EFK с Fluent-bit в моем кластере Kubernetes. Я вижу журналы в Кибане.
Я также развернул модуль nginx, я также вижу логи этого модуля nginx в Кибане. Но все данные журнала отправляются в одно поле "журнал", как показано ниже.
Как я могу извлечь каждое поле в отдельное поле. Решение для fluentd уже есть в этом вопросе. Кибана - Как извлечь поля из существующих логов Kubernetes
Но как я могу добиться того же с беглым битом?
Я попробовал следующее, добавив еще один раздел FILTER в разделе FILTER по умолчанию для Kubernetes, но это не сработало.
[FILTER] Name parser Match kube.* Key_name log Parser nginx
Исходя из этого ( https://github.com/fluent/fluent-bit/issues/723), я вижу, что у grok нет поддержки fluent-bit.
2 ответа
В нашей официальной документации для фильтра Kubernetes у нас есть пример того, как заставить ваш Pod предлагать парсер для ваших данных на основе аннотации:
Посмотрите на этот configmap:
Парсер nginx должен быть там:
[PARSER]
Name nginx
Format regex
Regex ^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
Time_Key time
Time_Format %d/%b/%Y:%H:%M:%S %z