Как правильно настроить входящие данные (input) для Fluent Bit в Graylog?

Всем привет! <br/> <br/> Как правильно настроить прием логов из Kubernetes с использованием Fluent Bit? Я создал input GELF TCP в Graylog. <br/> <br/> <pre><code>bind_address: 0.0.0.0
charset_name: UTF-8
decompress_size_limit: 8388608
max_message_size: 2097152
number_worker_threads: 8
override_source: &lt;empty&gt;
port: 12201
recv_buffer_size: 1048576
tcp_keepalive: false
tls_cert_file: &lt;empty&gt;
tls_client_auth: disabled
tls_client_auth_cert_file: &lt;empty&gt;
tls_enable: false
tls_key_file: &lt;empty&gt;
tls_key_password: ********
use_null_delimiter: true</code></pre> <br/> <br/> У меня Graylog развернут на двух узлах, и в конфигурации Fluent Bit я указал их в OUTPUT.
  • 13 февраля 2025 г. 17:04
Ответы на вопрос 2
Для настройки приема логов из Kubernetes с использованием Fluent Bit и отправки их в Graylog с использованием GELF TCP, необходимо правильно настроить как Fluent Bit, так и Graylog. Поскольку вы уже настроили input в Graylog, вам нужно сосредоточиться на конфигурации Fluent Bit. Вот основные шаги и рекомендации по настройке:

### Конфигурация Fluent Bit

1. **Input**: Убедитесь, что у вас правильно настроен input для Fluent Bit, чтобы он собирал логи из вашего Kubernetes. Обычно используется input типа `tail`.

```ini
[INPUT]
    Name              tail
    Path              /var/log/containers/*.log
    Parser            docker
    Tag               kube.*
    DB                /var/log/flb_kube.db
    Mem_Buf_Limit     5MB
    Skip_Long_Lines   On
```

2. **Filter**: После того, как Fluent Bit соберет логи, вы можете добавить фильтры, чтобы преобразовать ваши логи, если это необходимо. Например, вы можете добавить фильтр для аннотаций или метаданных Kubernetes:

```ini
[FILTER]
    Name           kubernetes
    Match          kube.*
    Merge_Log      On
    Kube_Meta      On
    Kube_URL       https://kubernetes.default.svc:443
    Kube_Tag_Prefix  kube.var.log.containers.
    tls      On
    tls.ca_file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    tls.crt_file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    tls.key_file /var/run/secrets/kubernetes.io/serviceaccount/token
```

3. **Output**: Настройте output для отправки данных в Graylog через GELF TCP.

```ini
[OUTPUT]
    Name              gelf
    Match             kube.*
    Host              <GRAYLOG_HOST>  # IP или DNS имя вашего Graylog
    Port              12201
    Mode              tcp
    Gelf_Time_Format  iso8601
```

### Дополнительные рекомендации

- Убедитесь, что в Kubernetes у вас есть правильно настроенные RBAC, чтобы Fluent Bit мог получать необходимые метаданные.
  
- Проверьте, доступны ли порты на узлах Graylog (12201) и правильно ли они настроены для входящих соединений (firewall, security groups и т.д.).

- Подключите дополнительные параметры в зависимости от вашего случая использования. Например, можно включить buffering, чтобы избежать потерь данных.

- Убедитесь, что в Graylog в настройках input у вас выбрана поддержка GELF TCP и правильно указаны другие параметры (размеры сообщений и т.д.).

### Проверка

1. Запустите Fluent Bit и проверьте его логи на наличие ошибок подключения к Graylog.
2. Проверьте статус input в Graylog, чтобы убедиться, что логи поступают.
3. Проверьте, что логи отображаются в Graylog через интерфейс.

Эта конфигурация позволяет Fluent Bit эффективно собирать и отправлять логи из Kubernetes в Graylog с использованием GELF TCP. Если возникают какие-либо специфические ошибки или проблемы, предоставьте дополнительную информацию, чтобы помочь с конкретными вопросами.
Если ставить fluentbit из helm,  то там уже все есть, только output прописать в файле values.yaml, 
В любом случае можно найти этот хелм чарт и посмотреть как там сделано
Похожие вопросы