Перейти к основному содержимому
Версия: v2 (текущая)

Сеть и порты PanDev Metrics on-prem

import Head from "@docusaurus/Head";

On-prem PanDev Metrics открывает на application-хосте два TCP-порта: 8080 для backend приложения и 9090 для Spring Boot actuator. На этой странице — все требования к входящей и исходящей сети, рекомендуемая настройка reverse proxy и варианты TLS.

Кратко

ПараметрЗначение
Публичный входTCP 8080 (или 443 за reverse proxy)
Внутренний входTCP 9090 (actuator), 5432 (PostgreSQL), 6379 (Redis)
ИсходящийHTTPS до подключённых интеграций — минимальный, отключить нельзя
TLSТерминируется на reverse proxy или через самоподписанный сертификат с отключённой клиентской валидацией
Air-gappedНе поддерживается

Входящие порты

PanDev Metrics открывает на application-хосте два TCP-порта. Снаружи должен быть доступен только 8080; 9090 остаётся внутренним.

ПортСервисНазначениеДоступ
8080Backend приложенияREST API для IDE-плагинов и frontendПубличный (обычно за reverse proxy на 443)
9090Spring Boot actuatorHealth, метрики, infoТолько внутренний

Порты базы и кеша — не часть публичной поверхности:

ПортСервисДоступ
5432PostgreSQLВнутренний (только между database-хостом и application-хостом)
6379RedisВнутренний (только в application-хосте)

Порт 8080 — backend приложения

Backend отдаёт REST API для frontend и IDE-плагинов. Должен быть доступен от:

  • Reverse proxy на том же хосте или в той же сети
  • Хостов IDE-плагинов (рабочие станции разработчиков или машины за VPN)

Если порт 8080 закрыт для рабочих станций — данные не теряются. Плагины буферизуют события локально и проигрывают их, как только связь восстанавливается через VPN или корпоративную сеть.

Порт 9090 — actuator

Spring Boot actuator отдаёт операционные эндпоинты для health-check и сбора метрик Prometheus. Оставьте его доступным только из мониторинговой сети — наружу выставлять не нужно.

Часто используемые эндпоинты:

ЭндпоинтНазначение
/actuator/healthLiveness и readiness — возвращает {"status":"UP"}, когда всё хорошо
/actuator/infoСборка и версия
/actuator/metricsМетрики приложения в формате Prometheus

Исходящий egress

On-prem PanDev Metrics требует минимального исходящего HTTPS к подключаемым системам:

  • Ваш Git-провайдер (GitHub, GitLab Self-Managed или Cloud, Bitbucket, Azure DevOps)
  • Ваш таск-трекер (Jira Cloud или Data Center, YouTrack, ClickUp, Yandex Tracker, Azure Boards)
  • Опционально — LDAP / Active Directory (если включена LDAP-интеграция)
warning

Исходящий трафик минимальный, но отключить нельзя. Air-gapped развёртывания не поддерживаются.

Откройте исходящий TCP 443 к хостнеймам интеграций, которые вы подключаете. Если в сети используется HTTP-прокси, задайте HTTPS_PROXY и NO_PROXY в окружении контейнера backend.

Reverse proxy

Терминируйте TLS на reverse proxy перед backend. Поддерживаются Nginx и Traefik — конфигурация стандартная reverse-proxy-форма.

Nginx

/etc/nginx/conf.d/pandev.conf
server {
listen 443 ssl http2;
server_name metrics.example.com;

ssl_certificate /etc/ssl/certs/pandev.crt;
ssl_certificate_key /etc/ssl/private/pandev.key;

client_max_body_size 50m;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 60s;
}
}

Traefik

traefik dynamic config
http:
routers:
pandev:
rule: "Host(`metrics.example.com`)"
entryPoints: [websecure]
tls: {}
service: pandev-backend
services:
pandev-backend:
loadBalancer:
servers:
- url: "http://127.0.0.1:8080"

TLS и reverse proxy

PanDev Metrics работает в любой из трёх TLS-конфигураций ниже. Выберите ту, что соответствует вашей security-политике.

ВариантЧто настраиваетсяКогда применять
Сертификат публичного CAReverse proxy с сертификатом от Let's Encrypt или вашего корпоративного CAПо умолчанию — рекомендуется для любого прод-инстанса, доступного с рабочих станций
Сертификат внутреннего CAReverse proxy с внутренним CA, которому уже доверяет ваш парк машинКорпоративные сети, где машины разработчиков доверяют внутреннему CA
Самоподписанный + отключённая валидация на клиентеBackend отдаётся напрямую с самоподписанным сертификатом, плагины настроены пропускать SSL-валидациюТолько air-gapped тесты или evaluation — не рекомендуется для прода

IDE-плагины PanDev Metrics умеют отключать клиентскую SSL-валидацию для подключения к self-signed-инсталляции. Настройка задаётся в каждом плагине отдельно и описана в гайдах плагинов.

Firewall

Минимальные входящие правила для application-хоста:

terminal (пример firewalld)
firewall-cmd --permanent --add-port=8080/tcp # только если нет reverse proxy на 443
firewall-cmd --permanent --add-port=443/tcp # reverse proxy
firewall-cmd --reload

Минимальные входящие правила для database-хоста:

terminal (пример firewalld)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" \
source address="<APPLICATION_HOST_IP>" port port="5432" protocol="tcp" accept'
firewall-cmd --reload

Ограничьте PostgreSQL приёмом соединений только с IP application-хоста. Порт 5432 наружу не открывайте.

HTTP-прокси

Если application-хост работает за корпоративным HTTP-прокси, настройте его через стандартные env-переменные контейнера backend:

ПеременнаяНазначение
HTTP_PROXYURL прокси для plain HTTP — используется редко
HTTPS_PROXYURL прокси для исходящего HTTPS до Git / таск-трекера
NO_PROXYСписок хостов через запятую, для которых прокси не применяется (Redis, PostgreSQL, внутренние сервисы)

Задайте их в .env рядом с переменными базы и Redis, затем docker compose up -d --force-recreate pandev-metrics.

Ограничения и edge-кейсы

  • Egress отключить нельзя. PanDev Metrics нужен минимальный исходящий HTTPS до интеграций. Offline-режима нет.
  • Actuator должен оставаться внутренним. Порт 9090 не предназначен быть публичным.
  • Между компонентами нет mTLS. Backend, PostgreSQL и Redis общаются внутри доверенной application-сети. mTLS добавляйте на сетевом уровне, если этого требует ваша политика.
  • Поддержка WebSocket зависит от reverse proxy. Длинные соединения, используемые частью UI, требуют proxy_read_timeout выше дефолтных 60 секунд на Nginx.

Связанные материалы

Источники