Внешние сервисы и интеграции
Внешний кластер PostgreSQL
Использование внешней БД — не входит в стандартное описание и процесс установки.
Требования к внешней БД
- PostgreSQL v13, v18
- Максимальное количество подключений к БД (
max_connections): >= 300 - Максимальное количество воркеров (
max_worker_processes): >= 8 - Потребуется установка расширений PostgreSQL (см. ниже)
Изменение конфигурации
Чтобы использовать уже существующий сервис PostgreSQL при установке Sage, добавьте в инвентарь группу external, в которой будет внешний PostgreSQL.
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:
postgres:
hosts:
your-external-postgres.example.com # Реальный адрес вашего PostgreSQL
external:
children:
postgres:
Порт подключения по умолчанию 5432. Если внешний PostgreSQL слушает на другом порту, переопределите его:
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/postgres.yml:
data_ports_override:
postgres: <port>
Для автоматической инициализации PostgreSQL подключение должно осуществляться под суперпользователем. Для этого укажите данные суперпользователя в своём инвентаре.
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/postgres.yml:
postgres_admin_user: # Имя суперпользователя
postgres_admin_pass: # Пароль суперпользователя
Ручная подготовка PostgreSQL (если нет суперпользователя)
Если у вас нет возможности использовать суперпользователя, отключите автоматическую настройку PostgreSQL и создайте базы данных, пользователей, схемы и расширения вручную до начала установки.
Переключите флаг postgres_manage_db_and_users в значение false.
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/postgres.yml:
postgres_manage_db_and_users: false
После этого укажите учётные данные заранее созданных пользователей в переменной postgres_init_data_sage:
postgres_init_data_sage:
- db_name: sage_grafana
username: sage_grafana
password: <password>
- db_name: sage_pager
username: sage_pager
password: <password>
- db_name: sage_sauron
username: sage_sauron
password: <password>
- db_name: sage_sla
username: sage_sla
password: <password>
- db_name: sage_logs_to_metrics
username: sage_logs_to_metrics
password: <password>
- db_name: service_map
username: service_map
password: <password>
- db_name: dp_connector
username: dp_connector
password: <password>
- db_name: otel_agents
username: otel_agents
password: <password>
1. Создание баз данных
Создайте следующие БД Sage:
dp_connectorotel_agentssage_grafanasage_logs_to_metricssage_mccsage_pagersage_sauronsage_slaservice_map
БД Spirit:
spirit_hydraspirit_iam_jwkspirit_kratosspirit_tenant_manager
БД Keycloak:
keycloak
Если установлены опциональные компоненты Anomaly Analyzer или Sage Notifier (группы anomaly/notifier), дополнительно создайте их БД:
anomaly_analyzerиanomaly_external(пользовательanomaly_analyzerв обеих Б Д)notifier(пользовательnotifier)
Пример запроса для создания БД:
CREATE DATABASE {{ db_name }};
2. Создание пользователей и выдача прав
Создайте пользователей с именами, совпадающими с именами соответствующих БД (например, для БД sage_grafana должен быть пользователь с именем sage_grafana). Каждый пользователь должен обладать полными правами на свою БД.
CREATE USER {{ username }} WITH PASSWORD '{{ password }}';
GRANT ALL PRIVILEGES ON DATABASE {{ db_name }} TO {{ username }};
Для групп anomaly/notifier потребуется выдать права владельца на БД. Также передайте учётные данные созданных пользователей в отдельные переменные:
postgres_init_data_anomaly:
- db_name: anomaly_analyzer
username: anomaly_analyzer
password: <password>
- db_name: anomaly_external
username: anomaly_analyzer
password: <password>
postgres_init_data_notifier:
- db_name: notifier
username: notifier
password: <password>
Для групп spirit и mcc также передайте учётные данные созданных пользователей:
postgres_init_data_spirit:
- db_name: spirit_kratos
username: spirit_kratos
password: <password>
- db_name: spirit_hydra
username: spirit_hydra
password: <password>
- db_name: spirit_tenant_manager
username: spirit_tenant_manager
password: <password>
- db_name: spirit_iam_jwk
username: spirit_iam_jwk
password: <password>
postgres_init_data_mcc:
- db_name: sage_mcc
username: sage_mcc
password: <password>
search_path: sage,hangfire
3. Создание схем и установка расширений
В соответствующих БД создайте необходимые схемы:
| Схема | БД |
|---|---|
sage | otel_agents |
sage | sage_grafana |
sage | sage_logs_to_metrics |
hangfire | sage_mcc |
scheduler | sage_pager |
sage | sage_sauron |
sage | sage_sla |
sage | service_map |
sage_dp_connector | dp_connector |
spirit | spirit_hydra |
spirit | spirit_iam_jwk |
spirit | spirit_kratos |
spirit | spirit_tenant_manager |
Пример запроса для создания схем:
CREATE SCHEMA IF NOT EXISTS sage;
CREATE SCHEMA IF NOT EXISTS spirit;
CREATE SCHEMA IF NOT EXISTS sage_dp_connector;
Добавьте следующие расширения каждой БД в схемах sage, spirit, sage_dp_connector:
btree_ginpg_trgmpgcryptohstoreuuid-ossp
Пример запроса для установки расширений:
CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA sage;
или
CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA spirit;
или
CREATE EXTENSION IF NOT EXISTS {{ extension }} SCHEMA sage_dp_connector;
uuid-ossp устанавливается в схему sage для всех БД Sage, кроме sage_grafana и sage_logs_to_metrics.
hstore устанавливается в схему sage_dp_connector БД dp_connector.
4. Настройка search_path
Установите search_path для пользователей в значение sage,public или spirit,public в зависимости от используемой схемы.
Не выполняйте это действие для пользователя keycloak! Приложение Keycloak использует схему public.
Пример запроса для настройки search_path:
ALTER ROLE {{ username }} SET search_path = sage,public;
или
ALTER ROLE {{ username }} SET search_path = spirit,public;
Для пользователя sage_mcc используйте search_path = sage,hangfire.
5. Keycloak
База данных Keycloak и пользователь keycloak не управляются ролью PostgreSQL. Они создаются отдельной ролью Keycloak. При использовании внешнего PostgreSQL отключите автоматическое создание отдельным флагом:
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/keycloak.yml:
keycloak_manage_db_and_users: false
Базу и пользователя keycloak создайте вручную (см. раздел 1 и раздел 2). Для пользователя keycloak не настраивайте search_path — приложение Keycloak использует схему public.
Переменные подключения Keycloak к БД
Подключение Keycloak к БД задаётся в файле clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/keycloak.yml:
keycloak_db_name: keycloak
keycloak_db_username: keycloak
keycloak_db_password: <password>
Зоны доступности Opensearch
Для чтения логов из другого ДЦ добавьте в инвентарь группы:
opensearch_proxy— содержит имена хостов, на которых будет развернут клиентopensearch_proxy_single_node— если клиент нужно развернуть только на одном хосте
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:
opensearch_proxy:
hosts:
es-client-[0:1].remote.domain:
Зоны доступности VictoriaMetrics
Для чтения метрик из другого окружения добавьте в инвентарь группу victoriametrics_remote, которая содержит имена хостов из группы victoriametrics_select другого окружения.
Также укажите имя удаленного окружения.
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:
victoriametrics_remote:
hosts:
external-victoriametrics-select-[0:2].example.com:
Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/victoriametrics.yml:
victoriametrics_remote_env: remote_env