Логи кластера

Если в платформе установлен, включен и работает модуль сбора системных логов, пользователь с правами группы shturval-embedded-admin может авторизоваться в OpenSearch для просмотра логов кластера.

Логи вашего кластера доступны из дашборда кластера по нажатию на кнопку Посмотреть логи.

Для авторизации откройте ссылку в том же окне браузера, в котором открыта платформа. Нажмите кнопку log in with single sign-on, авторизация произойдет автоматически. В аккаунте будут доступны логи безопасности, инфраструктурные логи и логи приложений всех кластеров платформы, в которых установлен модуль сбора системных логов.

При необходимости внутри OpenSearch вы можете создать роли, разграничивающие права доступа по кластерам.

Просмотр логов

При первом переходе в интерфейсе необходимо определить tenants. Для этого в модельном окне Select your tenant выберите пункт Global.

В интерфейсе OpenSearch перейдите в левое меню, раздел Management/Dashboards Management/Index patterns. Нажмите кнопку Create index pattern.

Введите префикс имени кластера, в конце укажите -*:

  • для клиентского кластера используйте в виде префикса имя клиентского кластера.
  • для кластера управления (платформы) используйте имя кластера, указанное при инсталляции кластера управления. Для просмотра имени кластера управления, перейдите в раздел Платформа/Установленные системные сервисы, найдите системный сервис “Модуль локального сбора логов”, нажмите “Управлять”, в блоке “Спецификация” найдите значение поля logstashPrefix. Это название вашего кластера управления. Используйте его в качестве префикса имени кластера.

Должно получиться myclustername-*

Нажмите Next step.

В поле Time field выберите @timestamp.

Нажмите Create index pattern.

Такой Index pattern необходимо создать для каждого кластера.

Перейдите в левом меню на вкладку OpenSearch Dashboards/Discover, в перечне индексов выберите Index pattern в соответствии с названием созданного вами индекса для вашего кластера.

В некоторых случаях при инициализации Dashboards, когда кластер OpenSearch ещё не полностью готов, создаётся битый индекс .kibana_1, в котором хранятся в том числе index pattern.

Решение:

  • Удалить индекс .kibana_1
  • Перезагрузить Pod деплоймента shturval-logs-dashboards

Настройка подключения audit_policy

Для кластера, в котором установлены расширенные настройки безопасности, есть возможность настройки audit_policy и просмотра логов в OpenSearch.

Для этого в интерфейсе OpenSearch перейдите в левое меню, раздел Management/Dashboards Management/Index patterns. Нажмите кнопку Create index pattern.

В названии введите kube-audit- и префикс имени вашего кластера впишите kube-audit-myclustername-*

Нажмите Next step.

В поле Time field выберите @timestamp. Завершите создание, нажав на кнопку Create index pattern.

Перейдите в левом меню на вкладку OpenSearch Dashboards/Discover, в перечне индексов выберите Index pattern в соответствии с названием созданного вами индекса для вашего кластера.

Перенаправление логов

Для управления сбором логов в кластерах платформы Штурвал используется Fluent Operator. Подробнее о настройке этого системного сервиса

Данный контроллер поддерживает следующие пользовательские ресурсы (Kubernetes Custom Resources):

Kind Group Version
ClusterFilter fluentbit.fluent.io v1alpha2
ClusterFluentBitConfig fluentbit.fluent.io v1alpha2
ClusterInput fluentbit.fluent.io v1alpha2
ClusterOutput fluentbit.fluent.io v1alpha2
ClusterParser fluentbit.fluent.io v1alpha2
Collector fluentbit.fluent.io v1alpha2
FluentBit fluentbit.fluent.io v1alpha2

Для настройки перенаправления логов выполните следующие действия:

В каждом кластере в неймспейсе logging необходимо создать секрет с логином и паролем для доступа к серверу.

Это можно сделать с помощью применения манифеста в cli:

apiVersion: v1
kind: Secret
metadata:
  name: fluent-bit-output-es
type: Opaque
stringData:
  username: имя_пользователя
  password: пароль1234

Либо в интерфейсе платформы. Перейдите на страницу Кластер/Название кластера/Неймспейсы/logging/Хранилище/Secrets.

Создайте секрет с типом Opaque. В блоке Ключи создайте два ключа, где

  • Первый ключ: username, значение: имя_пользователя
  • Второй ключ: password, начение: пароль1234

Замените значения имя_пользователя и пароль1234 на валидные значения.

Перейдите в раздел Кластеры/Название Кластера/Системные сервисы/Установленные системные сервисы.

Найдите системный сервис: Модуль локального сбора логов.

В блоке спецификация системного сервиса указажите имя и порт сервера, а также имя кластера в качестве значения logstashPrefix:

fluentbit:
  output:
    es:
      enable: true
      host: хост
      port: 9200
      logstashFormat: false
      index: значение_индекса
      httpUser:
       valueFrom:
         secretKeyRef:
           key: fluent-bit-output-es
           name: username
           optional: true
      httpPassword:
       valueFrom:
         secretKeyRef:
           key: fluent-bit-output-es
           name: password
           optional: true
      suppressTypeName: true
      tls:
        verify: false
      traceError: true

Для перенаправления логов в syslog создайте манифест в формате yaml:

apiVersion: fluentbit.fluent.io/v1alpha2
kind: ClusterOutput
metadata:
  annotations:
    meta.helm.sh/release-name: shturval-log-operator
    meta.helm.sh/release-namespace: logging
  labels:
    app.kubernetes.io/managed-by: Helm
    fluentbit.fluent.io/component: logging
    fluentbit.fluent.io/enabled: "true"
  name: syslog
spec:
  match: *
  syslog:
    host: "ip_используемого_siem"
    port: 514
    mode: udp

Примените манифест с помощью команды в cli:

kubectl apply -f /путь_к_манифесту/название_манифеста.yaml

Ротация логов

После завершения установки платформы авторизуйтесь в интерфейсе платформы. Так вам будет присвоен токен для авторизации в OpenSearch.

  1. Перейдите в интерфейс OpenSearch https://opensearch-dashboards.<ingress>, где вместо пропишите ваш FQDN или VIP платформы.

  2. Авторизуйтесь, нажав на кнопку log in with single sign-on.

  3. В модальном окне выберите explore on my own.

  4. Создайте правило для всех вновь созданных индексов. Для этого внизу левого меню найдите dev tools. В левой части консоли пропишите политику:

PUT _plugins/_ism/policies/remove_old_indexes
{
  "policy": {
    "description": "Removes old indexes",
    "default_state": "active",
    "states": [
      {
        "name": "active",
        "transitions": [
          {
            "state_name": "delete",
            "conditions": {
              "min_index_age": "2d"
            }
          }
        ]
      },
      {
        "name": "delete",
        "actions": [
          {
            "delete": {}
          }
        ],
        "transitions": []
      }
    ],
    "ism_template": {
      "index_patterns": [
        "*"
      ],
      "priority": 1000
    }
  }
}

Значение параметра “min_index_age” определяет время жизни старых индексов. Чем дольше хранится индекс, тем больше места на диске он занимает.

  1. Запустите применение манифеста, нажав на кнопку выполнения.

Просмотреть созданную политику можно в левом меню в разделе State Management Policy.

  1. Перейдите в разделе Index Management на страницу Indices.

  2. Слева от названия индекса выберите все неслужебные индексы (индексы, которые в начале названия не имеют точку), в выпадающем списке Actions выберите apply policy.

  3. Среди доступных политик выберите remove_old_indexes, нажмите apply.