Логи в кластере Managed Kubernetes
В кластерах Managed Kubernetes можно получать логи — логи кластера, логи контейнеров и аудитные логи.
В логах кластера отображаются события, которые происходят с кластером. Например, создание кластера, изменение групп нод, обновление сертификатов и версии. Если запрос был выполнен автоматически, например, произошло обновление сертификатов по расписанию, то это действие тоже попадет в логи. Вы можете посмотреть логи кластера в панели управления.
В логи контейнеров попадают события, которые происходят с контейнерами. Например, создание и удаление контейнера. Файлы логов контейнеров хранятся в каталоге /var/log/pods/
или /var/log/containers
. Логи отдельного контейнера можно посмотреть с помощью kubectl logs <container_name>
, где <container_name>
— имя контейнера. Если в кластере Managed Kubernetes много контейнеров, вы можете настроить получение логов контейнеров через Filebeat.
В аудитных логах отображаются события, которые происходят в кластере. Например, в подах или сервисах. Эти события могут быть инициированы пользователями, приложениями или Control Plane. Список событий, которые попадают в логи, и параметры этих событий зависят от политики (audit policy). Политику, которая применяется для аудитных логов Managed Kubernetes, можно посмотреть в документации Selectel на сайте GitHub.
Аудитные логи можно хранить в системе хранения и анализа логов. Например, во внешних хранилищах данных (например, Elasticsearch или Stackdriver) или в SIEM-системе (например, MaxPatrol SIEM или KUMA). Чтобы получать аудитные логи из кластера Managed Kubernetes в системе хранения и анализа логов, настройте интеграцию.
Посмотреть логи кластера
-
В панели управления перейдите в раздел Облачная платформа → Kubernetes.
-
Откройте страницу кластера → вкладка Логи.
-
Посмотрите статус событий кластера в строке события → столбец Статус.
Настроить получение логов контейнеров через Filebeat
Filebeat по умолчанию настроен на работу с Docker. В Selectel вместо Docker в качестве среды исполнения контейнеров (CRI) используется containerd.
Чтобы настроить механизм получения метаданных логов через Filebeat, используйте конфигурационный файл:
filebeat.inputs:
- type: container
fields_under_root: true
paths:
- "/var/log/containers/*.log"
processors:
- add_kubernetes_metadata:
host: ${NODE_NAME}
in_cluster: true
default_matchers.enabled: false
matchers:
- logs_path:
logs_path: "/var/log/containers/"
Настроить интеграцию с системой хранения и анализа логов
Аудитные логи доступны в кластерах с версией Kubernetes 1.28 и выше. В кластерах Managed Kubenretes на облачных серверах вы можете обновить версию кластера. Во время обновления версии аудитные логи недоступны.
Система хранения и анализа логов, которую вы используете, должна быть доступна по протоколу HTTPS.
- Включите аудитные логи — при создании кластера или в существующем кластере.
- Подключитесь к кластеру.
- Настройте экспорт аудитных логов в систему хранения и анализа логов.
1. Включить аудитные логи в существующем кластере
- В панели управления перейдите в раздел Облачная платформа → Kubernetes.
- Откройте страницу кластера → вкладка Настройки.
- В блоке Логирование включите тумблер Аудитные логи.
2. Подключиться к кластеру
Используйте инструкцию Подключиться к кластеру для нужной операционной системы.
3. Настроить экспорт аудитных логов в систему хранения и анализа логов
Аудитные логи начнут передаваться в систему хранения и анализа логов после создания объекта Secret.
-
Создайте yaml-файл с манифестом для объекта Secret:
apiVersion: v1
kind: Secret
metadata:
name: mks-audit-logs
data:
host: <host>
port: <port>
username: <username>
password: <password>
ca.crt: <ca_certificate>Укажите:
<host>
— DNS- или IP-адрес системы хранения и анализа логов;<port>
— порт для подключения к системе хранения и анализа логов;- опционально:
<username>
— имя пользователя системы хранения и анализа логов; - опционально:
<password>
— пароль пользователя системы хранения и анализа логов; - опционально:
<ca_certificate>
— сертификат из приватного центра сертификации (CA). Если для подключения используется Let's Encrypt сертификат, этот параметр не нужно заполнять.
-
Примените манифест и создайте объект Secret в пространстве имен
kube-system
:kubectl apply -f <secret.yaml> --namespace=kube-system
Укажите
<secret.yaml>
— имя yaml-файла с манифестом для создания нового объекта Secret. -
Проверьте, что объект Secret создан:
kubectl get secret mks-audit-logs --output=yaml --namespace=kube-system