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

Часто задаваемые вопросы (FAQ)

Этот раздел содержит ответы на часто задаваемые вопросы по установке и настройке Sage.

Полная переустановка

Q: Как полностью удалить Sage для последующей переустановки?

Для полного удаления Sage выполните процедуру, описанную в разделе Полное удаление Sage.

Краткая инструкция:

  1. Выполните wipe в контейнере установщика
  2. Удалите сертификаты: rm -rf ~/ansible/files/certificates/*
  3. Удалите файлы клана: rm -rf group_vars/sage/ и rm -f secrets*.ignore.yml
  4. Перезапустите Docker на всех серверах: sudo systemctl restart docker
  5. Начните установку заново с check и preinstall

Работа с контейнером установщика

Q: Как вернуться в контейнер установщика?

Выполните команду sudo docker ps -a: если контейнер не находится в состоянии RUNNING, выполните команду sudo docker start sage-trukk-${SAGE_VERSION}. Для подключения к контейнеру далее выполните команду sudo docker attach sage-trukk-${SAGE_VERSION}.

Q: Можно ли использовать авторизацию SSH по паролю?

Да, если SSH-доступ к хостам осуществляется по паролю (без ключей), то его нужно передать в контейнер при старте.

Запустите контейнер со следующими аргументами:

sudo docker run -it --name sage-trukk-${SAGE_VERSION} --pull always --network host \
-v "${PWD}/certificates:/home/trukker/ansible/files/certificates:rw" \
-v "${PWD}/step:/home/trukker/ansible/files/step:rw" \
-v "${PWD}/clans:/home/trukker/ansible/clans:rw" \
-v "${PWD}/.ara:/home/trukker/.ara:rw" \
-v "${PWD}/sage-ssh:/home/trukker/.ssh:rw" \
-v "${PWD}/license:/home/trukker/ansible/files/licenses:rw" \
-v "${PWD}/key.json:/home/trukker/ansible/files/key.json:rw" \
-v "${PWD}/spirit/kratos:/home/trukker/ansible/files/spirit/kratos:rw" \
-e 'ANSIBLE_REMOTE_USER=<SSH логин для всех хостов>' \
cr.yandex/crp9e7v1gtl8rlvmji4q/sage-trukk-example:release-${SAGE_VERSION} bash

Внутри контейнера добавьте поле с SSH-паролем в файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/_secrets.yml:

ansible_password: my_password

Хранение данных и ретеншн

Q: Как указать директории для хранения данных на хостах?

Директории, где хранятся данные, описываются переменными data_dirs и data_dirs_defaults. Для переопределения значений по умолчанию используется переменная data_dirs_override.

  1. Необходимо указать директории хранилищ данных компонент Sage, в случае если они отличаются от значений по умолчанию (приведены ниже).
  2. Директории не должны содержать никаких данных перед установкой (включая скрытые/системные файлы).
  3. Разделы, содержащие хранилища данных, должны быть предварительно настроены в ОС и смонтированы в постоянном режиме (fstab).
  4. Для разделов, содержащих хранилища данных, рекомендуется использовать файловую систему xfs со следующими опциями монтирования:
    • defaults,
    • noatime.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/_volumes.yml:

data_dirs_override:
clickhouse: /srv/clickhouse
docker: /srv/docker
docs: /srv/docs
opensearch_cluster_manager: /srv/opensearch-data
opensearch_data_hot: /srv/opensearch-data
opensearch_data_warm: /srv/opensearch-data
opensearch_single_node: /srv/opensearch-data
opensearch_proxy: /srv/opensearch-data/proxy
opensearch_proxy_single_node: /srv/opensearch-data/proxy
kafka: /srv/kafka
postgres: /srv/postgres
redis: /srv/redis
redpanda_console: /srv/redpanda_console
registry: /srv/registry
sage_apps: /srv/sage
vmbackup: /srv/victoriametrics_backup
vmrestore: /srv/victoriametrics_backup
vmstorage: /srv/victoriametrics_storage

Q: Как настроить теплое хранилище логов?

Чтобы использовать теплое хранилище логов, добавьте в инвентарь группу opensearch_data_warm и укажите время жизни данных (в часах) в горячем хранилище. После истечения заданного периода данные будут мигрированы в теплое хранилище (при условии, что индекс корректно создался).

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

opensearch_data_warm:
hosts:
es-[3:5].example.com:

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/luna.yml:

elastic_hot_storage: 48

Q: Как указать длительность хранения данных на Kafka?

Укажите политики хранения данных для Kafka в файле clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/kafka.yml. Например:

kafka_retention_bytes: "{{ '5G' | human_to_bytes }}"
kafka_retention_hours: 24

Примечание: При указании времени хранения учитывайте, что политика хранения задается для партиции, а не для топиков. Количество партиций по умолчанию равно количеству Furry-хостов, указать иное значение параметра невозможно.

По умолчанию фактор репликации равен количеству Kafka-хостов (параметр не может быть изменен).

Q: Как указать длительность хранения данных Opensearch?

Время хранения данных задается в настройках каждой из групп. Также можно ограничить общие допустимые политики хранения данных для Opensearch в файле clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/luna.yml. Например:

custom_luna_jobs_settings:
Elastic:
IlmRolloverService:
MinRetentionInDays: 7
MaxRetentionInDays: 14
ShardSizeForRollingInGb: 20

Расширенные параметры ротации индексов:

  • MinRetentionInDays - минимально возможный интервал ротации индексов в днях (например, если период хранения логов для группы равен 3 дням, то ротация будет выполняться каждые 7 дней, т.е. будем хранить логи 7 дней вместо 3 и создадим 1 индекс);
  • MaxRetentionInDays - максимально возможный интервал ротации индексов в днях (например, если период хранения логов для группы равен 30 дней, то ротация будет выполняться каждые 14 дней, т.е. будем хранить логи 42 дня вместо 30 и создадим 3 индекса);
  • ShardSizeForRollingInGb - требуемый средний размер всех шардов индекса для выполнения ротации.

Если индекс не попадает ни под одно из условий, ротация выполняется по истечении периода хранения логов для группы. После ротации индексы, которые вышли за период хранения логов для группы, удаляются.

Q: Как указать длительность хранения данных VictoriaMetrics?

Укажите политики хранения данных VictoriaMetrics в файле clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/victoriametrics.yml. Например:

victoriametrics_cluster_params_override:
retentionPeriod: 30d

Q: Как указать длительность хранения данных ClickHouse?

Трейсы хранятся 7 дней (параметр не может быть изменен).

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

Q: Как использовать managed PostgreSQL при установке Sage?

Чтобы использовать уже существующий сервис, добавьте в инвентарь группу external, в которой будет внешний PostgreSQL.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

external:
children:
postgres:

Поддерживается PostgreSQL 13.

Пример внешнего PostgreSQL

Сервис postgres является членом группы external, а в качестве хоста для него используется external-postgres, где находится требуемая версия PostgreSQL.

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

postgres:
hosts:
external-postgres:

external:
children:
postgres:

Q: Как настроить использование разных зон доступности для Opensearch?

Для чтения логов из другого ДЦ добавьте в инвентарь группы:

  • opensearch_proxy — содержит имена хостов, на которых будет развернут клиент
  • opensearch_proxy_single_node — если клиент нужно развернуть только на одном хосте

Файл clans/{{ clan }}/{{ env }}/{{ dc }}/hosts.yml:

opensearch_proxy:
hosts:
es-client-[0:1].remote.domain:

Q: Как настроить использование разных зон доступности для 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

Управление доступом

Q: Как добавить пользователей Sage?

После установки Sage пользователей можно создать или редактировать через Keycloak UI.

Логин и пароль для административной учетной записи Keycloak:

  • Логин по умолчанию: keycloak
  • Пароль хранится в зашифрованном виде в файле clans/{{ clan }}/{{ env }}/{{ dc }}/group_vars/sage/_secrets.yml - переменная sage_admin_password

Если вы используете сторонний OIDC провайдер, то создать пользователя можно через административную панель вашего провайдера.

Q: Шифрование и дешифрование секретов

Чтобы не хранить секреты в открытом виде, используйте ansible-vault. Выполните следующую команду для шифрования секрета:

trukker@trukk ansible-vault encrypt_string '<дешифрованное значение>'

Чтобы получить дешифрованное значение, выполните следующую команду (на примере переменной sage_admin_password):

trukker@trukk ansible nginx -m debug -a var=sage_admin_password ${ANSIBLE_ARGS:-}

Вы можете использовать собственный пароль и шифровать все секреты с его помощью.