Логи кластера
Если в платформе установлен, включен и работает модуль сбора системных логов, пользователь с правами группы 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.
-
Перейдите в интерфейс OpenSearch
https://opensearch-dashboards.<ingress>
, где вместопропишите ваш FQDN или VIP платформы. -
Авторизуйтесь, нажав на кнопку log in with single sign-on.
-
В модальном окне выберите explore on my own.
-
Создайте правило для всех вновь созданных индексов. Для этого внизу левого меню найдите 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” определяет время жизни старых индексов. Чем дольше хранится индекс, тем больше места на диске он занимает.
- Запустите применение манифеста, нажав на кнопку выполнения.
Просмотреть созданную политику можно в левом меню в разделе State Management Policy.
-
Перейдите в разделе Index Management на страницу Indices.
-
Слева от названия индекса выберите все неслужебные индексы (индексы, которые в начале названия не имеют точку), в выпадающем списке Actions выберите apply policy.
-
Среди доступных политик выберите remove_old_indexes, нажмите apply.