Быстрый переход
Настоящий документ содержит руководство по эксплуатации программного продукта 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-клиент.
Быстрая проверка доступности:
bash
curl http://127.0.0.1:9100/health
GET /health — состояние узла
bash
curl http://127.0.0.1:9100/health
Ответ содержит статусы live/ready/degraded, состояние БД, флаги HSS/OCS/freeDiameter.
GET /ready — готовность принимать трафик
bash
curl http://127.0.0.1:9100/ready
GET /metrics — метрики в формате Prometheus
bash
curl http://127.0.0.1:9100/metrics
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 | |
origin_realm | Домен PCRF | |
destination_host | Целевой узел | |
destination_realm | Целевой домен | |
freediameter_conf | Путь к конфигурации freeDiameter | "/etc/freeDiameter.conf" |
Секция внешних систем:
Параметр | Описание | Пример |
hss_address | Адрес HSS | |
hss_probe_url | URL проверки HSS | |
ocs_address | Адрес OCS | |
ocs_probe_url | URL проверки OCS | |
billing_url | URL биллинга | |
billing_token | Токен для биллинга | "token123" |
external_api_url | URL внешнего API |
Секция 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
Получение метрик:
bash
curl http://127.0.0.1:9100/metrics
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
Проверка состояния узла
Проверка готовности
Просмотр метрик
curl http://127.0.0.1:9100/metrics | head -20
Проверка количества сессий:
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
curl http://127.0.0.1:9100/health
Проверьте сетевую доступность:
bash
ping hss.example.com
Программа работает в деградированном режиме — восстановите связь.
Некорректное применение политик:
Проверьте журнал на наличие ошибок:
bash
grep -i "error|fail" /var/log/vpcrf.log
Проверьте соединение с базой данных.
Включите отладочное логирование (при необходимости).
Проверка HTTP порта (9100):
bash
curl -I http://127.0.0.1:9100/health
Проверка 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/ | Манифесты для развёртывания |
Информация
Адрес
242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33
Быстрый переход
Информация
Отдел продаж
+7 (953) 284-42-23
sales@ericssonsoftware.ru
Адрес
242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33