Самостоятельная установка
Мы предлагаем версию сервера Tuist с возможностью самостоятельного размещения для организаций, которым требуется больший контроль над своей инфраструктурой. Эта версия позволяет размещать Tuist на собственной инфраструктуре, обеспечивая безопасность и конфиденциальность данных.
LICENSE REQUIRED
Для самостоятельного размещения Tuist требуется действующая платная лицензия. Местная версия Tuist доступна только для организаций на тарифном плане Enterprise. Если вы заинтересованы в этой версии, пожалуйста, свяжитесь с нами по адресу [email protected].
Каденция выпуска
Мы выпускаем новые версии Tuist постоянно, по мере того как новые изменения, которые можно выпустить, появляются на главной. Мы следуем семантическому версионированию, чтобы обеспечить предсказуемое версионирование и совместимость.
Основной компонент используется для того, чтобы отмечать изменения в сервере Tuist, которые потребуют согласования с локальными пользователями. Не стоит ожидать, что мы будем его использовать, а если вдруг понадобится, будьте уверены, мы будем работать с вами, чтобы сделать переход плавным.
Непрерывное развертывание
Мы настоятельно рекомендуем настроить конвейер непрерывного развертывания, который будет автоматически развертывать последнюю версию Tuist каждый день. Это гарантирует, что вы всегда будете иметь доступ к последним функциям, улучшениям и обновлениям безопасности.
Вот пример рабочего процесса GitHub Actions, который ежедневно проверяет наличие и развертывает новые версии:
yaml
name: Update Tuist Server
on:
schedule:
- cron: '0 3 * * *' # Run daily at 3 AM UTC
workflow_dispatch: # Allow manual runs
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Check and deploy latest version
run: |
# Your deployment commands here
# Example: docker pull ghcr.io/tuist/tuist:latest
# Deploy to your infrastructureТребования к времени выполнения
В этом разделе описаны требования к размещению сервера Tuist на вашей инфраструктуре.
Матрица совместимости
Сервер Tuist протестирован и совместим со следующими минимальными версиями:
| Компонент | Минимальная версия | Примечания |
|---|---|---|
| PostgreSQL | 15 | С расширением TimescaleDB |
| TimescaleDB | 2.16.1 | Необходимое расширение PostgreSQL (устаревшее) |
| ClickHouse | 25 | Требуется для аналитики |
TIMESCALEDB DEPRECATION
TimescaleDB в настоящее время является необходимым расширением PostgreSQL для сервера Tuist, используемым для хранения и запроса данных временных рядов. Однако TimescaleDB устарел и будет исключен из числа необходимых зависимостей в ближайшем будущем, когда мы перенесем всю функциональность временных рядов на ClickHouse. Пока же убедитесь, что на вашем экземпляре PostgreSQL установлена и включена TimescaleDB.
Запуск виртуализированных образов Docker
Мы распространяем сервер в виде образа Docker через GitHub's Container Registry.
Чтобы запустить его, ваша инфраструктура должна поддерживать запуск образов Docker. Обратите внимание, что большинство поставщиков инфраструктуры поддерживают его, поскольку он стал стандартным контейнером для распространения и запуска программного обеспечения в производственных средах.
База данных Postgres
Помимо запуска образов Docker, вам понадобится база данных Postgres с расширением TimescaleDB для хранения реляционных данных и временных рядов. Большинство поставщиков инфраструктуры включают базы данных Postgres в свои предложения (например, AWS и Google Cloud).
Требуется расширение TimescaleDB: Tuist требует расширения TimescaleDB для эффективного хранения и запроса данных временных рядов. Это расширение используется для командных событий, аналитики и других функций, основанных на времени. Перед запуском Tuist убедитесь, что на вашем экземпляре PostgreSQL установлено и включено расширение TimescaleDB.
MIGRATIONS
Точка входа образа Docker автоматически запускает все ожидающие миграции схемы перед запуском службы. Если миграция не удалась из-за отсутствия расширения TimescaleDB, вам нужно будет сначала установить его в свою базу данных.
База данных ClickHouse
Tuist использует ClickHouse для хранения и запроса больших объемов аналитических данных. ClickHouse - это , необходимый для таких функций, как build insights, и он станет основной базой данных временных рядов, когда мы откажемся от TimescaleDB. Вы можете выбрать, размещать ClickHouse самостоятельно или использовать их хостинговый сервис.
MIGRATIONS
Точка входа образа Docker автоматически запускает все предстоящие миграции схемы ClickHouse перед запуском службы.
Хранение
Вам также понадобится решение для хранения файлов (например, двоичных файлов фреймворков и библиотек). В настоящее время мы поддерживаем любое хранилище, совместимое с S3.
Конфигурация
Конфигурация службы выполняется во время выполнения с помощью переменных окружения. Учитывая конфиденциальный характер этих переменных, мы рекомендуем шифровать и хранить их в надежных решениях для управления паролями. Будьте уверены, Tuist работает с этими переменными очень осторожно, гарантируя, что они никогда не будут отображаться в логах.
LAUNCH CHECKS
При запуске проверяются все необходимые переменные. Если какие-либо из них отсутствуют, запуск завершится неудачей, а в сообщении об ошибке будут подробно указаны отсутствующие переменные.
Конфигурация лицензии
Как пользователь локального сервиса, вы получите лицензионный ключ, который нужно будет указать в качестве переменной окружения. Этот ключ используется для проверки лицензии и обеспечения работы службы в соответствии с условиями соглашения.
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_LICENSE | Лицензия, предоставляемая после подписания соглашения об уровне обслуживания | Да* | ****** | |
TUIST_LICENSE_CERTIFICATE_BASE64 | Исключительная альтернатива TUIST_LICENSE. Публичный сертификат в кодировке Base64 для автономной проверки лицензии в средах с воздушной завесой, где сервер не может связаться с внешними службами. Используется только в тех случаях, когда TUIST_LICENSE не может быть использован. | Да* | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t... |
* Должны быть указаны либо TUIST_LICENSE, либо TUIST_LICENSE_CERTIFICATE_BASE64, но не оба. Используйте TUIST_LICENSE для стандартных развертываний.
EXPIRATION DATE
Лицензии имеют срок действия. Пользователи получат предупреждение при использовании команд Tuist, взаимодействующих с сервером, если срок действия лицензии истекает менее чем через 30 дней. Если вы заинтересованы в продлении лицензии, пожалуйста, свяжитесь с [email protected].
Конфигурация базовой среды
| Переменная среды | Описание | Требуется | По умолчанию | Пример | |
|---|---|---|---|---|---|
TUIST_APP_URL | Базовый URL-адрес для доступа к экземпляру из Интернета | Да | https://tuist.dev | ||
TUIST_SECRET_KEY_BASE | Ключ, используемый для шифрования информации (например, сеансов в файле cookie). | Да | c5786d9f869239cbddeca645575349a570ffebb332b64400c37256e1c9cb7ec831345d03dc0188edd129d09580d8cbf3ceaf17768e2048c037d9c31da5dcacfa | ||
TUIST_SECRET_KEY_PASSWORD | Перец для генерации хэшированных паролей | Нет | $TUIST_SECRET_KEY_BASE | ||
TUIST_SECRET_KEY_TOKENS | Секретный ключ для генерации случайных жетонов | Нет | $TUIST_SECRET_KEY_BASE | ||
TUIST_SECRET_KEY_ENCRYPTION | 32-байтный ключ для шифрования конфиденциальных данных по алгоритму AES-GCM | Нет | $TUIST_SECRET_KEY_BASE | ||
TUIST_USE_IPV6 | Когда 1, он настраивает приложение на использование IPv6-адресов. | Нет | 0 | 1 | |
TUIST_LOG_LEVEL | Уровень журнала, который будет использоваться для приложения | Нет | информация | Уровни журнала | |
TUIST_GITHUB_APP_NAME | URL-версия имени вашего приложения на GitHub | Нет | my-app | ||
TUIST_GITHUB_APP_PRIVATE_KEY_BASE64 | Закрытый ключ в кодировке base64, используемый в приложении GitHub для разблокировки дополнительных функций, таких как автоматическая публикация комментариев к PR. | Нет | LS0tLS1CRUdJTiBSU0EgUFJJVkFUR... | ||
TUIST_GITHUB_APP_PRIVATE_KEY | Закрытый ключ, используемый в приложении GitHub для разблокировки дополнительных функций, таких как автоматическая публикация комментариев к PR. Мы рекомендуем использовать base64-кодированную версию, чтобы избежать проблем со специальными символами | Нет | -----BEGIN RSA... | ||
TUIST_OPS_USER_HANDLES | Список дескрипторов пользователей, имеющих доступ к URL-адресам операций, разделенный запятыми | Нет | пользователь1,пользователь2 | ||
TUIST_WEB | Включите конечную точку веб-сервера | Нет | 1 | 1 или 0 |
Конфигурация базы данных
Для настройки подключения к базе данных используются следующие переменные окружения:
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
DATABASE_URL | URL-адрес для доступа к базе данных Postgres. Обратите внимание, что URL должен содержать информацию об аутентификации | Да | postgres://username:[email protected]/production | |
TUIST_CLICKHOUSE_URL | URL-адрес для доступа к базе данных ClickHouse. Обратите внимание, что URL должен содержать информацию об аутентификации | Нет | http://username:[email protected]/production | |
TUIST_USE_SSL_FOR_DATABASE | Если значение равно true, то для подключения к базе данных используется SSL. | Нет | 1 | 1 |
TUIST_DATABASE_POOL_SIZE | Количество соединений, которые необходимо держать открытыми в пуле соединений | Нет | 10 | 10 |
TUIST_DATABASE_QUEUE_TARGET | Интервал (в милисекундах) для проверки того, что все соединения, извлеченные из пула, заняли больше интервала очереди (Дополнительная информация) | Нет | 300 | 300 |
TUIST_DATABASE_QUEUE_INTERVAL | Пороговое время (в милисекундах) в очереди, которое пул использует для определения того, следует ли ему начать отбрасывать новые соединения (Дополнительная информация) | Нет | 1000 | 1000 |
TUIST_CLICKHOUSE_FLUSH_INTERVAL_MS | Интервал времени в миллисекундах между очистками буфера ClickHouse | Нет | 5000 | 5000 |
TUIST_CLICKHOUSE_MAX_BUFFER_SIZE | Максимальный размер буфера ClickHouse в байтах перед принудительной очисткой | Нет | 1000000 | 1000000 |
TUIST_CLICKHOUSE_BUFFER_POOL_SIZE | Количество запускаемых буферных процессов ClickHouse | Нет | 5 | 5 |
Настройка среды аутентификации
Мы поддерживаем аутентификацию через провайдеров идентификации (IdP). Чтобы воспользоваться этим, убедитесь, что все необходимые переменные окружения для выбранного провайдера присутствуют в окружении сервера. Отсутствие переменных приведет к тому, что Tuist обойдет этого провайдера.
GitHub
Мы рекомендуем аутентифицироваться с помощью GitHub App, но вы также можете использовать OAuth App. Убедитесь, что в окружение сервера включены все необходимые переменные окружения, указанные GitHub. Отсутствие переменных приведет к тому, что Tuist не примет во внимание аутентификацию GitHub. Чтобы правильно настроить приложение GitHub:
- В общих настройках приложения GitHub:
- Скопируйте идентификатор клиента `` и установите его как
TUIST_GITHUB_APP_CLIENT_ID. - Создайте и скопируйте новый клиентский секрет `` и установите его как
TUIST_GITHUB_APP_CLIENT_SECRET. - Установите URL-адрес обратного вызова `` как
http://YOUR_APP_URL/users/auth/github/callback.YOUR_APP_URLтакже может быть IP-адресом вашего сервера.
- Скопируйте идентификатор клиента `` и установите его как
- Требуются следующие разрешения:
- Репозитории:
- Заявки на перетяжку: Чтение и запись
- Счета:
- Адреса электронной почты: Только для чтения
- Репозитории:
В разделе Разрешения и события's Account permissions установите для разрешения Email addresses значение Read-only.
Затем вам нужно будет выставить следующие переменные окружения в среде, в которой запущен сервер Tuist:
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_GITHUB_APP_CLIENT_ID | Идентификатор клиента приложения GitHub | Да | Iv1.a629723000043722 | |
TUIST_GITHUB_APP_CLIENT_SECRET | Секрет клиента приложения | Да | 232f972951033b89799b0fd24566a04d83f44ccc |
Google
Вы можете настроить аутентификацию в Google с помощью OAuth 2. Для этого вам нужно будет создать новый мандат типа OAuth client ID. При создании учетных данных выберите тип приложения "Веб-приложение", назовите его Tuist, а URI перенаправления установите на {base_url}/users/auth/google/callback, где base_url - это URL, на котором работает ваш хостинг-сервис. После создания приложения скопируйте идентификатор и секрет клиента и установите их в качестве переменных окружения GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET соответственно.
CONSENT SCREEN SCOPES
Возможно, вам потребуется создать экран согласия. При этом обязательно добавьте диапазоны userinfo.email и openid и отметьте приложение как внутреннее.
Okta
Вы можете включить аутентификацию с помощью Okta по протоколу OAuth 2.0. Вам нужно будет создать приложение на Okta, следуя этим инструкциям.
После получения идентификатора и секрета клиента в процессе настройки приложения Okta вам нужно будет установить следующие переменные окружения:
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_OKTA_1_CLIENT_ID | Идентификатор клиента для аутентификации в Okta. Номер должен быть идентификатором вашей организации | Да | ||
TUIST_OKTA_1_CLIENT_SECRET | Секрет клиента для аутентификации в Okta | Да |
Число 1 необходимо заменить на идентификатор вашей организации. Обычно это 1, но проверьте в своей базе данных.
Настройка среды хранения данных
Tuist нуждается в хранилище для хранения артефактов, загружаемых через API. Для эффективной работы Tuist необходимо настроить одно из поддерживаемых решений для хранения.
Хранилища, совместимые с S3
Для хранения артефактов можно использовать любого поставщика услуг хранения, совместимого с S3. Для аутентификации и настройки интеграции с поставщиком хранилища необходимы следующие переменные среды:
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_S3_ACCESS_KEY_ID или AWS_ACCESS_KEY_ID | Идентификатор ключа доступа для аутентификации у поставщика услуг хранения данных | Да | AKIAIOSFOD | |
TUIST_S3_SECRET_ACCESS_KEY или AWS_SECRET_ACCESS_KEY | Секретный ключ доступа для аутентификации у поставщика услуг хранения данных | Да | wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY | |
TUIST_S3_REGION или AWS_REGION | Регион, в котором находится ведро | Нет | авто | запад-2 |
TUIST_S3_ENDPOINT или AWS_ENDPOINT | Конечная точка поставщика услуг хранения | Да | https://s3.us-west-2.amazonaws.com | |
TUIST_S3_BUCKET_NAME | Имя ведра, в котором будут храниться артефакты | Да | tuist-artifacts | |
TUIST_S3_CA_CERT_PEM | Сертификат ЦС в кодировке PEM для проверки HTTPS-соединений S3. Полезно для сред с воздушной завесой с самоподписанными сертификатами или внутренними центрами сертификации. | Нет | Пакет системного ЦС | -----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE----- |
TUIST_S3_CONNECT_TIMEOUT | Таймаут (в миллисекундах) для установления соединения с провайдером хранилища | Нет | 3000 | 3000 |
TUIST_S3_RECEIVE_TIMEOUT | Таймаут (в миллисекундах) для получения данных от провайдера хранилища | Нет | 5000 | 5000 |
TUIST_S3_POOL_TIMEOUT | Таймаут (в миллисекундах) для пула соединений с провайдером хранилища. Используйте infinity для отсутствия таймаута. | Нет | 5000 | 5000 |
TUIST_S3_POOL_MAX_IDLE_TIME | Максимальное время простоя (в миллисекундах) для соединений в пуле. Используйте infinity, чтобы поддерживать соединения неограниченное время. | Нет | Бесконечность | 60000 |
TUIST_S3_POOL_SIZE | Максимальное количество соединений в одном пуле | Нет | 500 | 500 |
TUIST_S3_POOL_COUNT | Количество используемых пулов соединений | Нет | Количество системных планировщиков | 4 |
TUIST_S3_PROTOCOL | Протокол, используемый при подключении к провайдеру хранилища (http1 или http2). | Нет | http1 | http1 |
TUIST_S3_VIRTUAL_HOST | Следует ли строить URL с именем ведра в качестве поддомена (виртуального хоста). | Нет | ложь | 1 |
AWS authentication with Web Identity Token from environment variables
Если ваш поставщик хранилища - AWS и вы хотите аутентифицироваться с помощью токена веб-идентификации, вы можете установить переменную окружения TUIST_S3_AUTHENTICATION_METHOD на aws_web_identity_token_from_env_vars, и Tuist будет использовать этот метод, используя обычные переменные окружения AWS.
Облачное хранилище Google
Для Google Cloud Storage следуйте этим документам, чтобы получить пару AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY. Переменная AWS_ENDPOINT должна быть установлена на https://storage.googleapis.com. Остальные переменные окружения такие же, как и для любого другого S3-совместимого хранилища.
Конфигурация электронной почты
Tuist требует функциональности электронной почты для аутентификации пользователей и транзакционных уведомлений (например, сброс пароля, уведомления об учетной записи). В настоящее время поддерживает только Mailgun в качестве почтового провайдера.
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_MAILGUN_API_KEY | Ключ API для аутентификации в Mailgun | Да* | ключ-1234567890abcdef | |
TUIST_MAILING_DOMAIN | Домен, с которого будут отправляться электронные письма | Да* | mg.tuist.io | |
TUIST_MAILING_FROM_ADDRESS | Адрес электронной почты, который будет отображаться в поле "От". | Да* | [email protected] | |
TUIST_MAILING_REPLY_TO_ADDRESS | Необязательный адрес для ответов пользователей | Нет | [email protected] | |
TUIST_SKIP_EMAIL_CONFIRMATION | Пропускать подтверждение по электронной почте при регистрации новых пользователей. Если эта функция включена, пользователи автоматически получают подтверждение и могут войти в систему сразу после регистрации | Нет | true, если электронная почта не настроена, false, если электронная почта настроена. | true, false, 1, 0 |
* Переменные конфигурации электронной почты необходимы только в том случае, если вы хотите отправлять электронные письма. Если они не настроены, подтверждение электронной почты автоматически пропускается
SMTP SUPPORT
Поддержка общего SMTP в настоящее время недоступна. Если вам нужна поддержка SMTP для вашего локального развертывания, свяжитесь с [email protected], чтобы обсудить ваши требования.
AIR-GAPPED DEPLOYMENTS
Для локальных установок, не имеющих доступа в Интернет или настроек почтового провайдера, подтверждение по электронной почте автоматически пропускается по умолчанию. Пользователи могут войти в систему сразу после регистрации. Если у вас настроена электронная почта, но вы хотите пропустить подтверждение, установите TUIST_SKIP_EMAIL_CONFIRMATION=true. Чтобы потребовать подтверждения электронной почты, если она настроена, установите TUIST_SKIP_EMAIL_CONFIRMATION=false.
Настройка платформы Git
Tuist может интегрироваться с Git-платформами, чтобы предоставить дополнительные возможности, такие как автоматическая публикация комментариев в ваших запросах на вытягивание.
GitHub
Вам нужно будет создать приложение GitHub. Вы можете использовать созданное вами приложение для аутентификации, если вы не создали приложение GitHub с OAuth. В разделе Разрешения и события's Repository permissions вам нужно дополнительно установить разрешение Pull requests на Read and write.
Помимо TUIST_GITHUB_APP_CLIENT_ID и TUIST_GITHUB_APP_CLIENT_SECRET, вам понадобятся следующие переменные окружения:
| Переменная среды | Описание | Требуется | По умолчанию | Пример |
|---|---|---|---|---|
TUIST_GITHUB_APP_PRIVATE_KEY | Закрытый ключ приложения GitHub | Да | ----- BEGIN RSA PRIVATE KEY-----... |
Тестирование на месте
Мы предоставляем комплексную конфигурацию Docker Compose, включающую все необходимые зависимости для тестирования сервера Tuist на локальной машине перед развертыванием в вашей инфраструктуре:
- PostgreSQL 15 с расширением TimescaleDB 2.16 (устаревшее)
- ClickHouse 25 для аналитики
- ClickHouse Keeper для координации
- MinIO для S3-совместимого хранилища
- Redis для постоянного хранения KV во всех развертываниях (необязательно).
- pgweb для администрирования баз данных
LICENSE REQUIRED
Для запуска сервера Tuist, включая локальные экземпляры разработки, требуется действительная переменная окружения TUIST_LICENSE. Если вам нужна лицензия, пожалуйста, свяжитесь с [email protected].
Быстрый старт:
Загрузите файлы конфигурации:
bashcurl -O https://docs.tuist.io/server/self-host/docker-compose.yml curl -O https://docs.tuist.io/server/self-host/clickhouse-config.xml curl -O https://docs.tuist.io/server/self-host/clickhouse-keeper-config.xml curl -O https://docs.tuist.io/server/self-host/.env.exampleНастройте переменные окружения:
bashcp .env.example .env # Edit .env and add your TUIST_LICENSE and authentication credentialsЗапустите все службы:
bashdocker compose up -d # or with podman: podman compose up -dЗайдите на сервер по адресу http://localhost:8080.
Конечные точки обслуживания:
- Сервер Tuist: http://localhost:8080
- Консоль MinIO: http://localhost:9003 (учетные данные:
tuist/tuist_dev_password) - API MinIO: http://localhost:9002
- pgweb (пользовательский интерфейс PostgreSQL): http://localhost:8081
- Метрика "Прометея": http://localhost:9091/metrics
- ClickHouse HTTP: http://localhost:8124
Общие команды:
Проверьте состояние обслуживания:
bash
docker compose ps
# or: podman compose psПросмотр журналов:
bash
docker compose logs -f tuistУслуги по остановке:
bash
docker compose downСброс всех настроек (удаление всех данных):
bash
docker compose down -vФайлы конфигурации:
- docker-compose.yml - Полная конфигурация Docker Compose
- clickhouse-config.xml - Конфигурация ClickHouse
- clickhouse-keeper-config.xml
- Конфигурация ClickHouse Keeper
- .env.example - Пример файла переменных окружения
Развертывание
Официальный образ Tuist Docker доступен по адресу:
ghcr.io/tuist/tuistИзвлечение образа Docker
Вы можете получить изображение, выполнив следующую команду:
bash
docker pull ghcr.io/tuist/tuist:latestИли выберите конкретную версию:
bash
docker pull ghcr.io/tuist/tuist:0.1.0Развертывание образа Docker
Процесс развертывания образа Docker будет отличаться в зависимости от выбранного вами облачного провайдера и подхода к непрерывному развертыванию в вашей организации. Поскольку большинство облачных решений и инструментов, таких как Kubernetes, используют образы Docker в качестве фундаментальных единиц, примеры, приведенные в этом разделе, должны хорошо сочетаться с существующими настройками.
WARNING
Если вашему конвейеру развертывания необходимо подтвердить, что сервер работает, вы можете отправить HTTP-запрос GET по адресу /ready и подтвердить код состояния 200 в ответе.
Fly
Чтобы развернуть приложение на Fly, вам потребуется конфигурационный файл fly.toml. Рассмотрите возможность его динамической генерации в рамках конвейера непрерывного развертывания (CD). Ниже приведен эталонный пример для использования:
toml
app = "tuist"
primary_region = "fra"
kill_signal = "SIGINT"
kill_timeout = "5s"
[experimental]
auto_rollback = true
[env]
# Your environment configuration goes here
# Or exposed through Fly secrets
[processes]
app = "/usr/local/bin/hivemind /app/Procfile"
[[services]]
protocol = "tcp"
internal_port = 8080
auto_stop_machines = false
auto_start_machines = false
processes = ["app"]
http_options = { h2_backend = true }
[[services.ports]]
port = 80
handlers = ["http"]
force_https = true
[[services.ports]]
port = 443
handlers = ["tls", "http"]
[services.concurrency]
type = "connections"
hard_limit = 100
soft_limit = 80
[[services.http_checks]]
interval = 10000
grace_period = "10s"
method = "get"
path = "/ready"
protocol = "http"
timeout = 2000
tls_skip_verify = false
[services.http_checks.headers]
[[statics]]
guest_path = "/app/public"
url_prefix = "/"Затем вы можете выполнить fly launch --local-only --no-deploy для запуска приложения. При последующих развертываниях вместо fly launch --local-only нужно будет выполнить fly deploy --local-only. Fly.io не позволяет получать приватные Docker-образы, поэтому нам нужно использовать флаг --local-only.
Метрики Прометея
Tuist предоставляет метрики Prometheus по адресу /metrics, чтобы помочь вам следить за вашим самораспространяющимся экземпляром. Эти метрики включают в себя:
Метрики HTTP-клиента Finch
Tuist использует Finch в качестве HTTP-клиента и выдает подробные метрики о HTTP-запросах:
Метрики запроса
tuist_prom_ex_finch_request_count_total- Общее количество запросов Finch (счетчик).- Метки:
finch_name,method,scheme,host,port,status
- Метки:
tuist_prom_ex_finch_request_duration_milliseconds- Продолжительность HTTP-запросов (гистограмма).- Метки:
finch_name,method,scheme,host,port,status - Ведра: 10 мс, 50 мс, 100 мс, 250 мс, 500 мс, 1 с, 2,5 с, 5 с, 10 с
- Метки:
tuist_prom_ex_finch_request_exception_count_total- Общее количество исключений из запросов Finch (счетчик).- Ярлыки:
finch_name,method,scheme,host,port,kind,reason
- Ярлыки:
Метрики очереди пула подключений
tuist_prom_ex_finch_queue_duration_milliseconds- Время ожидания в очереди пула соединений (гистограмма).- Метки:
finch_name,scheme,host,port,pool - Ведра: 1 мс, 5 мс, 10 мс, 25 мс, 50 мс, 100 мс, 250 мс, 500 мс, 1 с
- Метки:
tuist_prom_ex_finch_queue_idle_time_milliseconds- Время, в течение которого соединение простаивало перед использованием (гистограмма).- Метки:
finch_name,scheme,host,port,pool - Ведра: 10 мс, 50 мс, 100 мс, 250 мс, 500 мс, 1 с, 5 с, 10 с
- Метки:
tuist_prom_ex_finch_queue_exception_count_total- Общее количество исключений из очереди Finch (счетчик).- Ярлыки:
finch_name,scheme,host,port,kind,reason
- Ярлыки:
Метрики подключения
tuist_prom_ex_finch_connect_duration_milliseconds- Время установления соединения (гистограмма).- Ярлыки:
finch_name,scheme,host,port,error - Ведра: 10 мс, 50 мс, 100 мс, 250 мс, 500 мс, 1 с, 2,5 с, 5 с
- Ярлыки:
tuist_prom_ex_finch_connect_count_total- Общее количество попыток соединения (счетчик).- Ярлыки:
finch_name,scheme,host,port
- Ярлыки:
Отправить метрики
tuist_prom_ex_finch_send_duration_milliseconds- Время, затраченное на отправку запроса (гистограмма).- Метки:
finch_name,method,scheme,host,port,error - Ведра: 1 мс, 5 мс, 10 мс, 25 мс, 50 мс, 100 мс, 250 мс, 500 мс, 1 с
- Метки:
tuist_prom_ex_finch_send_idle_time_milliseconds- Время простоя соединения перед отправкой (гистограмма).- Метки:
finch_name,method,scheme,host,port,error - Ведра: 1 мс, 5 мс, 10 мс, 25 мс, 50 мс, 100 мс, 250 мс, 500 мс
- Метки:
Все метрики гистограмм предоставляют варианты _bucket, _sum, и _count для детального анализа.
Другие показатели
В дополнение к метрикам Finch, Tuist предоставляет метрики для:
- Производительность виртуальной машины BEAM
- Пользовательские метрики бизнес-логики (хранилища, учетные записи, проекты и т. д.)
- Производительность базы данных (при использовании инфраструктуры Tuist-hosted)
Операции
Tuist предоставляет набор утилит по адресу /ops/, которые вы можете использовать для управления своим экземпляром.
Authorization
Доступ к конечным точкам /ops/ могут получить только те, чьи дескрипторы указаны в переменной окружения TUIST_OPS_USER_HANDLES.
- Ошибки (
/ops/errors): Вы можете просмотреть неожиданные ошибки, возникшие в приложении. Это полезно для отладки и понимания того, что пошло не так, и мы можем попросить вас поделиться этой информацией с нами, если вы столкнулись с проблемами. - Приборная панель (
/ops/dashboard): Вы можете просмотреть приборную панель, которая дает представление о производительности и состоянии приложения (например, потребление памяти, запущенные процессы, количество запросов). Эта панель может быть очень полезна, чтобы понять, достаточно ли используемого вами оборудования для дескриптора нагрузки.
