Установка ProtoOBP Backend
На этой странице:
- Описание
- Подготовка сервера
- Установка ProtoOBP Backend
- Подключение собственного HTTPS-сертификата
- Изменение лицензионной информации
- Использование локальных Docker репозиториев
- Установка ProtoOBP Backend на нескольких серверах
Описание
Компоненты Backend сервера Proto Observability Platfrom поставляются в виде docker контейнеров, управляемых с помощью docker compose.
Компоненты ProtoOBP Backend могут быть разнесены на несколько хостов для повышения производительности и отказоустойчивости платформы.
В данном разделе рассматривается инсталляция ProtoOBP Backend сервера в варианте с одним физическим или виртуальным хостом. При необходимости, конфигурация для двух и более серверов предоставляется по запросу в техническую поддержку Proto.
Подготовка сервера
Необходимо выделить физический или виртуальный сервер для Proto OBP Backend сервера.
Proto OBP Backend
      Память RAM: 24 GB
      CPU: 12 vCPU
      Диск: 500GB SSD (5000iops+)
      ОС: Linux (Debian-based или CentOS 8+)
      Docker: 25+ (https://docs.docker.com/engine/install/)
      Docker-compose: v2.24.5+
      Доступ к Интернет: для скачивания образов
      Сетевые доступы (порты): 80, 443
Сетевые доступы:
- Для коммуникации Proto OBP агентов с Proto OBP Backend сервером необходимо обеспечить сетевой доступ по порту 80 или 443
- Для доступа к веб-интерфейсу Proto OBP необходимо обеспечить сетевой доступ по 80 или 443 портам
| Source Name | Source IP | Destination Name | Destination IP | Destination PORT/PROTO | Description | 
|---|---|---|---|---|---|
| Proto Platform Backend | protoobp_backend_ip | Proto Repository | registry.git.proto.group | 443/tcp | Скачивание дистрибутивов и образов Proto Observability Platform | 
| IP адреса контролируемых серверов, на которые устанавливаются агенты системы Proto Observability Platform (обычно вся внутреняя сеть) | ANY_INTERNAL | Proto Platform Backend | protoobp_backend_ip | 80/tcp, 443/tcp | Коммуникация Агентов с Proto Platform Backed | 
| IP адреса пользователей веб-интерфейса системы Proto Observability Platform (обычно вся внутренняя сеть) | ANY_INTERNAL | Proto Platform Backend | protoobp_backend_ip | 80/tcp, 443/tcp | Доступ должен быть открыт для всех пользователей веб-интерфеса платформы | 
| IP адреса контролируемых серверов, на которые устанавливаются агенты системы Proto Observability Platform (обычно вся внутреняя сеть) | localhost | Контролируемый сервер (локально) | localhost | 8125/tcp, 8126/tcp, 8125/udp | Трейсеры встраиваемые в приложения должны иметь доступ к агенту платформы установленному на этом же хосте. Порты должны быть открыты в рамках локальной сети контролируемого сервера. | 
| Сервер/точка сбора трафика от пользователей веб-браузерных и мобильных приложений | EUM.customer.domain | Proto Platform Backend | protoobp_backend_ip | 443/tcp | Трафик телеметрии от веб-браузеров и мобильных устройств реальных пользователей к серверу Системы. Должен быть проксирован. Например, трафик от браузеров и мобильных устройств направляется на сервер EUM.customer.domain:443, с которого трафик должен быть проксирован на Backend_IP:443 | 
Установка ProtoOBP Backend
С использованием скрипта установки (рекомендуется)
Для быстрой установки предоставляется готовый скрипт, применяются следующие ограничения:
- установка только на 1 сервере (пилот или небольшая продуктивная инсталляция)
- скачивание образов производится напрямую из репозитория вендора.
В ходе работы скрипта будут запрошены данные, содержащиеся в лицензионном сертификате от вендора (должен быть заранее получен, если у вас еще нет сертификата – обратитесь к компании-партнеру Proto Observability или вендору по email ask@proto.group).
Для установки с помощью скрипта:
- 
Скопируйте следующую команду и выполните в командной строке: curl -sSL -u docs:protoobp https://docs.proto.group/setup_protoobp.sh -o setup_protoobp.sh \ && chmod +x setup_protoobp.sh \ && sudo ./setup_protoobp.sh
- 
В интерактивном режиме введите запрашиваемые данные. 
- 
Дождитесь завершения работы скрипта (в случае некоторых ошибок скрипт перезапускается самостоятельно). 
Без использования скрипта установки
Команды ниже рекомендуется выполнять, переключившись на привилегированную учетную запись (ниже команды будут указаны уже без префикса sudo):
sudo su
Порядок действий по установке ProtoOBP Backend на одном сервере:
- 
Скачайте и распакуйте архив с файлами дистрибутива protoobp-backend-dist-singlehost-198.tar.gz:- 
скачайте файл с помощью curl:curl --header "PRIVATE-TOKEN:<your_token>" \ "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-backend-dist/198/protoobp-backend-dist-singlehost-198.tar.gz" \ --output protoobp-backend-dist-singlehost-198.tar.gzгде <your_token>– ваш пароль, указанный в лицензионном сертификате, полученном ранее от вендора.
- 
cоздайте папку /opt/protoobpна сервере и распакуйте в нее содержимое архива:mkdir -p /opt/protoobp && tar -xzvf protoobp-backend-dist-singlehost-198.tar.gz -C /opt/protoobp
 
- 
- 
Внесите данные лицензии и вашего окружения. - 
Перейдите в каталог Backend ( /opt/protoobp) и переименуйте файлenv_template-198в.env:cd /opt/protoobp && mv env_template-198 .env
- 
В файле .envзадайте корректные значения обязательных параметров:- 
POBP_LICENSE_COMPANY_NAME– название компании-владельца лицензии, указано в вашем лицензионном сертификате от вендора в поле “Имя компании для лицензии” (кирилицей). Пример конфигурации:POBP_LICENSE_COMPANY_NAME=Супер Корпорация
- 
POBP_LICENSE_KEY– лицензионный ключ, указан в вашем лицензионном сертификате от вендора в поле “Лицензионный ключ”, после копирования-вставки необходимо убрать все символы переноса строк (значение должно быть указано в одну строчку). Пример конфигурации:POBP_LICENSE_KEY=b916e441450f...
- 
POBP_COMPUTE– имя хоста, доступное для подключения агентов, например, это может быть FQDN хоста в локальной сети. Пример конфигурации:POBP_COMPUTE=proto-compute.mycompany.local
- 
UI_URL– адрес ProtoOBP Backend сервера, используемый для доступа к веб-интерфейсу системы, если отличается отPOBP_COMPUTE. Например, вPOBP_COMPUTEможет быть внутреннее имя сервера, а для доступа к веб-интерфейсу используется другое имя, доступное в публичном DNS и для которого выпущен SSL-сертификат. Значением должно быть доступное в DNS или локально имя хоста. Для тестовой инсталляции можно указать и IP адрес (обязательно сhttps://).Пример конфигурации: UI_URL=https://my.proto.backend.localили UI_URL=https://10.10.10.1Не используйте значения 127.0.0.1,localhost,0.0.0.0или тому подобные.
- 
POBP_DATA_DIRECTORY– путь к папке хранения данных, если отличается от стандартного значения/opt/protoobp/data, указанная здесь директория должна быть создана вами вручную.
 
- 
 
- 
- 
Создайте каталоги для хранения данных и установите на них необходимые права доступа. Ниже указаны команды со значением POBP_DATA_DIRECTORYпо умолчанию (/opt/protoobp/data/), если вы ранее меняли значениеPOBP_DATA_DIRECTORY– откорректируйте команды ниже:mkdir -p /opt/protoobp/data/database && chown -R 101:101 /opt/protoobp/data/database mkdir -p /opt/protoobp/data/opensearch && chown -R 1000:1000 /opt/protoobp/data/opensearch mkdir -p /opt/protoobp/data/metrics && chown -R 1000:1000 /opt/protoobp/data/metrics mkdir -p /opt/protoobp/data/kafka && chown -R 65532:65532 /opt/protoobp/data/kafka
- 
Создайте файлы alertrules.ymlиalertpolicies.ymlи измените владельца файлов на служебного пользователя (nonroot):touch /opt/protoobp/alertrules.yml /opt/protoobp/alertpolicies.yml && \ chown 65532:65532 /opt/protoobp/alertrules.yml /opt/protoobp/alertpolicies.yml
- 
Скачайте Docker образы и запустите систему: - 
Подключитесь к Docker репозиторию ProtoOBP выполнив команду: docker login --username <USERNAME> registry.git.proto.groupВаш <USERNAME>и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”.
- 
Перейдите в папку /opt/protoobpи убедитесь, что у вас есть доступ к репозиторию образов Proto OBP (registry.git.proto.group:443иgit.proto.group:443), выполнив:docker compose -f docker-compose-198.yaml pullДолжно начаться скачивание необходимых образов. 
- 
После скачивания Docker образов, запустите компоненты Proto OBP Backend сервера, выполнив: docker compose -f docker-compose-198.yaml up -d
 
- 
При первом запуске контейнеры proto-storage, proto-data-aggregator, proto-trace-processor и proto-metric-receiver инициализируются, после чего перезапускаются, что ведет к ошибке в выводе docker compose – это нормальная ситуация, поэтому в случае появления ошибки при первом запуске, отмените выполнение текущей команды (CTRL+c) повторите команду:
docker compose -f docker-compose-198.yaml up -d
Запуск всех компонентов может занять 2-4 минуты.
Проверьте, что все компоненты запустились, не происходит циклических рестартов, все компоненты, для которых определены проверки, находятся в статусе healthy:
docker ps -a --format "table {{.Names}}\t{{.Status}}" | (
    read -r header
    echo "$header"
    while read -r line; do
        echo "$line"
    done | sort | while read -r line; do
        if [[ "$line" =~ \(unhealthy\) ]]; then
            echo -e "$(tput setaf 1)$line$(tput sgr0)"
        elif [[ "$line" =~ \(healthy\) ]]; then
            echo -e "$(tput setaf 2)$line$(tput sgr0)"
        elif [[ "$line" =~ \(Restarting\) ]]; then
            echo -e "$(tput setaf 1)$line$(tput sgr0)"
        else
            echo -e "$(tput setaf 3)$line$(tput sgr0)"
        fi
    done
)
Пример вывода:
NAMES                          STATUS
proto-alertmanager             Up 3 minutes (healthy)
proto-alert-monitor            Up 3 minutes (healthy)
proto-alert-processor          Up 3 minutes (healthy)
proto-alert-rule-manager       Up 3 minutes
proto-api-manager              Up 3 minutes (healthy)
proto-auth                     Up 3 minutes (healthy)
proto-backend-logs-viewer      Up 3 minutes (healthy)
proto-data-aggregator          Up 3 minutes (healthy)
proto-data-analyzer-api        Up 3 minutes (healthy)
proto-data-analyzer-refresh    Up 3 minutes (healthy)
proto-data-analyzer-router     Up 3 minutes (healthy)
proto-data-analyzer-worker-1   Up 3 minutes
proto-data-analyzer-worker-2   Up 3 minutes
proto-database                 Up 3 minutes (healthy)
proto-kafka                    Up 3 minutes (healthy)
proto-metric-adapter           Up 3 minutes (healthy)
proto-metric-analyzer          Up 3 minutes (healthy)
proto-metric-exporter          Up 2 minutes (healthy)
proto-metric-receiver          Up 3 minutes (healthy)
proto-metric-storage           Up 3 minutes (healthy)
proto-nginx                    Up 2 minutes (healthy)
protoobp-agent                 Up 3 minutes (healthy)
proto-otel-collector           Up 2 minutes (healthy)
proto-postgresql               Up 3 minutes (healthy)
proto-storage                  Up 3 minutes (healthy)
proto-trace-processor          Up 2 minutes (healthy)
proto-trace-receiver           Up 3 minutes (healthy)
proto-ui                       Up 2 minutes (healthy)
proto-zookeeper                Up 3 minutes (healthy)
После сообщения об успешном запуске всех контейнеров, перейдите в браузере по адресу, указанному в UI_URL (адрес сервера).
Стандартная учетная запись для доступа к веб-интерфейсу – логин: admin, пароль: protoobp.
Подключение собственного HTTPS-сертификата
По умолчанию для доступа к веб-интерфейсу используется HTTPS c самоподписанным сертификатом.
Для использования собственного HTTPS-сертификата:
- 
выпустите сертификат для сервера, при этом Common Nameдолжно совпадать с именем домена, указанного в файле.envв переменнойUI_URL, и перенести файлы ключа и сертификата в формате.pemна сервер ProtoOBP Backend.
- 
раскомментируйте в файле /opt/protoobp/.envследующие переменные и укажите корректный путь к файлам сертификата и ключа:POBP_SSL_CERT=/opt/protoobp/ssl/cert.pem # указан пример, введите действительный путь к файлу POBP_SSL_CERT_KEY=/opt/protoobp/ssl/cert.pem # указан пример, введите действительный путь к файлу
- 
в файле docker-compose-198.yamlраскомментируйтеvolumesдля сервисовproto-nginxиproto-auth(изменения в значения вносить не требуется, так как используются переменные из.envфайла):proto-nginx: ... volumes: - ${POBP_SSL_CERT}:/home/nginx/cert.pem - ${POBP_SSL_CERT_KEY}:/home/nginx/cert.keyproto-auth: ... volumes: - ${POBP_SSL_CERT}:/home/nonroot/cert.pem - ${POBP_SSL_CERT_KEY}:/home/nonroot/cert.key
- 
после внесения изменений примените изменения, выполнив: docker compose -f docker-compose-198.yaml stop proto-nginx proto-auth docker compose -f docker-compose-198.yaml rm proto-nginx proto-auth docker volume rm protoobp_postgres_data docker compose -f docker-compose-198.yaml up -d
Изменение лицензионной информации
Изменение лицензионного ключа
При необходимости обновления лицензионного ключа, например, при смене с ознакомительной на продуктивную или при продлении ознакомительной лицензии, выполните следующие шаги:
- 
Обновите значения переменных на сервере ProtoOBP Backend в файле /opt/protoobp/.env:- POBP_LICENSE_KEY– введите значение, указанное в новом лицензионном сертификате в поле “лицензионный ключ”
- POBP_LICENSE_COMPANY_NAME– введите значение, указанное в новом лицензионном сертификате в поле “имя компании для лицензии” (если изменилось)
 
- 
Примените изменения, выполнив команду: docker compose -f docker-compose-198.yaml up -d
- 
Проверьте логи компонента proto-trace-processor:docker compose -f docker-compose-198.yaml logs proto-trace-processorЗайдите в раздел Диагностика>Логи бэкенда>proto-trace-processorУбедитесь, что в логе не содержатся сообщения, связанные с ошибкой активации лицензии сразу после перезапуска компонента. 
Изменение токена доступа к артефактам
В случае изменения значения токена доступа к артефактам (поля “логин/имя пользователя” и/или “пароль/токен” в лицензионном сертификате), выполните следующие шаги:
- 
На сервере ProtoOBP Backend обновите учетные данные для доступа к Docker репозиторию: # удаление старых аутентификационных данных docker logout registry.git.proto.group # ввод новых аутентификационных данных docker login --username <USERNAME> registry.git.proto.groupВаш <USERNAME>и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”.
- 
При использовании собственного прокси-репозитория (Nexus, Artifactory и тд) обновите учетные данные для подключения к репозиторию registry.git.proto.groupна данные из нового лицензионного сертификата.
- 
При использовании скачивания артефактов ProtoOBP напрямую из репозитория вендора, например, в CI/CD пайплайнах – обновите значение токена в этих пайплайнах на значение из нового лицензионного сертификата. 
Возможные проблемы при установке и их устранение
- 
При ошибка контейнера proto-storageубедитесь, что был успешно выполнен пункт п.3 из инструкции выше.
- 
При ошибке или постоянном рестарте контейнеров 
 proto-data-analyzer-router,
 proto-data-analyzer-worker-1,
 proto-data-analyzer-worker-2
 замените тег образов в файлеdocker-compose-198.yamlc198на198-non-avxи перезапустите компоненты командойdocker compose -f docker-compose-198.yaml up -d
Использование локальных Docker репозиториев
Данный шаг является опциональным.
Если вы используете собственный Docker репозиторий, вы можете настроить проксирование запросов в репозиторий Proto OBP.
Параметры подключения к Docker репозиторию Proto OBP:
- адрес репозитория, используемый в файлах конфигурации Proto OBP по умолчанию: registry.git.proto.group/protogroup/protoobp-artifacts
- адрес репозитория, который необходимо указать при настройке proxy-репозитория: https://registry.git.proto.group
- Project ID (если требуется): protogroup/protoobp-artifacts
- необходим сетевой доступ от сервера локального Docker репозитория к следующим адресам (например, через proxy-сервер):
- https://git.proto.groupдля аутентификации в Docker репозитории
- https://registry.git.proto.groupдля скачивания Docker образов
 
- 
добавьте новый Remote Repository: Administration>Repositories>Add Repositories>Remote Repository 
- 
выберите тип репозитория: Docker
- 
в настройках укажите: - Repository Key:- protoobp-proxy(внутреннее имя репозитория)
- URL:- https://registry.git.proto.group/
- Project ID:- protogroup/protoobp-artifacts
- User Name: значение берется из лицензионного сертификата
- Password / Access Token: значение берется из лицензионного сертификата
  
 
- 
далее в настройках ProtoOBP в файле .envукажите, заменивartifactory.localна актуальный адрес сервера Artifactory:DOCKER_REGISTRY="artifactory.local/protoobp-proxy"
- 
добавьте новый Repository: Repository>Repositories>Create repository
- 
на этапе Select Recipeвыберите типdocker (proxy)
- 
в настройках укажите: - Name: protoobp-proxy(внутреннее имя репозитория)
- Proxy>- Remote storage:- https://registry.git.proto.group
  
- HTTP>- Authentication:- Authentication type:- Username
- Username: значение берется из лицензионного сертификата
- Password: значение берется из лицензионного сертификата
  
 
 
- Name: 
- 
далее в настройках ProtoOBP в файле .envукажите, заменитеnexus.localна актуальный адрес сервера Nexus:DOCKER_REGISTRY="nexus.local/protoobp/protoobp-artifacts"
- перед использованием нового репозитория может потребоваться выполнить команду docker login
Список образов для клонирования
- 
Список образов для установки бэкенд сервера ProtoOBP: registry.git.proto.group/protoobp/protoobp-artifacts/proto-alert-monitor:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-alert-processor:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-alertmanager:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-alert-rule-manager:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-api-manager:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-auth:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-backend-logs-viewer:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-aggregator:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-api:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-refresh:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-router:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-router:198-non-avx registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-worker-1:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-worker-1:198-non-avx registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-worker-2:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-data-analyzer-worker-2:198-non-avx registry.git.proto.group/protoobp/protoobp-artifacts/proto-database:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-kafka:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-metric-adapter:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-metric-analyzer:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-metric-exporter:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-metric-receiver:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-metric-storage:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-nginx:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-otel-collector:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-postgresql:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-storage:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-trace-processor:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-trace-receiver:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-ui:198 registry.git.proto.group/protoobp/protoobp-artifacts/proto-zookeeper:198 registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:198
- 
Список образов для подключения сбора метрик и трейсов (потребуется для подключения приложений и серверов к системе): registry.git.proto.group/protoobp/protoobp-artifacts/cluster-agent:7.40.3 registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3 registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3-jmx registry.git.proto.group/protoobp/protoobp-artifacts/pobp-lib-python-init:2.3.1 registry.git.proto.group/protoobp/protoobp-artifacts/pobp-lib-js-init:2.3.1 registry.git.proto.group/protoobp/protoobp-artifacts/pobp-lib-java-init:2.3.1
Установка ProtoOBP Backend на нескольких серверах
Для отказоустойчивости или распределения нагрузки возможно разворачивание ProtoOBP Backend на нескольких серверах.
Инструкции предоставляются по запросу.