Fluent Bit
Fluent Bit — агент, который позволяет настроить процесс сбора, обработки и выгрузки логов, а также импортировать логи из сторонних хранилищ. Fluent Bit расширяется с помощью output- и input-плагинов. Перечень плагинов можно посмотреть на сайте Fluent Bit (Outputs, Inputs).
С помощью Fluent Bit вы можете работать с логами в сервисе Логи: получать логи или добавлять логи из собственного хранилища.
Перед началом работы настройте Fluent Bit.
Настроить Fluent Bit
- Добавьте сервисного пользователя.
- Выдайте пользователю S3-ключ.
- Настройте агент для получения или добавления событий.
1. Добавить сервисного пользователя
Добавьте сервисного пользователя с разрешением в области доступа Проекты и ролью:
Добавлять пользователей может Владелец аккаунта или пользователи с ролью iam_admin.
2. Выдать S3-ключ пользователю
Пользователи с доступом в панель управления могут выдавать себе S3-ключи, но мы рекомендуем создавать сервисных пользователей и выдавать S3-ключи им.
Выдавать S3-ключи другим пользователям может только Владелец аккаунта или пользователь с ролью iam_admin.
Сервисный пользователь не может получить S3-ключ самостоятельно, потому что у него нет доступа в панель управления — ему должен выдать ключ Владелец аккаунта или iam_admin.
Для каждого проекта необходимо создавать отдельный ключ. На один проект можно выпустить несколько ключей.
-
В панели управления в верхнем меню нажмите Аккаунт.
-
Перейдите в раздел с нужным типом пользователей:
- Пользователи — для пользователей с доступом в панель управления;
- Сервисные пользователи — для сервисных пользователей.
-
Откройте страницу пользователя → вкладка Доступ .
-
В блоке S3-ключи нажмите Добавить ключ.
-
Введите имя ключа.
-
Выберите проект, для которого будет работать ключ.
-
Нажмите Сгенерировать. Будет сгенерировано два значения:
- Access key — Access Key ID, идентификатор ключа;
- Secret key — Secret Access Key, секретный ключ.
-
Нажмите Скопировать и сохраните ключ — после закрытия окна его нельзя будет просмотреть.
3. Настроить агент
Получение логов
Добавление логов
С помощью встроенного плагина fluent-bit-cloudwatch-input-plugin вы можете настроить выгрузку событий из сервиса Логи в свою инфраструктуру, например в Elasticsearch, Loki или Kafka.
-
Скачайте файл конфигурации
config/fluent-bit.yaml. -
Откройте файл конфигурации
config/fluent-bit.yamlв текстовом редакторе. -
В параметрах файла конфигурации укажите:
region— пул, напримерru-9;endpoint— URL для обращения к API логов. Список URL можно посмотреть в инструкции Список URL;log_group_name— имя группы логов, напримерs/lbaas/Chromie-lb;log_stream_name— имя стрима событий (stream), напримерhttp-21380357;sqlite_path— адрес базы данных SQLite, которая хранит информацию о последних полученных событиях. Одну базу данных можно использовать для нескольких групп и стримов.
Список событий из метода GetLogEvents Amazon CloudWatch API разделяется на отдельные записи с помощью фильтра Lua. Каждое полученное событие преобразовывается в отдельную независимую запись (record) Fluent Bit. Это позволяет обрабатывать события по отдельности, тегировать и отправлять в разные output-плагины. В конфигурационном файле используется output-плагин stdout, но вы можете использовать любой, например Elasticsearch или Kafka.
-
Опционально: чтобы в рамках одного конфигурационного файла настроить сбор данных из нескольких групп и стримов, в блоке
pipelineдобавьте соответствующие блокиinputs. -
Запустите Fluent Bit:
docker run \
--name fluent-bit-cloudwatch \
--rm \
-v ${PWD}/config/fluent-bit.yaml:/fluent-bit/etc/fluent-bit.yaml:ro \
-v ${PWD}/sqlite:/var/lib/fluent-bit/cloudwatch/sqlite:rw \
-e AWS_ACCESS_KEY_ID=<access_key> \
-e AWS_SECRET_ACCESS_KEY=<secret_key> \
ghcr.io/selectel/fluent-bit-cloudwatch-input-plugin:latestУкажите:
<access_key>— значение поля Access key из S3-ключа, который вы выдали пользователю;<secret_key>— значение поля Secret key из S3-ключа, который вы выдали пользователю.
Добавить
<access_key>и<secret_key>в контейнер можно любым способом:- через переменные среды окружения. Подробнее в инструкции Using environment variables to globally configure AWS SDKs and tools документации Amazon;
- или через файлы
configиcredentials. Подробнее в инструкции Using shared config and credentials files to globally configure AWS SDKs and tools документации Amazon.
Пример вывода в stdout в формате MessagePack:
...
[1029] cloudwatch-input.0: [[1751577177.000000000, {}], {"ingestion_time"=>1750606362344, "message"=>"{"level":"System", "msg":"InnoDB initialization has started."}", "timestamp"=>1750606335369}]
[1031] cloudwatch-input.0: [[1751577177.000000000, {}], {"ingestion_time"=>1750608768923, "message"=>"{"level":"System", "msg":"InnoDB initialization has ended."}", "timestamp"=>1750608747624}]
...
-
Установите агент Fluent Bit. Используйте инструкцию Download and install Fluent Bit официальной документации Fluent Bit.
-
Откройте файл конфигурации
config/fluent-bit.yamlв текстовом редакторе. -
Добавьте в файл
fluent-bit.yamlконфигурацию для добавления логов. Пример конфигурации:inputs:
- name: tail
path: /var/log/syslog
tag: system.logs
outputs:
- name: stdout
match: '*'
- name: cloudwatch_logs
match: system.logs
region: <pool>
endpoint: <log_endpoint>
log_group_name: <log_group_name>
log_stream_name: <log_stream_names> # or ${HOSTNAME}Укажите:
<pool>— пул, напримерru-9;<log_endpoint>— URL для обращения к API сервиса Логи. Список URL можно посмотреть в инструкции Список URL;<log_group_name>— имя группы логов, напримерs/lbaas/Loabalancer-1;<log_stream_names>— список стримов, из которых нужно получать логи, например[http-c48d78e2-6f49-43b5-80b7-2f2b8e5f669d].
-
Добавьте значения полей Access Key и Secret Key из S3-ключа одним из способов:
- через переменные окружения. Подробнее в инструкции Using environment variables to globally configure AWS SDKs and tools документации Amazon;
- или файлы
configиcredentials. Подробнее в инструкции Using environment variables to globally configure AWS SDKs and tools документации Amazon
-
Запустите Fluent Bit:
sudo /opt/fluent-bit/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.conf -vv