ЭрикссонСофт

+7 (953) 284-42-23

Настоящий документ содержит руководство по эксплуатации программного продукта vPCRF (Virtual Policy and Charging Rules Function), реализующего функции политик и тарификации для сетей мобильной связи. Документ предназначен для администраторов и операторов, осуществляющих повседневное управление, мониторинг и обслуживание программного обеспечения.

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

Целевая аудитория

Администраторы, осуществляющие управление экземплярами vPCRF

Операторы, выполняющие мониторинг и контроль работоспособности

Инженеры, участвующие в настройке и оптимизации параметров работы

Специалисты технической поддержки

Необходимая квалификация

Уверенное владение командной строкой (Windows PowerShell, Linux bash)

Понимание основ сетевых технологий и протоколов (Diameter, HTTP, TCP/UDP/SCTP)

Знание архитектуры сетей мобильной связи (базовый уровень)

Навыки анализа текстовых файлов журналов

Программа собирается с использованием CMake. Запуск производится из каталога сборки.

Под Windows (MinGW):

powershell
.\vpcrf.exe

Под Linux / macOS:

bash
./vpcrf

При запуске программа выполняет следующие действия:

Загружает конфигурационный файл config.json

Инициализирует выбранный бэкенд базы данных (SQLite/PostgreSQL)

Загружает сохранённые сессии из базы данных

Выполняет проверку доступности внешних систем (HSS, OCS)

Запускает встроенный HTTP-сервер для метрик и управления

При наличии конфигурации freeDiameter запускает Diameter-стек

Выводит сообщение о готовности с информацией о режиме работы

Штатная остановка:

Нажмите Ctrl+C (SIGINT) в окне терминала. Программа выполняет:

Установку флага остановки для всех рабочих потоков

Остановку потока очистки сессий

Остановку Diameter runtime (при активном freeDiameter)

Закрытие соединений с внешними системами

Закрытие соединения с базой данных

Завершение процесса

Принудительная остановка (только в крайнем случае):

bash
kill -TERM <PID> # Linux
taskkill /PID <PID> # Windows

Для полного перезапуска остановите программу и запустите заново.

Для перезагрузки конфигурации без остановки используйте динамический reload через REST API или сигнал SIGHUP (Linux):

bash
kill -HUP <PID>

Управление осуществляется через встроенный REST API.

Базовый URL: http://127.0.0.1:9100/api/v1

Для работы рекомендуется использовать утилиту curl или любой HTTP-клиент.

Быстрая проверка доступности:

GET /health — состояние узла

Ответ содержит статусы live/ready/degraded, состояние БД, флаги HSS/OCS/freeDiameter.

GET /ready — готовность принимать трафик

GET /metrics — метрики в формате Prometheus

GET /admin/session/stats — статистика сессий

bash
curl -H "Authorization: Bearer <token>" http://127.0.0.1:9100/admin/session/stats

POST /admin/session/cleanup — принудительная очистка просроченных сессий

bash
curl -X POST -H "Authorization: Bearer <token>" http://127.0.0.1:9100/admin/session/cleanup

POST /admin/session/remove — удаление конкретной сессии

bash
curl -X POST -H "Authorization: Bearer <token>" -H "Content-Type: application/json"
-d '{"session_id": "session123"}' http://127.0.0.1:9100/admin/session/remove

PATCH /admin/runtime/config/update — динамическое обновление параметров

bash
curl -X PATCH -H "Authorization: Bearer <token>" -H "Content-Type: application/json"
-d '{"session_timeout": 3600}' http://127.0.0.1:9100/admin/runtime/config/update

POST /admin/runtime/config/reload — перезагрузка конфигурации из файла

bash
curl -X POST -H "Authorization: Bearer <token>" http://127.0.0.1:9100/admin/runtime/config/reload

Программа использует JSON-файл config.json, расположенный в рабочей директории.

Секция базы данных:

Параметр

Описание

Пример

db_type

Тип БД (sqlite / postgresql)

"postgresql"

db_conn

Строка подключения

"host=localhost user=vpcrf dbname=vpcrf"

Секция Diameter:

Параметр

Описание

Пример

origin_host

Имя узла PCRF

"pcrf.example.com"

origin_realm

Домен PCRF

"example.com"

destination_host

Целевой узел

"pgw.example.com"

destination_realm

Целевой домен

"example.com"

freediameter_conf

Путь к конфигурации freeDiameter

"/etc/freeDiameter.conf"

Секция внешних систем:

Параметр

Описание

Пример

hss_address

Адрес HSS

"hss.example.com"

hss_probe_url

URL проверки HSS

"https://hss.example.com/health"

ocs_address

Адрес OCS

"ocs.example.com"

ocs_probe_url

URL проверки OCS

"https://ocs.example.com/health"

billing_url

URL биллинга

"https://billing.example.com/api/balance"

billing_token

Токен для биллинга

"token123"

external_api_url

URL внешнего API

"https://api.example.com/data"

Секция HTTP и управления:

Параметр

Описание

Пример

http_bind_address

Адрес для HTTP

"127.0.0.1"

http_port

Порт для HTTP

9100

admin_api_token

Токен для admin API

"change-me"

Секция сессий:

Параметр

Описание

Пример

session_timeout

Таймаут сессии (сек)

1800

max_sessions

Максимум сессий

10000

json

{
  "db_type": "postgresql",
  "db_conn": "host=localhost user=vpcrf password=vpcrf dbname=vpcrf",
  "origin_host": "pcrf.example.com",
  "origin_realm": "example.com",
  "destination_host": "pgw.example.com",
  "destination_realm": "example.com",
  "hss_address": "hss.example.com",
  "hss_probe_url": "",
  "ocs_address": "ocs.example.com",
  "billing_url": "https://billing.example.com/api/balance",
  "billing_token": "billingtoken123",
  "http_bind_address": "127.0.0.1",
  "http_port": 9100,
  "admin_api_token": "change-me",
  "session_timeout": 1800,
  "max_sessions": 10000
}

Временное изменение (без перезапуска):

Используйте REST API PATCH /admin/runtime/config/update или сигнал SIGHUP.

Постоянное изменение:

Остановите программу (Ctrl+C)

Отредактируйте файл config.json

Запустите программу заново

Программа ведёт журнал с выводом на консоль. Формат строки журнала:

text
YYYY-MM-DD HH:MM:SS.mmm [LEVEL] [ИСТОЧНИК] Сообщение

Пример строки журнала:

text
2026-04-07 16:40:05.691 [INFO ] [SessionManager] Session added session_id=sess123

Программа предоставляет метрики в формате Prometheus на эндпоинте /metrics (порт 9100).

Пример метрик:

text
vpcrf_requests_total{interface="Gx"} 100
vpcrf_permits_total{interface="Gx"} 90
vpcrf_rejects_total{interface="Gx"} 10
vpcrf_session_limit_percent 75
vpcrf_critical_errors_total 0

Получение метрик:

4.3 Мониторинг использования ресурсов

Процессор и память (Linux):

bash
top -p $(pgrep vpcrf)

Сетевые порты:

bash
netstat -tulpn | grep vpcrf

Ожидаемые порты:

Порт

Протокол

Назначение

9100

TCP

HTTP (метрики, health, admin API)

3868

SCTP

Diameter (при использовании freeDiameter)

При возникновении инцидента соберите следующие данные:

Версия программы (из лога при запуске)

Файл конфигурации config.json (удалив секреты)

Вывод REST API:

/health

/ready

/metrics

/admin/session/stats (если доступен)

Информация об окружении (Linux):

bash
uname -a
cat /etc/os-release

Проверка работоспособности:

bash

Проверка состояния узла

Проверка готовности

Просмотр метрик

Проверка количества сессий:

bash
curl -H "Authorization: Bearer <token>" http://127.0.0.1:9100/admin/session/stats

Анализ ключевых метрик (количество запросов, отказов, ошибок):

bash
curl http://127.0.0.1:9100/metrics | grep -E "requests_total|rejects_total|errors_total"

Проверка состояния внешних интеграций:

Анализ логов на наличие сообщений о недоступности HSS, OCS или биллинга.

Анализ производительности (среднее количество сессий, пиковые нагрузки):

Экспорт метрик за период через внешнюю систему мониторинга (Prometheus).

Резервное копирование конфигурации:

bash
cp config.json config.json.$(date +%Y%m%d)

Проверка актуальности версии: сравните текущую версию с последним релизом.

Программа не отвечает на HTTP запросы:

Проверьте, запущен ли процесс:

bash
ps aux | grep vpcrf # Linux
Get-Process vpcrf # Windows

Проверьте, слушается ли порт 9100:

bash
netstat -an | grep 9100

Принудительно остановите и запустите заново.

Потеря связи с HSS или OCS:

Проверьте состояние через /health:

Проверьте сетевую доступность:

Программа работает в деградированном режиме — восстановите связь.

Некорректное применение политик:

Проверьте журнал на наличие ошибок:

bash
grep -i "error|fail" /var/log/vpcrf.log

Проверьте соединение с базой данных.

Включите отладочное логирование (при необходимости).

Проверка HTTP порта (9100):

Проверка Diameter порта (3868 SCTP):

Для Linux используйте sctp_test или специализированные утилиты.

Prometheus экспорт:

vPCRF предоставляет метрики в формате Prometheus на эндпоинте /metrics (порт 9100).

Интеграция через анализ журнала (syslog):

bash
tail -f /var/log/vpcrf.log | while read line; do
if echo "$line" | grep -q "ERROR|CRITICAL"; then

Отправка alert во внешнюю систему

fi
done

Метод

URL

Описание

GET

/health

Состояние узла (live/ready/degraded)

GET

/ready

Готовность принимать трафик

GET

/metrics

Метрики в формате Prometheus

GET

/zabbix

Метрики для Zabbix

GET

/admin/session/stats

Статистика сессий (требует токен)

POST

/admin/session/cleanup

Очистка просроченных сессий (требует токен)

POST

/admin/session/remove

Удаление сессии (требует токен)

PATCH

/admin/runtime/config/update

Динамическое обновление конфигурации (требует токен)

POST

/admin/runtime/config/reload

Перезагрузка конфигурации из файла (требует токен)

Быстрый скрипт для bash:

bash
BASE="http://127.0.0.1:9100"
TOKEN="your-admin-token"

Статус

curl -s "$BASE/health" | jq .

Метрики

curl -s "$BASE/metrics" | head -20

Статистика сессий

curl -s -H "Authorization: Bearer TOKEN""TOKEN""BASE/admin/session/stats" | jq .

Файл/директория

Назначение

vpcrf (или vpcrf.exe)

Исполняемый файл программы

config.json

Конфигурационный файл

build/

Каталог сборки (CMake)

tools/

Вспомогательные скрипты

deploy/

Манифесты для развёртывания

Отдел продаж

+7 (953) 284-42-23

+7 (953) 284-47-36

sales@ericssonsoftware.ru

Мы в соц.сетях

Информация

Адрес

242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33

Информация

Отдел продаж

+7 (953) 284-42-23

sales@ericssonsoftware.ru

Адрес

242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33