Передача логов кластера Yandex Managed Service for Kubernetes в Cloud Logging
Обработчик логов Fluent Bit позволяет транслировать логи кластера Managed Service for Kubernetes в сервис Yandex Cloud Logging. Для передачи логов используется модуль Fluent Bit plugin for Yandex Cloud Logging.
Чтобы настроить передачу логов:
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте сервисный аккаунт, необходимый для работы Fluent Bit.
-
Назначьте ему роль
logging.writer
. -
Создайте для него авторизованный ключ и сохраните его в файл
key.json
:yc iam key create \ --service-account-name <имя сервисного аккаунта для Fluent Bit> \ --output key.json
-
-
Создайте кластер Kubernetes и группу узлов любой подходящей конфигурации с версией Kubernetes не ниже 1.21.
-
Установите kubectl и настройте его на работу с созданным кластером.
Установите и настройте Fluent Bit
- Установите Fluent Bit согласно инструкции.
- Проверьте передачу логов кластера Kubernetes в Cloud Logging.
-
Создайте объекты, необходимые для работы Fluent Bit:
-
Для кластеров с версией Kubernetes до 1.21 включительно:
kubectl create namespace logging && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-service-account.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-binding.yaml
-
Для кластеров с версией Kubernetes с 1.22 и выше:
kubectl create namespace logging && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-service-account.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-1.22.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-binding-1.22.yaml
-
-
Создайте секрет, содержащий ключ сервисного аккаунта:
kubectl create secret generic secret-key-json \ --from-file=key.json \ --namespace logging
-
Скачайте конфигурационный файл
config.yaml
:
wget https://raw.githubusercontent.com/knpsh/yc-logging-fluent-bit-example/main/config.yaml
-
Укажите параметры трансляции логов в блоке
data.output-elasticsearch.conf
файлаconfig.yaml
:... output-elasticsearch.conf: | [OUTPUT] Name yc-logging Match * group_id <идентификатор лог-группы> resource_id <опционально: идентификатор кластера Kubernetes> message_key log authorization iam-key-file:/etc/secret/key.json ...
Идентификатор лог-группы можно получить со списком лог-групп в каталоге.
При необходимости укажите дополнительные настройки Fluent Bit.
-
Создайте объекты Fluent Bit:
kubectl apply -f config.yaml
Результат:
configmap/fluent-bit-config created daemonset.apps/fluent-bit created
-
Убедитесь, что под Fluent Bit перешел в состояние
Running
:kubectl get pods -n logging
-
Проверьте передачу логов кластера Kubernetes в Cloud Logging.
Удалите созданные ресурсы
Если созданные ресурсы вам больше не нужны, удалите их:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера публичный статический IP-адрес, удалите его.
- Удалите лог-группу.