Модуль централизованного хранения логов (OpenSearch)

Модуль централизованного хранения логов использует за основу OpenSearch.

Если в платформе и клиентском кластере установлен, включен и работает модуль сбора системных логов (Fluentbit), пользователи, имеющие в наборах доступа права в OpenSearch могут авторизоваться в OpenSearch для просмотра логов.

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

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

В случае необходимости вы можете увеличить дисковое пространство для хранения логов OpenSearch. Подробнее на странице Как увеличить объем хранилища OpenSearch, VictoriaMetrics.

Перейдите на страницу Анализ состояния в платформе Штурвал , чтобы ознакомиться с совместной работой модулей, обеспечивающих логирование в платформе.

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

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

В интерфейсе 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 ресурса Deployment “shturval-logs-dashboards”

Настройка подключения kube-audit логов

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

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

  • Для кластера управления: в названии введите kube-audit- и префикс имени вашего кластера управления, затем добавьте -*, это позволит выводить данные по всем датам для этого индекса. Должно получиться так: kube-audit-*
  • Для клиентского кластера: в названии введите kube-audit- и префикс имени вашего кластера, затем добавьте -*, это позволит выводить данные по всем датам для этого индекса. Должно получиться так: kube-audit-myclustername-*

Уточнить название индекса можно в разделе Management/Index Management/Indexes.

Нажмите 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 необходимо создать секрет с логином и паролем для доступа к серверу.

Для этого в каждом кластере, для которого нужно сделать перенаправления логов, создайте секрет:

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

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

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

Обратите внимание! Если kube-audit лога будут перенаправлены, то они не будут доступны для просмотра на вкладке “События безопасности” дашбордов в графическом интерфейсе платформы “Штурвал”.

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

По умолчанию логи в кластере хранятся два дня. Для изменения этого периода выполните следующие действия:

  1. После завершения установки платформы авторизуйтесь в интерфейсе платформы, https://front.<ingress>. Так вам будет присвоен токен для авторизации в OpenSearch.

  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.