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

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

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

Описание

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

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

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

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

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

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

Linux

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

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

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

    Выберите версию агента. Актуальная версия — 7.80.2.

    DEB-based (Ubuntu, Debian, Astra Linux и т.д.):

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

    RPM-based (CentOS, Alt Linux, Rosa Linux, РЕД ОС и т.д.):

    curl --header "PRIVATE-TOKEN:<your_token>"  "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.80.2/protoobp-agent-7.80.2-1.x86_64.rpm" --output protoobp-agent-7.80.2-1.x86_64.rpm
    rpm -ivh protoobp-agent-7.80.2-1.x86_64.rpm
    

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

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

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

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

    rpm -ivh --nodeps protoobp-agent-7.80.2-1.x86_64.rpm
    

    DEB-based (Ubuntu, Debian, Astra Linux и т.д.):

    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
    

    RPM-based (CentOS, Alt Linux, Rosa Linux, РЕД ОС и т.д.):

    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
    

    Результат выполнения команды (значение Commit приведено для примера и зависит от сборки):

    Agent 7.80.2 - Commit: 39e8d835 - Serialization version: v5.0.196 - Go version: go1.25.12
    

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

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

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

    vim /etc/protoobp-agent/protoobp.yaml
    

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

    api_key: my_api_key
    pobp_url: http://protoobp-backend        # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
    apm_config:
      apm_non_local_traffic: true
      apm_pobp_url: http://protoobp-backend  # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
      telemetry:
        enabled: false
    agent_telemetry:
      enabled: false       
    process_config:
      enabled: false
      process_collection:
        enabled: false
      container_collection:
        enabled: false
      process_discovery:
        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. Если на хосте запускаются Docker контейнеры с приложениями, в которые будут добавлены трейсеры:

    1. При конфигурации трейсера для Docker контейнера с приложением, отсылающим трейсы в Агента, установленного на хосте (не в контейнере):
      POBP_AGENT_HOST=host.docker.internal
      
    2. При запуске контейнера с приложением добавьте опцию extra_hosts в ваш docker-compose.yaml файл:
      extra_hosts:                            
        - "host.docker.internal:host-gateway"
      
      host-gateway – это специальная строка-шаблон, появившаяся в Docker 20.10.0+, ее значение при использовании в extra_hosts будет соответствовать IP адресу машины. Таким образом, по имени host.docker.internal будет доступен IP адрес машины.
  5. Запустите агента, выполнив:

    systemctl start protoobp-agent
    

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

Linux агент – обновление

Обновление выполняется установкой пакета новой версии поверх старой — удалять предыдущую версию не нужно. Файл /etc/protoobp-agent/protoobp.yaml и содержимое conf.d/ при обновлении сохраняются, служба перезапускается автоматически.

Пример обновления с 7.40.2 на 7.80.2:

DEB-based (Ubuntu, Debian, Astra Linux и т.д.):

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

RPM-based (CentOS, Alt Linux, Rosa Linux, РЕД ОС и т.д.):

curl --header "PRIVATE-TOKEN:<your_token>"  "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.80.2/protoobp-agent-7.80.2-1.x86_64.rpm" --output protoobp-agent-7.80.2-1.x86_64.rpm
rpm -Uvh protoobp-agent-7.80.2-1.x86_64.rpm

Для RPM используется именно rpm -Uvh (upgrade), а не rpm -ivh (install): -ivh на уже установленном агенте завершится ошибкой «package is already installed». Если на Альт или Роса Линукс возникает ошибка о неудовлетворённых зависимостях glibc-common, добавьте --nodeps: rpm -Uvh --nodeps protoobp-agent-7.80.2-1.x86_64.rpm.

Проверьте результат обновления:

protoobp-agent version
systemctl status protoobp-agent
sudo protoobp-agent status

Linux агент – удаление

Возможны два сценария: удаление агента с сохранением конфигурации (например, перед переустановкой) и полное удаление вместе с настройками и логами.

DEB-based (Ubuntu, Debian, Astra Linux и т.д.):

# удалить агента, сохранив /etc/protoobp-agent (конфигурацию и conf.d)
sudo apt remove protoobp-agent

# полное удаление: пакет, конфигурация, логи, служебный пользователь pobp-agent
sudo apt purge protoobp-agent

RPM-based (CentOS, Alt Linux, Rosa Linux, РЕД ОС и т.д.):

sudo rpm -e protoobp-agent

Что удаляется в каждом случае:

Объектapt remove / rpm -eapt purge
Пакет и файлы в /opt/protoobp-agentудаляютсяудаляются
systemd-юниты protoobp-agent*.serviceудаляютсяудаляются
Конфигурация /etc/protoobp-agent/сохраняетсяудаляется
Логи /var/log/protoobp/сохраняютсяудаляются
Служебный пользователь pobp-agentсохраняетсяудаляется

Если после rpm -e или apt remove требуется полностью очистить систему, удалите оставшиеся каталоги и учётную запись вручную:

sudo rm -rf /etc/protoobp-agent /opt/protoobp-agent /var/log/protoobp
sudo userdel pobp-agent

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

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

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

Linux агент – ручная настройка systemd-юнитов

Переопределение параметров юнита (drop-in)

Drop-in-файлы лежат в /etc/systemd/system/, установщиком агента не затрагиваются и переживают обновление. Пример — изменить политику перезапуска основного агента:

mkdir -p /etc/systemd/system/protoobp-agent.service.d
cat > /etc/systemd/system/protoobp-agent.service.d/override.conf <<'EOF'
[Service]
Restart=always
RestartSec=10
EOF
systemctl daemon-reload
systemctl restart protoobp-agent

Посмотреть итоговый юнит со всеми применёнными drop-in:

systemctl cat protoobp-agent

Переменные окружения агента

Юниты подключают файл переменных окружения:

EnvironmentFile=-/etc/protoobp-agent/environment

По умолчанию файла нет — при необходимости создайте его. Пример:

cat > /etc/protoobp-agent/environment <<'EOF'
POBP_LOG_LEVEL=debug
EOF
systemctl restart protoobp-agent

Так задаются любые параметры конфигурации в виде переменных POBP_* — альтернатива правке protoobp.yaml. Выполнять daemon-reload не требуется: файл читается при старте службы.

Состав юнитов

ЮнитНазначение
protoobp-agentосновной агент (запускает остальные)
protoobp-agent-tracetrace-агент (APM)
protoobp-agent-processсбор процессов и контейнеров
protoobp-agent-sysprobesystem-probe (сетевые и eBPF-метрики)
protoobp-agent-securitysecurity-агент
protoobp-agent-data-planeagent-data-plane
protoobp-agent-actionprivate action runner
protoobp-agent-ddotOpenTelemetry-коллектор
protoobp-agent-installerслужебный юнит установщика
protoobp-agent-procmgrdменеджер процессов агента

Отдельно запускать дочерние юниты не требуется: основной protoobp-agent объявляет их в Wants= и поднимает вместе с собой.

Linux агент – управление на системах без systemd

На дистрибутивах без systemd (RHEL 6.x, CentOS 6, старые линейки Alt Linux, Rosa Linux, РЕД ОС и др.) команды systemctl недоступны. Способ управления агентом зависит от типа пакета — DEB и RPM разворачивают разные наборы скриптов запуска.

DEB-пакет (Ubuntu, Debian, Astra Linux и т.д.)

DEB-пакет штатно устанавливает и SysV init-скрипты в /etc/init.d/, и задания upstart в /etc/init/ — писать их вручную не нужно. Какой набор будет задействован, определяет система инициализации дистрибутива.

SysV init-скрипты:

СкриптКомпонент
/etc/init.d/protoobp-agentосновной агент
/etc/init.d/protoobp-agent-tracetrace-агент (APM)
/etc/init.d/protoobp-agent-processprocess-агент
/etc/init.d/protoobp-agent-securitysecurity-агент
/etc/init.d/protoobp-agent-data-planeagent-data-plane
/etc/init.d/protoobp-agent-actionprivate action runner

Управление:

ДействиеКоманда
Запуск агентаservice protoobp-agent start
Остановка агентаservice protoobp-agent stop
Перезапуск агентаservice protoobp-agent restart
Статус агентаservice protoobp-agent status

Скрипт основного агента при старте и остановке сам подтягивает остальные компоненты (trace, process, security и др.), поэтому запускать их по отдельности не требуется. Отключить конкретный компонент можно через /etc/default/<имя_скрипта>.

SysV-скрипты рассчитаны на Debian-совместимое окружение: используют start-stop-daemon и /lib/lsb/init-functions. На RPM-дистрибутивах они неработоспособны.

Если в системе используется upstart, применяются задания из /etc/init/, а управление выполняется через initctl — так же, как описано ниже для RPM.

RPM-пакет (CentOS, Alt Linux, Rosa Linux, РЕД ОС и т.д.)

RPM-пакет SysV init-скрипты не устанавливает — только задания upstart в /etc/init/ (protoobp-agent.conf, protoobp-agent-trace.conf, protoobp-agent-process.conf, protoobp-agent-security.conf, protoobp-agent-sysprobe.conf, protoobp-agent-data-plane.conf, protoobp-agent-action.conf) — они рассчитаны на старую версию upstart (0.6.5) из RHEL 6.

Если в системе используется upstart (RHEL 6.x, CentOS 6), управление выполняется штатно:

ДействиеКоманда
Запуск агентаinitctl start protoobp-agent
Остановка агентаinitctl stop protoobp-agent
Статус агентаinitctl status protoobp-agent

Команды service protoobp-agent start|stop|status на таких системах также работают — они транслируются в initctl.

Если же в дистрибутиве нет ни systemd, ни upstart (классический SysV-init), штатных скриптов запуска в пакете нет — используйте init-скрипты, приведённые ниже.

Собственные init-скрипты для «чистого» SysV

Скрипты ниже нужны только там, где нет ни systemd, ни upstart, ни штатных init-скриптов из DEB-пакета. Они разработаны под основной агент (protoobp-agent) и trace-агент APM (protoobp-agent-trace) и проверены на версии 7.80.2.

Скрипты покрывают только эти два компонента. Остальные компоненты 7.80.2 (process, security, system-probe, data-plane, private action runner, DDOT) на «чистом» SysV остаются неуправляемыми — при необходимости заведите для них скрипты по аналогии, взяв команду запуска из соответствующего файла /etc/init/protoobp-agent-*.conf.

init-скрипт основного агента

Сохраните в /etc/init.d/protoobp-agent:

#!/bin/bash
#
# protoobp-agent  ProtoOBP monitoring agent (main)
#
# chkconfig: 2345 99 01
# description: ProtoOBP monitoring agent (main)
# pidfile: /opt/protoobp-agent/run/agent.pid

### BEGIN INIT INFO
# Provides:          protoobp-agent
# Required-Start:    $local_fs $network $remote_fs $syslog
# Required-Stop:     $local_fs $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: ProtoOBP monitoring agent (main)
### END INIT INFO

. /etc/rc.d/init.d/functions

NAME="protoobp-agent"
USER="pobp-agent"
DAEMON="/opt/protoobp-agent/bin/agent/agent"
DAEMON_ARGS="run -p /opt/protoobp-agent/run/agent.pid"
PIDFILE="/opt/protoobp-agent/run/agent.pid"

LOCKFILE="/var/lock/subsys/${NAME}"
LOGFILE="/var/log/protoobp/${NAME}-init.log"
RUNDIR="/opt/protoobp-agent/run"
LOGDIR="/var/log/protoobp"

[ -x "$DAEMON" ] || { echo "$DAEMON not found"; exit 5; }
[ -d "$RUNDIR" ] || install -d -o "$USER" -g "$USER" "$RUNDIR"
[ -d "$LOGDIR" ] || install -d -o "$USER" -g "$USER" "$LOGDIR"

is_running() {
    [ -f "$PIDFILE" ] || return 1
    local pid
    pid="$(cat "$PIDFILE" 2>/dev/null)"
    [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null
}

start() {
    echo -n "Starting $NAME: "
    if is_running; then
        echo "already running (pid $(cat "$PIDFILE"))"
        return 0
    fi
    nohup su "$USER" -s /bin/bash -c "exec $DAEMON $DAEMON_ARGS" \
        >> "$LOGFILE" 2>&1 < /dev/null &
    for _ in 1 2 3 4 5 6 7 8 9 10; do
        is_running && break
        sleep 1
    done
    if is_running; then
        touch "$LOCKFILE"
        echo "OK (pid $(cat "$PIDFILE"))"
        return 0
    fi
    echo "FAILED — см. $LOGFILE"
    return 1
}

stop() {
    echo -n "Stopping $NAME: "
    if ! is_running; then
        echo "not running"
        rm -f "$LOCKFILE" "$PIDFILE"
        return 0
    fi
    killproc -p "$PIDFILE" -d 15 "$DAEMON"
    rc=$?
    [ $rc -eq 0 ] && rm -f "$LOCKFILE"
    return $rc
}

case "$1" in
    start)   start ;;
    stop)    stop ;;
    restart) stop; sleep 2; start ;;
    status)
        if is_running; then
            echo "$NAME is running (pid $(cat "$PIDFILE"))"
            exit 0
        fi
        echo "$NAME is not running"
        exit 3
        ;;
    *) echo "Usage: $0 {start|stop|restart|status}"; exit 2 ;;
esac
exit $?

init-скрипт trace-агента (APM)

Если используется APM, дополнительно сохраните в /etc/init.d/protoobp-agent-trace:

#!/bin/bash
#
# protoobp-agent-trace  ProtoOBP APM trace agent
#
# chkconfig: 2345 98 02
# description: ProtoOBP APM trace agent
# pidfile: /opt/protoobp-agent/run/trace-agent.pid

### BEGIN INIT INFO
# Provides:          protoobp-agent-trace
# Required-Start:    $local_fs $network $remote_fs $syslog protoobp-agent
# Required-Stop:     $local_fs $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: ProtoOBP APM trace agent
### END INIT INFO

. /etc/rc.d/init.d/functions

NAME="protoobp-agent-trace"
USER="pobp-agent"
DAEMON="/opt/protoobp-agent/embedded/bin/trace-agent"
DAEMON_ARGS="--config /etc/protoobp-agent/protoobp.yaml --pidfile /opt/protoobp-agent/run/trace-agent.pid"
PIDFILE="/opt/protoobp-agent/run/trace-agent.pid"

LOCKFILE="/var/lock/subsys/${NAME}"
LOGFILE="/var/log/protoobp/${NAME}-init.log"
RUNDIR="/opt/protoobp-agent/run"
LOGDIR="/var/log/protoobp"

[ -x "$DAEMON" ] || { echo "$DAEMON not found"; exit 5; }
[ -d "$RUNDIR" ] || install -d -o "$USER" -g "$USER" "$RUNDIR"
[ -d "$LOGDIR" ] || install -d -o "$USER" -g "$USER" "$LOGDIR"

is_running() {
    [ -f "$PIDFILE" ] || return 1
    local pid
    pid="$(cat "$PIDFILE" 2>/dev/null)"
    [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null
}

start() {
    echo -n "Starting $NAME: "
    if is_running; then
        echo "already running (pid $(cat "$PIDFILE"))"
        return 0
    fi
    nohup su "$USER" -s /bin/bash -c "exec $DAEMON $DAEMON_ARGS" \
        >> "$LOGFILE" 2>&1 < /dev/null &
    for _ in 1 2 3 4 5 6 7 8 9 10; do
        is_running && break
        sleep 1
    done
    if is_running; then
        touch "$LOCKFILE"
        echo "OK (pid $(cat "$PIDFILE"))"
        return 0
    fi
    echo "FAILED — см. $LOGFILE"
    return 1
}

stop() {
    echo -n "Stopping $NAME: "
    if ! is_running; then
        echo "not running"
        rm -f "$LOCKFILE" "$PIDFILE"
        return 0
    fi
    killproc -p "$PIDFILE" -d 15 "$DAEMON"
    rc=$?
    [ $rc -eq 0 ] && rm -f "$LOCKFILE"
    return $rc
}

case "$1" in
    start)   start ;;
    stop)    stop ;;
    restart) stop; sleep 2; start ;;
    status)
        if is_running; then
            echo "$NAME is running (pid $(cat "$PIDFILE"))"
            exit 0
        fi
        echo "$NAME is not running"
        exit 3
        ;;
    *) echo "Usage: $0 {start|stop|restart|status}"; exit 2 ;;
esac
exit $?

Регистрация скриптов и автозапуск

chmod 755 /etc/init.d/protoobp-agent /etc/init.d/protoobp-agent-trace
chkconfig --add protoobp-agent
chkconfig --add protoobp-agent-trace
chkconfig protoobp-agent on
chkconfig protoobp-agent-trace on

Проверить регистрацию:

chkconfig --list protoobp-agent
chkconfig --list protoobp-agent-trace

Команды управления собственными скриптами

ДействиеКоманда
Запуск агентаservice protoobp-agent start
Остановка агентаservice protoobp-agent stop
Перезапуск агентаservice protoobp-agent restart
Статус агентаservice protoobp-agent status
Запуск trace‑агентаservice protoobp-agent-trace start
Остановка trace‑агентаservice protoobp-agent-trace stop
Перезапуск trace‑агентаservice protoobp-agent-trace restart
Статус trace‑агентаservice protoobp-agent-trace status

Логи агента — в /var/log/protoobp/agent.log, trace-agent.log. Stdout/stderr самих init‑скриптов пишутся в /var/log/protoobp/<service>-init.log и полезны при диагностике падения процесса сразу после запуска.

Обновление со старой версии на системах без systemd

При обновлении с 7.40.2 на 7.80.2 на системе без systemd учитывайте следующее.

1. Собственные init-скрипты нужно поправить. В 7.80.2 у trace-агента переименован флаг PID-файла: --pid больше не принимается (Error: unknown flag: --pid), используется --pidfile. Если вы разворачивали скрипт по инструкции для 7.40.2, замените аргумент:

sed -i 's/--pid /--pidfile /' /etc/init.d/protoobp-agent-trace
service protoobp-agent-trace restart

Аргументы основного агента (run -p <pidfile>) и пути к бинарным файлам (/opt/protoobp-agent/bin/agent/agent, /opt/protoobp-agent/embedded/bin/trace-agent) не изменились.

2. На DEB собственные скрипты будут перезаписаны. Начиная с 7.80.2 DEB-пакет сам ставит /etc/init.d/protoobp-agent и скрипты остальных компонентов. Если вы ранее положили туда свои версии, пакет их заменит. Это штатная ситуация: после обновления пользуйтесь скриптами из пакета, собственные больше не нужны. Проверить, чей скрипт сейчас установлен:

dpkg -S /etc/init.d/protoobp-agent

После обновления перезапустите агента и убедитесь, что версия сменилась:

service protoobp-agent restart
protoobp-agent version

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
    
    $headers = @{
         "PRIVATE-TOKEN" = "<YOUR-TOKEN>"
    }
    try {
       Write-Host "Requesting file..."
       Invoke-WebRequest `
           -Uri "https://git.proto.group/api/v4/projects/125/packages/generic/protoobp-agent/7.40.2/protoobp-agent-7.40.2-x64.msi" `
           -Headers $headers `
           -OutFile "protoobp-agent-7.40.2-x64.msi" `
           -Verbose `
           -ErrorAction Stop
         Write-Host "Download completed."
    }
    catch {
       Write-Host "HTTP download failed: $($_.Exception.Message)"
    }
    
  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>       # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
    apm_config:
      apm_non_local_traffic: true   
      apm_pobp_url: http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
      enabled: true
      telemetry:
        enabled: false
    process_config:
      process_collection:
        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> \
        -e POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> \
        -e POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false \
        registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.80.2
    

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

    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.80.2
      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>     # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
        - POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false
        - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
    

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

    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
    

Запуск агента в Docker Swarm

В кластере Docker Swarm агент устанавливается как обычный Docker-агент: данные собираются через сокет Docker-демона на каждой ноде кластера. Дополнительных компонентов, аналогичных cluster-агенту в Kubernetes, не требуется.

  1. Подключитесь к Docker репозиторию ProtoOBP на каждой ноде кластера:

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

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

  2. Опишите агента в файле стека (например, protoobp-agent-stack.yaml):

    version: "3.8"
    
    services:
      protoobp-agent:
        image: registry.git.proto.group/protoobp/protoobp-artifacts/protoobp-agent:7.80.2
        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>     # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
          - POBP_APM_POBP_URL=http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
          - POBP_APM_NON_LOCAL_TRAFFIC=true
          - POBP_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED=false
        ports:
          - target: 8126
            published: 8126
            protocol: tcp
            mode: host
          - target: 8125
            published: 8125
            protocol: udp
            mode: host
        deploy:
          mode: global
    
  3. Разверните стек с ноды-менеджера:

    docker stack deploy -c protoobp-agent-stack.yaml protoobp
    

Автообнаружение и теги Swarm

Агент автоматически добавляет к метрикам и логам контейнеров теги на основе стандартных лейблов Docker Swarm:

Лейбл контейнераТег в ProtoOBP
com.docker.swarm.service.nameswarm_service
com.docker.stack.namespaceswarm_namespace

Дополнительно на ноды, входящие в кластер Swarm, добавляется тег хоста docker_swarm_node_role со значением manager или worker.

Конфигурация проверок и дополнительные теги задаются лейблами автообнаружения с префиксом com.protoobp.ad. В файле стека такие лейблы необходимо указывать в секции labels сервиса, а не в секции deploy.labels: лейблы из deploy.labels назначаются объекту сервиса Swarm и в контейнер не попадают, поэтому агент их не увидит.

services:
  my-app:
    image: my-app:1.0.0
    labels:                                  # лейблы контейнера – агент их видит
      com.protoobp.ad.tags: '["team:billing"]'
    deploy:
      labels:                                # лейблы сервиса Swarm – агент их НЕ видит
        com.example.owner: "billing"

Отправка трейсов и метрик приложений

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

services:
  my-app:
    image: my-app:1.0.0
    environment:
      - POBP_AGENT_HOST={{.Node.Hostname}}
      - POBP_TRACE_AGENT_PORT=8126

Имена переменных зависят от используемого трейсера – проверьте их в разделе по инструментации вашего языка (для части трейсеров используется префикс DD_, например DD_AGENT_HOST).

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

Ограничения в Docker Swarm

  • Объекты Docker Swarm (сервисы, стеки, задачи) не инвентаризируются в ресурсной модели платформы – в отличие от объектов Kubernetes. Принадлежность к сервису и стеку доступна только в виде тегов телеметрии swarm_service и swarm_namespace, по которым можно строить дашборды, отчёты и правила алертов.
  • Метрики уровня управления кластером Swarm (заданное и фактическое число реплик, состояние задач, история перепланирования) не собираются.
  • Трафик, проходящий через сеть ingress и внутреннюю балансировку Swarm, учитывается на уровне сетевых интерфейсов контейнера, без разбора логики балансировки.
  • Файл конфигурации агента и дополнительные конфигурации проверок передаются через переменные окружения либо через механизмы Docker configs и secrets.

Kubernetes

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

  • protoobp
  • protoobp-cluster-agent

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

Source NameDestination NameDestination PORT/PROTODescription
поды агента (protoobp и protoobp-cluster-agent)proto backend443/tcpотправка данных (метрики, трейсы, логи) от агента на бэкенда
под агента protoobpпод агента protoobp-cluster-agent5005/tcpподключение агента к cluster-агенту
поды приложенийпод агента protoobp8125/udpотправка метрик от приложения к агенту
поды приложенийпод агента protoobp8126/tcpотправка трейсов от приложения к агенту
IP k8s control planeIP 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>      # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
      pobp_apm_url: http://<адрес_бекенд_сервера_protoobp>  # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат
      logLevel: INFO
      processAgent:
        enabled: false
        processCollection: false
      kubelet:
        tlsVerify: false
    clusterAgent:
      image:
        name: cluster-agent
        tag: 7.80.2
        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.80.2
        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_non_local_traffic: true   
      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

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

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

Логи агента

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

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

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

ПлатформаПуть и имя файла
Linux (DEB)/var/log/apt/term.log, /var/log/dpkg.log
Linux (RPM)вывод команды rpm, /var/log/messages
Windows%TEMP%\MSI*.LOG

Собираемые системные метрики по хостам

МетрикаОписаниеДоступные метки/ лейблы
system_cpu_context_switchesЧисло переключений контекста ядра в секундуhost
system_cpu_guestДоля времени ЦП, отданного гостевым виртуальным машинам, в процентахhost
system_cpu_guest_totalНакопленное время ЦП, отданное гостевым виртуальным машинам, по ядрам, в секундахcore, host
system_cpu_guestnice_totalНакопленное время ЦП, отданное гостевым машинам с пониженным приоритетом, по ядрам, в секундахcore, host
system_cpu_idleДоля времени простоя ЦП, в процентахhost
system_cpu_idle_totalНакопленное время простоя ЦП по ядрам, в секундахcore, host
system_cpu_interruptДоля времени ЦП на обработку прерываний, в процентахhost
system_cpu_iowaitДоля времени, когда ЦП простаивал в ожидании ввода-вывода, в процентахhost
system_cpu_iowait_totalНакопленное время ожидания ввода-вывода по ядрам, в секундахcore, host
system_cpu_irq_totalНакопленное время обработки аппаратных прерываний по ядрам, в секундахcore, host
system_cpu_nice_totalНакопленное время ЦП на процессы с пониженным приоритетом, по ядрам, в секундахcore, host
system_cpu_num_coresЧисло ядер ЦП на хостеhost
system_cpu_softirq_totalНакопленное время обработки отложенных прерываний по ядрам, в секундахcore, host
system_cpu_steal_totalНакопленное время, отнятое гипервизором, по ядрам, в секундахcore, host
system_cpu_stolenДоля времени ЦП, отнятая гипервизором у виртуальной машины (steal), в процентахhost
system_cpu_systemДоля времени ЦП в режиме ядра, в процентахhost
system_cpu_system_totalНакопленное время ЦП в режиме ядра по ядрам, в секундахcore, host
system_cpu_userДоля времени ЦП в пользовательском режиме, в процентахhost
system_cpu_user_totalНакопленное время ЦП в пользовательском режиме по ядрам, в секундахcore, host
system_disk_freeСвободное место в файловой системе, в кБdevice_name, host
system_disk_in_useЗанятая доля файловой системы, от 0 до 1device_name, host
system_disk_read_timeСуммарное время чтения с устройства, в миллисекундах (нарастающий счётчик)device_name, host
system_disk_read_time_pctВремя чтения с устройства в процентах от длительности интервалаdevice_name, host
system_disk_totalОбщий объём файловой системы, в кБdevice_name, host
system_disk_usedЗанятое место в файловой системе, в кБdevice_name, host
system_disk_utilizedЗанятая доля файловой системы, в процентах (то же, что system_disk_in_use, но в процентах)device_name, host
system_disk_write_timeСуммарное время записи на устройство, в миллисекундах (нарастающий счётчик)device_name, host
system_disk_write_time_pctВремя записи на устройство в процентах от длительности интервалаdevice_name, host
system_fs_file_handles_allocatedЧисло файловых дескрипторов, выделенных ядромhost
system_fs_file_handles_allocated_unusedЧисло выделенных, но не занятых файловых дескрипторовhost
system_fs_file_handles_in_useДоля занятых файловых дескрипторов от предела, от 0 до 1host
system_fs_file_handles_maxПредел числа файловых дескрипторов в системе (fs.file-max)host
system_fs_file_handles_usedЧисло занятых файловых дескрипторовhost
system_fs_inodes_freeЧисло свободных inode в файловой системеdevice_name, host
system_fs_inodes_in_useЗанятая доля inode, от 0 до 1device_name, host
system_fs_inodes_totalОбщее число inode в файловой системеdevice_name, host
system_fs_inodes_usedЧисло занятых inodedevice_name, host
system_fs_inodes_utilizedЗанятая доля inode, в процентах (то же, что system_fs_inodes_in_use, но в процентах)device_name, host
system_io_avg_q_szСредняя длина очереди запросов к устройствуdevice_name, host
system_io_avg_rq_szСредний размер запроса к устройству, в секторахdevice_name, host
system_io_awaitСреднее время обслуживания запроса вместе с ожиданием в очереди, в миллисекундахdevice_name, host
system_io_block_inЧисло блоков, прочитанных с блочных устройств, в секундуhost
system_io_block_outЧисло блоков, записанных на блочные устройства, в секундуhost
system_io_r_awaitСреднее время обслуживания запроса чтения вместе с ожиданием в очереди, в миллисекундахdevice_name, host
system_io_r_sЧисло операций чтения в секундуdevice_name, host
system_io_rkb_sСкорость чтения с устройства, в КиБ/сdevice_name, host
system_io_rrqm_sЧисло слитых ядром запросов чтения в секундуdevice_name, host
system_io_svctmСреднее время обслуживания запроса устройством, в миллисекундах (устаревший показатель iostat)device_name, host
system_io_utilДоля времени, когда устройство было занято обслуживанием запросов, в процентахdevice_name, host
system_io_w_awaitСреднее время обслуживания запроса записи вместе с ожиданием в очереди, в миллисекундахdevice_name, host
system_io_w_sЧисло операций записи в секундуdevice_name, host
system_io_wkb_sСкорость записи на устройство, в КиБ/сdevice_name, host
system_io_wrqm_sЧисло слитых ядром запросов записи в секундуdevice_name, host
system_load_1Средняя загрузка системы за 1 минуту (load average)host
system_load_15Средняя загрузка системы за 15 минут (load average)host
system_load_5Средняя загрузка системы за 5 минут (load average)host
system_load_norm_1Средняя загрузка за 1 минуту, делённая на число ядер ЦПhost
system_load_norm_15Средняя загрузка за 15 минут, делённая на число ядер ЦПhost
system_load_norm_5Средняя загрузка за 5 минут, делённая на число ядер ЦПhost
system_mem_bufferedПамять в буферах ядра, в МиБhost
system_mem_cachedПамять под страничным кэшем, в МиБhost
system_mem_commit_limitПредел памяти, который ядро готово раздать процессам (CommitLimit), в МиБhost
system_mem_committed_asПамять, обещанная процессам (Committed_AS), в МиБhost
system_mem_freeПолностью свободная память, в МиБhost
system_mem_page_tablesПамять под таблицы страниц, в МиБhost
system_mem_pct_usableДоля памяти, доступной приложениям без обращения к подкачке, от 0 до 1host
system_mem_sharedРазделяемая память, в МиБhost
system_mem_slabПамять под внутренние структуры ядра (slab), в МиБhost
system_mem_slab_reclaimableВозвращаемая часть slab, в МиБhost
system_mem_totalОбщий объём оперативной памяти, в МиБhost
system_mem_usableПамять, доступная приложениям без подкачки (MemAvailable), в МиБhost
system_mem_usedЗанятая память (общая минус свободная), в МиБhost
system_net_bytes_rcvdСкорость приёма на интерфейсе, в байтах в секундуhost
system_net_bytes_sentСкорость передачи на интерфейсе, в байтах в секундуhost
system_net_conntrack_countЧисло соединений в таблице conntrackhost
system_net_conntrack_expect_maxПредел числа ожидаемых соединений в conntrackhost
system_net_conntrack_maxПредел размера таблицы conntrackhost
system_net_conntrack_tcp_max_retransЧисло повторных передач TCP, после которого conntrack укорачивает таймаут соединенияhost
system_net_conntrack_tcp_timeout_max_retransТаймаут соединения после превышения предела повторных передач, в секундахhost
system_net_iface_mtuMTU интерфейса, в байтахhost, iface
system_net_iface_num_rx_queuesЧисло очередей приёма интерфейсаhost, iface
system_net_iface_num_tx_queuesЧисло очередей передачи интерфейсаhost, iface
system_net_iface_tx_queue_lenДлина очереди передачи интерфейса, в пакетахhost, iface
system_net_iface_upНаличие несущей на интерфейсе (carrier): 1 — линк естьhost, iface
system_net_ip_forwarded_datagramsЧисло дейтаграмм, отправленных дальше при маршрутизации, в секундуhost
system_net_ip_fragmentation_createsЧисло созданных IP-фрагментов в секундуhost
system_net_ip_fragmentation_failsЧисло неудачных фрагментаций в секундуhost
system_net_ip_fragmentation_oksЧисло успешно фрагментированных дейтаграмм в секундуhost
system_net_ip_in_addr_errorsЧисло входящих дейтаграмм, отброшенных из-за неверного адреса назначения, в секундуhost
system_net_ip_in_csum_errorsЧисло входящих дейтаграмм с ошибкой контрольной суммы, в секундуhost
system_net_ip_in_deliversЧисло входящих дейтаграмм, доставленных протоколам верхнего уровня, в секундуhost
system_net_ip_in_discardsЧисло входящих дейтаграмм, отброшенных без ошибки (например, из-за нехватки буферов), в секундуhost
system_net_ip_in_header_errorsЧисло входящих дейтаграмм с ошибкой в заголовке, в секундуhost
system_net_ip_in_no_routesЧисло входящих дейтаграмм, отброшенных из-за отсутствия маршрута, в секундуhost
system_net_ip_in_receivesЧисло принятых IP-дейтаграмм в секундуhost
system_net_ip_in_truncated_pktsЧисло входящих дейтаграмм, отброшенных как усечённые, в секундуhost
system_net_ip_in_unknown_protosЧисло входящих дейтаграмм с неизвестным протоколом в секундуhost
system_net_ip_out_discardsЧисло исходящих дейтаграмм, отброшенных без ошибки, в секундуhost
system_net_ip_out_no_routesЧисло исходящих дейтаграмм, отброшенных из-за отсутствия маршрута, в секундуhost
system_net_ip_out_requestsЧисло дейтаграмм, переданных на отправку протоколами верхнего уровня, в секундуhost
system_net_ip_reassembly_failsЧисло неудачных сборок фрагментированных дейтаграмм в секундуhost
system_net_ip_reassembly_oksЧисло успешно собранных дейтаграмм в секундуhost
system_net_ip_reassembly_overlapsЧисло фрагментов с перекрытием при сборке, в секундуhost
system_net_ip_reassembly_requestsЧисло фрагментов, поступивших на сборку, в секундуhost
system_net_ip_reassembly_timeoutsЧисло сборок, прерванных по таймауту, в секундуhost
system_net_ip_reverse_path_filterЧисло пакетов, отброшенных проверкой обратного пути (rp_filter), в секундуhost
system_net_packets_in_countСкорость приёма пакетов на интерфейсе, в пакетах в секундуhost
system_net_packets_in_dropСкорость отбрасывания входящих пакетов, в пакетах в секундуhost
system_net_packets_in_errorСкорость ошибок приёма пакетов, в пакетах в секундуhost
system_net_packets_out_countСкорость передачи пакетов на интерфейсе, в пакетах в секундуhost
system_net_packets_out_dropСкорость отбрасывания исходящих пакетов, в пакетах в секундуhost
system_net_packets_out_errorСкорость ошибок передачи пакетов, в пакетах в секундуhost
system_net_tcp_abort_on_timeoutЧисло соединений, разорванных по таймауту, в секундуhost
system_net_tcp_active_opensЧисло исходящих (активных) открытий TCP-соединений в секундуhost
system_net_tcp_attempt_failsЧисло неудачных попыток установить TCP-соединение, в секундуhost
system_net_tcp_backlog_dropsЧисло пакетов, отброшенных из-за переполнения очереди сокета, в секундуhost
system_net_tcp_current_establishedЧисло TCP-соединений в состоянии ESTABLISHEDhost
system_net_tcp_established_resetsЧисло сброшенных установленных соединений в секундуhost
system_net_tcp_failed_retransmitsЧисло неудавшихся повторных передач в секундуhost
system_net_tcp_from_zero_windowЧисло выходов соединения из состояния нулевого окна, в секундуhost
system_net_tcp_in_csum_errorsЧисло входящих сегментов с ошибкой контрольной суммы, в секундуhost
system_net_tcp_in_errorsЧисло входящих сегментов с ошибками, в секундуhost
system_net_tcp_in_segsЧисло принятых TCP-сегментов в секундуhost
system_net_tcp_listen_dropsЧисло соединений, отброшенных на слушающем сокете, в секундуhost
system_net_tcp_listen_overflowsЧисло соединений, отброшенных из-за переполнения очереди подключений, в секундуhost
system_net_tcp_out_resetsЧисло отправленных сегментов с флагом RST в секундуhost
system_net_tcp_out_segsЧисло отправленных TCP-сегментов в секундуhost
system_net_tcp_passive_opensЧисло входящих (пассивных) открытий TCP-соединений в секундуhost
system_net_tcp_paws_connection_dropsЧисло соединений, отброшенных проверкой PAWS при установке, в секундуhost
system_net_tcp_paws_established_dropsЧисло пакетов установленных соединений, отброшенных проверкой PAWS, в секундуhost
system_net_tcp_prune_calledЧисло очисток буфера приёма из-за нехватки памяти, в секундуhost
system_net_tcp_prune_ofo_calledЧисло очисток очереди пакетов, пришедших не по порядку, в секундуhost
system_net_tcp_prune_rcv_dropsЧисло пакетов, отброшенных при очистке буфера приёма, в секундуhost
system_net_tcp_retrans_segsЧисло повторно переданных TCP-сегментов в секундуhost
system_net_tcp_syn_cookies_failedЧисло неверных SYN-cookie в секундуhost
system_net_tcp_syn_cookies_recvЧисло принятых SYN-cookie в секундуhost
system_net_tcp_syn_cookies_sentЧисло отправленных SYN-cookie в секундуhost
system_net_tcp_syn_retransЧисло повторных передач SYN-сегментов в секундуhost
system_net_tcp_to_zero_windowЧисло переходов соединения в состояние нулевого окна, в секундуhost
system_net_tcp_tw_reusedЧисло соединений, переиспользованных из состояния TIME_WAIT, в секундуhost
system_net_udp_in_csum_errorsЧисло входящих дейтаграмм UDP с ошибкой контрольной суммы, в секундуhost
system_net_udp_in_datagramsЧисло принятых дейтаграмм UDP в секундуhost
system_net_udp_in_errorsЧисло входящих дейтаграмм UDP с ошибками, в секундуhost
system_net_udp_no_portsЧисло дейтаграмм UDP, пришедших на закрытый порт, в секундуhost
system_net_udp_out_datagramsЧисло отправленных дейтаграмм UDP в секундуhost
system_net_udp_rcv_buf_errorsЧисло дейтаграмм UDP, отброшенных из-за переполнения буфера приёма, в секундуhost
system_net_udp_snd_buf_errorsЧисло дейтаграмм UDP, отброшенных из-за переполнения буфера отправки, в секундуhost
system_swap_cachedОбъём подкачки, продублированный в оперативной памяти (SwapCached), в МиБhost
system_swap_freeСвободный объём подкачки, в МиБhost
system_swap_pct_freeДоля свободной подкачки, от 0 до 1host
system_swap_swap_inСкорость чтения из подкачки, в МиБ/сhost
system_swap_swap_outСкорость записи в подкачку, в МиБ/сhost
system_swap_totalОбщий объём подкачки, в МиБhost
system_swap_usedЗанятый объём подкачки, в МиБhost
system_uptimeВремя работы хоста с момента загрузки, в секундахhost

Собираемые контейнерные метрики

МетрикаОписаниеДоступные метки / лейблы
container_cpu_limitПредел ЦП для контейнера, в наноядрах (1 000 000 000 — одно ядро)container_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_partial_stallВремя, на которое выполнение в контейнере тормозило из-за нехватки ЦП (PSI some), в наносекундах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_systemПотребление ЦП в режиме ядра, в наноядрахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_throttledВремя, на которое контейнер притормозили по квоте ЦП, в наносекундах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_throttled_periodsЧисло периодов, в которых сработала квота ЦП, в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_usageСуммарное потребление ЦП контейнером, в наноядрахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_cpu_userПотребление ЦП в пользовательском режиме, в наноядрахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_io_partial_stallВремя, на которое выполнение в контейнере тормозило из-за ожидания ввода-вывода (PSI some), в наносекундах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_io_readСкорость чтения с блочных устройств, в байтах в секундуcontainer_id, container_name, device_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_io_read_operationsЧисло операций чтения с блочных устройств в секундуcontainer_id, container_name, device_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_io_writeСкорость записи на блочные устройства, в байтах в секундуcontainer_id, container_name, device_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_io_write_operationsЧисло операций записи на блочные устройства в секундуcontainer_id, container_name, device_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_cacheПамять контейнера под страничным кэшем, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_kernelПамять, занятая структурами ядра для контейнера, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_limitПредел памяти контейнера, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_major_page_faultsЧисло больших промахов страниц (с обращением к диску), нарастающий счётчикcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_oom_eventsЧисло срабатываний OOM-killer в контейнереcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_page_faultsЧисло промахов страниц памяти, нарастающий счётчикcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_partial_stallВремя, на которое выполнение в контейнере тормозило из-за нехватки памяти (PSI some), в наносекундах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_rssРезидентная память контейнера (RSS), в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_soft_limitМягкий предел памяти контейнера, в байтахcontainer_id, container_name, docker_image, git_commit_sha, host, image_name, image_tag, runtime, service_id_container, service_id_host, short_image
container_memory_swapОбъём подкачки, занятый контейнером, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_usageЗанятая память контейнера, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_usage_peakПиковая занятая память контейнера за время его жизни, в байтахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_memory_working_setРабочий набор памяти контейнера, в байтах — по нему принимается решение об OOMcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_net_rcvdСкорость приёма по сети, в байтах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, interface, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_net_rcvd_packetsСкорость приёма пакетов, в пакетах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, interface, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_net_sentСкорость передачи по сети, в байтах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, interface, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_net_sent_packetsСкорость передачи пакетов, в пакетах в секундуcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, interface, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_pid_open_filesЧисло открытых файловых дескрипторов в контейнереcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_pid_thread_countЧисло потоков в контейнереcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image
container_pid_thread_limitПредел числа потоков для контейнераcontainer_id, container_name, docker_image, env, git_commit_sha, host, image_name, image_tag, runtime, service, service_id_container, service_id_host, short_image
container_uptimeВремя работы контейнера с момента запуска, в секундахcontainer_id, container_name, display_container_name, docker_image, env, git_commit_sha, host, image_id, image_name, image_tag, kube_app_component, kube_app_instance, kube_app_managed_by, kube_app_name, kube_container_name, kube_daemon_set, kube_deployment, kube_namespace, kube_ownerref_kind, kube_ownerref_name, kube_priority_class, kube_qos, kube_replica_set, kube_service, kube_stateful_set, persistentvolumeclaim, pod_name, pod_phase, runtime, service, service_id_container, service_id_host, short_image