Модуль централизованного хранения логов (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 лога будут перенаправлены, то они не будут доступны для просмотра на вкладке “События безопасности” дашбордов в графическом интерфейсе платформы “Штурвал”.
Ротация логов
По умолчанию логи в кластере хранятся два дня. Для изменения этого периода выполните следующие действия:
-
После завершения установки платформы авторизуйтесь в интерфейсе платформы,
https://front.<ingress>
. Так вам будет присвоен токен для авторизации в OpenSearch. -
Авторизуйтесь, нажав на кнопку 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.