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 предлагать парсер для ваших данных на основе аннотации:

https://docs.fluentbit.io/manual/filter/kubernetes

Посмотрите на этот configmap:

https://github.com/fluent/fluent-bit-kubernetes-logging/blob/master/output/elasticsearch/fluent-bit-configmap.yaml

Парсер 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
Другие вопросы по тегам