Установка агентов Proto Observability Platform

На странице представлена иформация по установке агента платформы наблюдаемости для автоматического сбора метрик, трейсов и логов.

На этой странице:

Описание

ProtoOBP агент автоматически собирает метрики, трейсы и логи и отправляет полученные данные на ProtoOBP Backend сервер.

Сбор трейсов приложения осуществляется с помощью трейсеров, автоматически инструментируя код следующих языков программирования:

Сбор метрик осуществляется автоматически для всех поддерживамых технологий

Схема взаимодействия компонентов ProtoOBP

../images/agent-backend-communiсation.png

Поддерживаемые технологии

Linux

Linux агент – установка

Агент работает на всех основных DEB/RPM дистрибутивах ОС Linux. Подробнее

  1. Скачайте и установите пакет с агентом для вашей ОС

    curl --header "PRIVATE-TOKEN:<your_token>"  "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.40.2/protoobp-agent_7.40.2_amd64.deb" --output protoobp-agent_7.40.2_amd64.deb
    apt install ./protoobp-agent_7.40.2_amd64.deb
    

    Значение <your_token> берется из лицензионного сертификата, полученного ранее от вендора, из раздела “Учетные данные -> Пароль”

    curl --header "PRIVATE-TOKEN:<your_token>"  "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.40.2/protoobp-agent_7.40.2_amd64.rpm" --output protoobp-agent_7.40.2_amd64.rpm
    rpm -ivh protoobp-agent_7.40.2_amd64.rpm
    

    Значение <your_token> берется из лицензионного сертификата, полученного ранее от вендора, из раздела “Учетные данные -> Пароль”.

    В случае появления ошибки на Альт или Роса Линукс:

    ошибка: Неудовлетворенные зависимости: glibc-common нужен для protoobp-agent-1:7.40.2-1.x86_64

    установку агента необходимо выполнить следующей командой:

    rpm -ivh --nodeps protoobp-agent_7.40.2_amd64.rpm
    
  2. Убедитесь что агент корректно установлен, выполнив:

    protoobp-agent version
    

    Результат выполнения команды:

    Agent 7.40.2 - Meta: git.8.d01c4fd - Commit: d01c4fd - Serialization version: v5.0.32 - Go version: go1.18.8
    

Linux агент – конфигурация

  1. По умолчанию файл конфигурации агента расположен в каталоге /etc/protoobp-agent/

  2. Создайте файл protoobp.yaml:

    vim /etc/protoobp-agent/protoobp.yaml
    

    и укажите в нем следующее:

    api_key: my_api_key
    pobp_url: http://protoobp-backend/metrics
    apm_config:
      apm_pobp_url: http://protoobp-backend:9080
      telemetry:
        enabled: false 
    
    api_key: my_api_key
    pobp_url: http://protoobp-backend
    apm_config:
      apm_pobp_url: http://protoobp-backend
      telemetry:
        enabled: false     
    

    Где,

    • api_key - ваш ключ
    • pobp_url - адрес ProtoOBP Backend сервера
    • apm_pobp_url - адрес ProtoOBP Backend сервера

    Полный пример конфигурации, можно посмотреть в файле protoobp.yaml.example

  3. Если на хосте запускаются Docker контейнеры, то необходимо добавить пользователя pobp-agent в группу Docker, чтобы агент мог собирать метрики по работе контейнеров, в дополнение к метрикам самого хоста:

    usermod -a -G docker pobp-agent
    
  4. Запустите агента systemctl start protoobp-agent

    При успешной настройке агента вы сможете увидеть новый хост в разделе Инфраструктура > Хосты в течение одной-двух минут.

Linux агент – управление

ProtoOBP Agent запускается как systemd служба - protoobp-agent.

Действие Команда
Запуск агента systemctl start protoobp-agent
Остановка агента systemctl stop protoobp-agent
Перезапуск службы systemctl restart protoobp-agent

Windows

Windows агент – установка

  1. Скачайте .msi установщик с агентом (замените <YOUR_TOKEN> на значение вашего токена из вашего лицензионного сертификата)

    curl --header "PRIVATE-TOKEN:<YOUR_TOKEN>"  "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.40.2/protoobp-agent-7.40.2-x64.msi" --output protoobp-agent-7.40.2-x64.msi
    
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    $webClient = New-Object System.Net.WebClient
    $webClient.Headers.Add("PRIVATE-TOKEN", "<YOUR_TOKEN>")
    $webClient.DownloadFile(
       "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.40.2/protoobp-agent-7.40.2-x64.msi", 
       "protoobp-agent-7.40.2-x64.msi"
    )
    
  2. Запустите .msi установщик в графическом режиме и следуйте указаниям мастера установки агента, разрешите административные привилегии в момент запроса.

    • Для консольной установки используйте PowerShell команду (запуск PowerShell должен быть от Администратора):
      Start-Process -Wait msiexec -ArgumentList '/qn /i protoobp-agent-7.40.2-x64.msi APIKEY="<YOUR-TOKEN>"'
      

GMSA

Использование GMSA не является обязательным. GMSA для установки и запуска агент может применяться в доменной структуре с ограничивающими доменными политиками безопасности или если при использовании стандартного способа установки агенту не хватает прав на запуск сервисов из-за ограничений безопасности.

Для использования агента с GMSA выполните следующие шаги:

  1. Создайте Security Group и добавьте в нее все компьютеры, на которых будет установлен агент с использованием GMSA:

    1. Откройте Active Directory Users and Computers (ADUC).
    2. Перейдите в нужный Organizational Unit (OU).
    3. Сделайте клик правой кнопкой мыши и выберите New > Group.
    4. Назовите группу, например, ProtoOBPAgentsGroup
    5. Установите необходимый скоуп группы, например Domain local.
    6. Установите тип группы: Security.
    7. Добавьте в эту группу все компьютеры, которые будут использовать GMSA для установки и запуска агента.
  2. Создайте GMSA c именем ProtoobpGMSA:

    1. Октройте PowerShell с привилегиями Администратора.

    2. Выполните следующую команду для создания GMSA, замените <YOUR_DOMAIN_CONTROLLER_NAME> на DNS имя вашего контроллера домена:

      New-ADServiceAccount `
       -Name ProtoobpGMSA `
       -DNSHostName <YOUR_DOMAIN_CONTROLLER_NAME> `
       -PrincipalsAllowedToRetrieveManagedPassword ProtoOBPAgentsGroup
      

      Убедитесь, что команда выполнена без ошибок.

      В случае ошибок:

      • создайте Kds ключ:
        Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-10))
        
      • проверьте, что указанная группа существует:
        Get-ADGroup -Identity ProtoOBPAgentsGroup
        
      • выполните создание GMSA еще раз:
        New-ADServiceAccount `
         -Name ProtoobpGMSA `
         -DNSHostName <YOUR_DOMAIN_CONTROLLER_NAME> `
         -PrincipalsAllowedToRetrieveManagedPassword ProtoOBPAgentsGroup
        
  3. Подключите GMSA и убедитесь, что GMSA может быть использована на целевой машине. На целевой машине откройте PowerShell и выполните:

    Install-ADServiceAccount -Identity ProtoobpGMSA
    

    Убедитесь, что команда выполнена без ошибок.

    Проверьте, что GMSA успешно установлена:

    Test-ADServiceAccount -Identity ProtoobpGMSA
    

    Ожидаемый вывод команды: True

    Устранение неполадок подключения GMSA на целевую машину:

    • проверьте, какие группы имеют разрешение использовать GMSA:
      Get-ADServiceAccount -Identity ProtoobpGMSA -Properties PrincipalsAllowedToRetrieveManagedPassword
      
      если группа ProtoOBPAgentsGroup отсутствует в списке в разделе PrincipalsAllowedToRetrieveManagedPassword, обновите GMSA и добавьте группу ProtoOBPAgentsGroup:
      Set-ADServiceAccount -Identity ProtoobpGMSA -PrincipalsAllowedToRetrieveManagedPassword ProtoOBPAgentsGroup
      
    • проверьте, что машина является членом группы:
      Get-ADGroupMember -Identity ProtoOBPAgentsGroup
      
      убедитесь, что в выводе есть имя текущего компьютра, если его нет – добавьте компьютер в группу:
      Add-ADGroupMember -Identity ProtoOBPAgentsGroup -Members <ComputerName>
      
    • выполните обновление групповых политик, удалите Kerberos тикеты и перезагрузите компьютер:
      gpupdate /force
      klist purge
      Restart-Computer
      
  4. Установите агента с использованием GMSA:

    1. Если агент ранее был установлен стандартным методом (запуск от новой учетной записи pobpagentuser, созданной на этапе установки агента), то необходимо полностью удалить агента и его файлы, перед использованием установки с использованием GMSA.
      1. Через Control Panel удалите пакет агента (через графический интерфейс).
      2. Вручную удалите папку C:\ProgramData\Protoobp (обязательный шаг, иначе последующая установка завершится ошибкой)
    2. Запустите .msi установщик агента.
    3. Введите запрашиваемые ключ и адрес бэкенд сервера
    4. На этапе выбора учётной записи (Please enter the username) укажите созданную и установленную на этой машине GMSA в формате: <ВАШ_ДОМЕН>\ProtoobpGMSA$ – обязательно с символом $ в конце. Поле пароль обязательно оставьте пустым.
    5. Зайдите в веб-интерфейс агента, и выполните конфигурацию агента через веб-интерфейс.
    6. Откройте services.msc и убедитесь, что агент запускается от имени доменной GMSA:
      ../images/windows-agent-gmsa.png

Windows агент – конфигурация

  1. Запустите веб-консоль управления агентом ProtoOBP Agent Manager.
    ../images/windows-protoobp-agent-manager.png

  2. Откроется веб-браузер с консолью управления. В случае запроса изменения настроек безопасности – добавьте в доверенные узлы http://127.0.0.1 и about:blank.
    ../images/windows-protoobp-agent-manager-start-screen.png

  3. Перейдите в раздел Settings и в конфигурации агента укажите следующее:

    api_key: my_api_key
    pobp_url: http://<адрес_бекенд_сервера_protoobp>/metrics
    apm_config:
      apm_pobp_url: http://<адрес_бекенд_сервера_protoobp>:9080
      enabled: true
      telemetry:
        enabled: false
    
    Параметры:
    
    api_key значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>/metrics, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    apm_pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>:9080, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
    api_key: my_api_key
    pobp_url: http://<адрес_бекенд_сервера_protoobp>
    apm_config:
      apm_pobp_url: http://<адрес_бекенд_сервера_protoobp>
      enabled: true
      telemetry:
        enabled: false
    
    Параметры:
    
    api_key значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    apm_pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента

    Пример окна конфигурации: ../images/windows-agent-config.png

  4. Перезапустите агента, для этого консоли управления кликните на Restart Agent.

    При успешной настройке агента вы сможете увидеть новый хост в разделе Инфраструктура > Хосты в течение одной-двух минут.

Windows агент – управление

  1. Запустите ProtoOBP Agent Manager:
    ../images/windows-protoobp-agent-manager.png

  2. Для перезапуска агента в левом меню выберите и нажмите на раздел Restart Agent
    ../images/windows-agent-restart-gui.png

Также после запуска ProtoOBP Agent Manager в системном трее доступна иконка с контекстным меню агента для управления агентом:

../images/windows-agent-commands-gui.png

Для команд ниже используйте только привилегированную командную строку (run as Administrator)

Действие Команда
Запуск агента "C:\Program Files\Protoobp\Protoobp Agent\bin\agent.exe" start-service
Остановка агента "C:\Program Files\Protoobp\Protoobp Agent\bin\agent.exe" stopservice
Перезапуск службы "C:\Program Files\Protoobp\Protoobp Agent\bin\agent.exe" restart-service

Windows агент – типовые проблемы

Сервис не запускается

В случае, если службы Агента не запускаются с ошибкой Access is denied:

  • Убедитесь, что у служебного пользователя, от имени которого запускается агент, есть права Log on as a service. Инсталлятор добавляет это право, но в случае использования групповых доменнных политик это право может быть отозвано у служебной учетной записи. Необходимо настроить групповые политики на разрешение служебному пользователю осуществлять Log on as a service.
    • откройте Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment
    • локальный пользователь, создаваемый в процессе установки (pobpagentuser): ../images/windows-agent-log-on-as-a-service.jpg
    • в случае использования GMSA – DomainName\ProtoobpGMSA$:
      ../images/gmsa-security-log-on-as-a-service.png
  • Убедитесь, что служебный пользователь pobpagentuser является членом группы Users на сервере. В случае использования GMSA такое право должно быть у этой учетной записи.

Ошибка “Сервис помечен для удаления”

В случае запуска процедуры удаления агента, файлы агента удаляются, но службы агента остаются видимы в системе, при попытке их удаления через командую строку выводится сообщение о том, что сервис “помечен для удаления”. В этом случае потребуется перезагрузка машины, чтобы произошло полное удаление сервисов. После перезагрузки возможно заново установить пакет агента. Это особенность операционной системы Windows.

Docker

Запуск Docker агента (отдельный контейнер)

  1. Подключитесь к Docker репозиторию ProtoOBP выполнив команду:

    sudo docker login --username <USERNAME> registry.git.proto.group
    

    Ваш <USERNAME> и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.

  2. Запустите агента

        docker run -d \
        --cgroupns host \
        --pid host \
        --name protoobp-agent \
        -v /var/run/docker.sock:/var/run/docker.sock:ro \
        -v /proc/:/host/proc/:ro \
        -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
        -e POBP_API_KEY=<your_api_key> \
        -e POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp>/metrics \
        -e POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp>:9080 \
        registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
    

    Переменные окружения:

    POBP_API_KEY значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>/metrics, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>:9080, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
        docker run -d \
        --cgroupns host \
        --pid host \
        --name protoobp-agent \
        -v /var/run/docker.sock:/var/run/docker.sock:ro \
        -v /proc/:/host/proc/:ro \
        -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
        -e POBP_API_KEY=<your_api_key> \
        -e POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp> \
        -e POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> \
        registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
    

    Переменные окружения:

    POBP_API_KEY значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента

Запуск Docker агента (docker compose)

  1. Подключитесь к Docker репозиторию ProtoOBP выполнив команду:

    sudo docker login --username <USERNAME> registry.git.proto.group
    

    Ваш <USERNAME> и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”. Пароль вводится интерактивно.

  2. Добавьте в ваш docker-compose.yaml файл следующее:

    protoobp-agent:
      container_name: protoobp-agent
      image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
      pid: host
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock:ro
        - /proc/:/host/proc/:ro
        - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
        - /etc/os-release:/host/etc/os-release:ro
      environment:
        - POBP_API_KEY=<your_api_key>
        - POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp>/metrics
        - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp>:9080
    
      Переменные окружения:
    
    POBP_API_KEY значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>/metrics, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>:9080, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
    protoobp-agent:
      container_name: protoobp-agent
      image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.40.3
      pid: host
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock:ro
        - /proc/:/host/proc/:ro
        - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
        - /etc/os-release:/host/etc/os-release:ro
      environment:
        - POBP_API_KEY=<your_api_key>
        - POBP_POBP_URL=http://<адрес_бекенд_сервера_protoobp>
        - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp>
    
      Переменные окружения:
    
    POBP_API_KEY значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    POBP_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    POBP_APM_POBP_URL строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
  3. Запустите агента, выполнив docker compose up -d protoobp-agent

Kubernetes

После установки агента в системе появятся поды агента:

  • protoobp
  • protoobp-cluster-agent

Необходимые сетевые порты для работы Kubernetes агента:

Source Name Destination Name Destination PORT/PROTO Description
поды агента (protoobp и protoobp-cluster-agent) proto backend 443/tcp отправка данных (метрики, трейсы, логи) от агента на бэкенда
под агента protoobp под агента protoobp-cluster-agent 5005/tcp подключение агента к cluster-агенту
поды приложений под агента protoobp 8125/udp отправка метрик от приложения к агенту
поды приложений под агента protoobp 8126/tcp отправка трейсов от приложения к агенту
IP k8s control plane IP k8s ноды 8000/tcp подключение webhook автоматической инструментации приложений

Установка Kubernetes агента

  1. Добавьте helm репозиторий ProtoOBP:

    helm repo add --username <my_login> --password <my_password> protoobp https://git.proto.group/api/v4/projects/125/packages/helm/stable
    

    Ваши логин и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”.

  2. Добавьте secret для скачивания Docker образов из репозитория ProtoOBP. Для этого воспользуйтесь готовым скриптом script.sh:

    # Укажите имя пользователя
    login="my_login"
    # Укажите пароль
    password="my_password"
    # Укажите адрес репозитория
    registry="registry.git.proto.group"
    # Укажите namespace в котором будет установлен агент (по умолчанию protoobp)
    namespace="protoobp"
    
    ######################
    # Скрипт
    set -o errexit
    
    echo 'Создаем Secret'
    kubectl create namespace ${namespace}
    kubectl create secret docker-registry protoobp-registry --docker-username=${login} --docker-password=${password} --docker-server=${registry} --namespace=${namespace}
    
  3. Создайте файл values.yaml с конфигурацией агента

    targetSystem: "linux"
    commonLabels: {}
    registry: registry.git.proto.group/protoobp/protoobp-artifacts # необходимо изменить в случае использования собственного Docker репозитория
    protoobp:
      apiKey: <ВАШ_API_KEY>   # указан в лицензионном сертификате 
      clusterName: <ИМЯ_КЛАСТЕРА>  # задается вручную в соответствии с текущим реальным именем кластер
      pobp_url: http://<адрес_бекенд_сервера_protoobp>/metrics
      pobp_apm_url: http://<адрес_бекенд_сервера_protoobp>:9080
      logLevel: INFO
      processAgent:
        enabled: false
      kubelet:
        tlsVerify: false
    clusterAgent:
      image:
        name: cluster-agent
        tag: 7.40.3
        pullSecrets:
          - name: "protoobp-registry"
      env:  ## этот раздел и переменная ниже добавляется только в случае использования локального репозитория Docker образов для компонентов Proto Observability Platform 
        - name: POBP_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY
          value: docker.intranet/protoobp/protoobp-artifacts ## здесь указывается адрес локального репозитория - зеркала образов        
    agents:
      image:
        name: protoobp-agent
        tag: 7.40.3
        pullSecrets:
          - name: "protoobp-registry"
    

    Параметры:

    <ВАШ_API_KEY> значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>/metrics, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    apm_pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>:9080, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
    <ИМЯ_КЛАСТЕРА> имя кластера, которое будет отображаться в интерфейсе Proto Observability Platform
    targetSystem: "linux"
    commonLabels: {}
    registry: registry.git.proto.group/protoobp/protoobp-artifacts # необходимо изменить в случае использования собственного Docker репозитория
    protoobp:
      apiKey: <ВАШ_API_KEY>   # указан в лицензионном сертификате 
      clusterName: <ИМЯ_КЛАСТЕРА>  # задается вручную в соответствии с текущим реальным именем кластер
      pobp_url: http://<адрес_бекенд_сервера_protoobp>
      pobp_apm_url: http://<адрес_бекенд_сервера_protoobp>
      logLevel: INFO
      processAgent:
        enabled: false
      kubelet:
        tlsVerify: false
    clusterAgent:
      image:
        name: cluster-agent
        tag: 7.40.3
        pullSecrets:
          - name: "protoobp-registry"
      env:  ## этот раздел и переменная ниже добавляется только в случае использования локального репозитория Docker образов для компонентов Proto Observability Platform 
        - name: POBP_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY
          value: docker.intranet/protoobp/protoobp-artifacts ## здесь указывается адрес локального репозитория - зеркала образов        
    agents:
      image:
        name: protoobp-agent
        tag: 7.40.3
        pullSecrets:
          - name: "protoobp-registry"
    

    Параметры:

    <ВАШ_API_KEY> значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Пароль
    pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> - адрес вашего ProtoOBP Backend сервера, доступного для агента
    apm_pobp_url строка вида http://<адрес_бекенд_сервера_protoobp>, где <адрес_бекенд_сервера_protoobp> – адрес вашего ProtoOBP Backend сервера, доступного для агента
    <ИМЯ_КЛАСТЕРА> имя кластера, которое будет отображаться в интерфейсе Proto Observability Platform
  4. Установите helm чарт в ваш Kubernetes кластер (в примере ниже исползуется неймспейс protoobp)

    helm install protoobp -f values.yaml protoobp/protoobp --namespace protoobp
    

Использование hostPath ноды

Поды агента имеют несколько hostPath mount:

Имя Mount Описание
procdir Подключается в режиме read-only. Используется системными проверками.
cgroups Подключается в режиме read-only. Используется для сбора метаданных контейнеров.
os-release-file Подключается в режиме read-only. Используется для определения ОС.
passwd Подключается в режиме read-only. Используется для ассоциирования процессов с пользователями.
runtimesocketdir Подключается в режиме read-only. Используется для сбора метрик контейнеров.
dsdsocket Подключается в режиме read-write. Используется для приема метрик, опционально также может быть включен порт.
apmsocket Подключается в режиме read-write. Используется для приема трейсов, опционально также может быть включен порт.

Работа в непривилегированном режиме

Для максимальной совместимости и автоматизации сбора данных агент в контейнере по умолчанию запускается от пользователя root.

Использование не root пользователя может ограничить работу некоторых интеграций, которым необходимы данные хоста (ноды).

Пользователя, под которым запускается агент в контейнере, можно изменить, указав в values.yaml ID необходимого пользователя.

protoobp:
...
  securityContext:
      runAsUser: <USER_ID> 
      # UID пользователя, под которым будет запускаться Proto OBP агент
      supplementalGroups:
        - <GROUP_ID> 
        # ID группы, которая является владельцем сокета Docker или containerd

Дополнительная конфигурация для OpenShift

Особенности настройки агентов Proto OBP с OpenShift:

  • необходимо указать создание SCC (Security Context Constraints) для агентов
  • необходимо указать путь к сокету CRI, так как OpenShift использует CRI-O в качестве рантайма контейнеров
  • необходимо добавить tolerations для запуска агентов на master и infra нодах кластера

Для этого в файле values.yaml в разделе agents добавьте:

protoobp:
  criSocketPath: /var/run/crio/crio.sock

...
agents:
  useHostNetwork: true
  podSecurity:
    securityContextConstraints:
      create: true
  tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/infra
      operator: Exists
clusterAgent:
  podSecurity:
    securityContextConstraints:
      create: true
...

Изменение параметров Kubernetes агента

После внесения изменений в файл values.yaml можно применить изменения с помощью команды:

helm upgrade protoobp -f values.yaml protoobp/protoobp --namespace protoobp

Или воспользуйтесь полным удалением агента и переустановкой.

Удаление Kubernetes агента

Удалить ProtoOBP агента из Kubernetes кластера, можно выполнив (используемый в примере неймспейс – protoobp, замените при использовании нестандартного неймспейса):

helm uninstall protoobp -n protoobp

Работа агента через proxy

  1. Настройка прокси-сервера. В качестве примера может использоваться прокси-сервер Nginx и минимальная конфигурация:

    user www-data;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    load_module /usr/lib/nginx/modules/ngx_stream_module.so;
    
    events {
        worker_connections 1024;
    }
    
    stream {
    
        server {
            listen 80;
            proxy_ssl_verify off;
            proxy_ssl on;
            proxy_pass proto-backend:443;
        }
    }
    

    Где proto-backend – адрес вашего бэкенд сервера.

  2. Настройка агента для использования прокси. В используемых адресах вместо адресов бэкенда укажите адрес прокси сервера:

    api_key: your-api-key
    pobp_url: http://nginx-proxy
    skip_ssl_validation: true
    apm_config:
      apm_pobp_url: http://nginx-proxy
      telemetry:
        enabled: false
    database_monitoring:
      metrics:
        pobp_url: nginx-proxy
      activity:
        pobp_url: nginx-proxy
      samples:
        pobp_url: nginx-proxy
    

    Где nginx-proxy – адрес вашего прокси сервера.

  3. Примените изменения, перезапустив агента.

Файлы конфигурации агента

Основной конфигурационный файл агента:

Платформа Путь и имя файла
Linux /etc/protoobp-agent/protoobp.yaml
Windows %ProgramData%\Protoobp\protoobp.yaml

Файлы конфигурации модулей для мониторинга технологий находятся в папке <путь к папке конфигурации>/conf.d/<технология>.d/..

Путь к папке конфигурации зависит от платформы:

Платформа Путь
Linux /etc/protoobp-agent/conf.d/
Windows %ProgramData%\Protoobp\conf.d

Например, для мониторинга MySQL на агента Linux путь к файлу конфигурации MySQL будет иметь вид:

/etc/protoobp-agent/conf.d/mysql.d/conf.yaml

Проверка работы агента

Платформа Команда
Docker sudo docker exec -it protoobp-agent agent status
Kubernetes kubectl exec -it <AGENT_POD_NAME> -- agent status
Linux sudo protoobp-agent status
Windows Для команды ниже используйте только привилегированную командную строку (run as Administrator) "C:\Program Files\Protoobp\Protoobp Agent\bin\agent.exe" status

Логи агента

Логи работы агента располагаются в следующих локациях:

Платформа Путь
Linux /var/log/protoobp/
Windows C:\ProgramData\Protoobp\logs

Логи установки агента располагаются в следующих локациях:

Платформа Путь и имя файла
Linux $(pwd)/protobop-agent-install.log
Windows %TEMP%\MSI*.LOG