Перейти к основному содержимому
Версия: 1.12

Внешние сервисы и интеграции

Внешний кластер 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_connector
  • otel_agents
  • sage_grafana
  • sage_logs_to_metrics
  • sage_mcc
  • sage_pager
  • sage_sauron
  • sage_sla
  • service_map

БД Spirit:

  • spirit_hydra
  • spirit_iam_jwk
  • spirit_kratos
  • spirit_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. Создание схем и установка расширений​

В соответствующих БД создайте необходимые схемы:

СхемаБД
sageotel_agents
sagesage_grafana
sagesage_logs_to_metrics
hangfiresage_mcc
schedulersage_pager
sagesage_sauron
sagesage_sla
sageservice_map
sage_dp_connectordp_connector
spiritspirit_hydra
spiritspirit_iam_jwk
spiritspirit_kratos
spiritspirit_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_gin
  • pg_trgm
  • pgcrypto
  • hstore
  • uuid-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