База знаний BILLmanager

Базовая диагностика

Статья содержит команды для выявления причин некорректной работы платформы, а также команды для перезапуска платформы и некоторых служб для восстановления их работы. Для выполнения команд подключитесь к серверу с платформой по SSH.

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

Общая диагностика

Раздел содержит список команд для первого шага диагностики. Эти команды позволят исключить базовые проблемы и сократить время поиска неполадок.

Версия операционной системы (ОС)

Если ОС сервера с платформой не поддерживается, установка завершится с ошибкой или работа платформы будет некорректной. Чтобы определить версию ОС, выполните команду:

cat /etc/*release

Список поддерживаемых ОС см. в документации BILLmanager:

Дата и время на сервере

Во время периодической синхронизации с сервером лицензий происходит проверка даты и времени. Если на сервере с платформой установлены некорректная дата или время, платформа будет заблокирована или её работа будет некорректной. Чтобы определить текущую дату и время на сервере, выполните команду:

date -R

Занятое пространство диска и оперативная память

Для корректной работы платформы свободное пространство диска и оперативная память должны соответствовать требованиям, указанным в документации BILLmanager:

Также, если свободного пространства или оперативной памяти недостаточно, резервные копии не будут создаваться. Чтобы проверить объём занятого пространства диска и данные о файловой системе, выполните команду:

df -hT

Чтобы проверить информацию об оперативной памяти, выполните команду:

free -h

Inodes

inodes —  это структура, в которой хранятся метаданные файлов. Работа платформы не будет корректной, если на сервере закончились inodes, даже при наличии свободного места на диске. Характерное поведение при нехватке inodes — снижение быстродействия, невозможность создания файлов, некорректный вывод информации в интерфейс платформы. Чтобы проверить число и долю использованных inodes в файловой системе, выполните команду:

df -i

Выявление неполадок в системе Linux

Для выявления неполадок в системе Linux изучите системные логи. Ниже приведены инструменты для поиска неполадок и ошибок в логах сервера.

Кольцевой буфер ядра

Один из способов выявить некорректную работу системы — просмотр журнала ядра с помощью утилиты dmesg. Ядро записывает все события в кольцевой буфер во время загрузки и работы системы. dmesg позволит изучить сообщения ядра, а также выявить проблемы, связанные с оборудованием. Для поиска проблем выполните эту команду:

dmesg | grep -i -E 'error|failed|critical|bug|panic'

Утилита journalctl

Проанализировать логи и выявить неполадки системы можно с помощью утилиты journalctl. Утилита выводит логи системных служб Linux. Для выявления некорректного поведения системы Linux, выполните команду:

journalctl | grep -i -E 'error|failed|critical|bug|panic'

Лицензирование

Проверить версию платформы

Выполните команду:

/usr/local/mgr5/bin/core billmgr -i

Не активируется триальная лицензия

Триальная лицензия предназначена для знакомства с продуктом, поэтому её можно активировать на одном сервере только один раз. Также нельзя активировать триал после коммерческой версии. Если на сервере ранее была установлена другая лицензия BILLmanager, новую триальную лицензию активировать не получится. Чтобы проверить, была ли ранее активирована лицензия BILLmanager на сервере, выполните команду:

cat /usr/local/mgr5/var/licctl.log | grep 'Got' 

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

Если произошла рассинхронизация с сервером лицензий, платформа не запустится. Чтобы проверить информацию о лицензии на сервере, выполните команду:

/usr/local/mgr5/sbin/licctl info billmgr

Если вывод не отобразит номер лицензии, значит лицензия не привязана к серверу. Чтобы активировать лицензию на сервере, выполните команду:

/usr/local/mgr5/sbin/licctl fetch billmgr

Если при попытке активации лицензии вы получили ошибку Failed to get license:

  1. Сгенерируйте новый ключ лицензии в личном кабинете. Перейдите в раздел ТоварыЛицензии → выберите лицензию → кнопка Изменить → кнопка Сгенерировать новый ключ.
  2. Активируйте лицензию командой:

    /usr/local/mgr5/sbin/licctl fetch billmgr KEY
    Пояснения

По умолчанию установлен лимит генерации ключей 1 раз в месяц. Если лимит исчерпан, обратитесь в службу технической поддержки ISPsystem для генерации нового ключа.

Подробную информацию об активации лицензии по ключу см. в статье Активация лицензии по ключу документации BILLmanager.

Если генерация нового ключа не помогла, проверьте лог /usr/local/mgr5/var/licctl.log для диагностики.

Платежи

Если на стороне платёжной системы платёж успешно зачислен, а в BILLmanager статус не обновился, запустите вручную синхронизацию с платёжной системой для обновления статуса платежа. Для этого выполните команду:

/usr/local/mgr5/sbin/mgrctl -m billmgr paymethod.checkpay

Перезапуск платформы

Перезапуск платформы может решить ряд базовых проблем, таких как зависание, некорректное отображение информации в интерфейсе, некорректное поведение обработчиков услуг. Также перезапуск платформы необходим для сохранения настроек платёжных модулей, обработчиков услуг, при изменении уровня логирования и других. Чтобы перезапустить платформу, выполните команду:

/usr/local/mgr5/sbin/mgrctl -m billmgr -R
Работа платформы будет приостановлена на время выполнения перезапуска.

Логирование

В этом разделе приведен пример диагностики с главным логом платформы billmgr.log. Для диагностики также могут потребоваться другие логи. Например, при проблемах с оплатой информация запишется в логи платёжного модуля, а в случае неполадок при перепродаже услуг — в лог взаимодействия продающего биллинга с перепродающим. Список всех журналов расположен по пути /usr/local/mgr5/var/. Названия логов см. в соответствующем разделе документации BILLmanager 6. Например, логи для диагностики проблем с оплатой Paymaster перечислены в статье PayMaster

В главный лог платформы billmgr.log записываются все основные события и ошибки. Чтобы проверить наличие ошибок в основном логе, выполните команду:

grep 'ERROR' /usr/local/mgr5/var/billmgr.log

Чтобы проверить логи в настоящий момент времени, выполните команду:

tail -f /usr/local/mgr5/var/billmgr.log

С помощью команды для отображения логов в настоящий момент можно провести диагностику любой проблемы. Для этого:

  1. Откройте раздел в интерфейсе BILLmanager, где происходит некорректное поведение.
  2. Подключитесь к серверу с платформой по SSH.
  3. Откройте лог в реальном времени командой:

    tail -f /usr/local/mgr5/var/billmgr.log
  4. Воспроизведите некорректное поведение в интерфейсе.

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

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

Поток и увеличенный уровень логирования

Выявить больше информации об ошибке можно, увеличив уровень логирования и проверив поток лога с ошибкой.

Инструкция ниже включает в себя перезапуск платформы.

Чтобы выявить дополнительную информацию:

  1. Увеличьте уровень логирования для нужного журнала. Для этого добавьте строку "name_log.* 9" в файл /usr/local/mgr5/etc/debug.conf.

    Пояснения
  2. Перезапустите платформу:

    /usr/local/mgr5/sbin/mgrctl -m billmgr -R
  3. Определите поток с ошибкой. Для этого откройте нужный лог с поиском по ошибке:

    grep 'ERROR' /usr/local/mgr5/var/name_log.log
    Пояснения

    Вывод отобразит поток ошибки. Пример вывода:

    Mar  6 18:33:01 [483562:72787] libmgr ERROR Error: Type: 'missed' Object: 'function' Value: 'payment_cash_register.check'
    Mar  6 18:36:01 [483562:72797] libmgr ERROR Error: Type: 'missed' Object: 'function' Value: 'payment_cash_register.send'
    Пояснения
  4. Проверьте лог-файл по найденному потоку:

    grep '483562:72787' /usr/local/mgr5/var/name.log.log

    Эта команда отобразит подробную информацию об ошибке.

  5. После диагностики верните уровень логирования к состоянию по умолчанию, чтобы детализированные логи не занимали свободное пространство. Для этого удалите или закомментируйте добавленную строку "name_log.* 9" в файле /usr/local/mgr5/etc/debug.conf.

    Пояснения

Поиск информации в базе данных

Раздел содержит базовые запросы к базе данных (БД). Для составления других запросов, используйте данные о структуре БД BILLmanager. Подробнее о структуре БД см. в статье Структура базы данных документации BILLmanager 6.

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

Создайте резервную копию платформы перед выполнением любых действий с БД. 

Чтобы выполнить запросы к БД, подключитесь к ней командой:

mysql billmgr

Реферальная программа

Если не активируется промокод, запрос к БД поможет выявить информацию о привязке клиента к реферальной программе. Для отображения информации по реферальной программе клиента, выполните запрос:

Select * from account2project where account='ID_client'\G; 
Пояснения

Запрос отобразит информацию о:

  • партнёрской программе, которую использует клиент у провайдера;
  • партнёре, по ссылке которого привлечен клиент;
  • реферальной программе, по которой привлечен клиент.

Обработчики услуг

Если для услуги назначен некорректный обработчик или не назначен совсем, возникнут проблемы с активацией, удалением услуги. Также может произойти "сброс" обработчика при переносе услуги внутри перепродающего биллинга. Чтобы проверить обработчик услуги, выполните запрос:

select processingmodule from item where id =<item_id>;
Пояснения

Данные лицензии

Запрос для сбора данных о лицензии позволит отобразить все параметры лицензии, включая название, удалённый идентификатор и ключ активации. Чтобы отобразить параметры лицензии, выполните запрос:

select * from itemparam where item=<item_id>\G
Пояснения

В полученном выводе отобразятся данные:

  • intname — название параметра. Например, lickey — название параметра для ключа лицензии;
  • value — значение параметра. Например, для lickey отобразится значение ключа, а для import_remote_id — значение удалённого идентификатора.

Провайдер

Запрос к БД позволит получить текущий статус провайдера, привязку к нему тарифного плана и другие параметры.

Запросы актуальны для редакции BILLmanager Hosting&Cloud.

Чтобы проверить активных провайдеров, выполните запрос:

select id, active from project\G;

Чтобы узнать, к какому провайдеру привязан тарифный план услуги, выполните запрос:

select project from pricelist where id in (select pricelist from item where id='<item_id>');

Пояснения

Фильтры

С помощью запросов к БД можно применить фильтры, которые отсутствуют в интерфейсе платформы. Например, вывести список клиентов, у которых активирован обещанный платёж или список плательщиков с их типом генерации актов.

Чтобы вывести список услуг, для которых активирован обещанный платёж, выполните запрос:

SELECT * FROM promisepayment;

Чтобы отсортировать список плательщиков по типу генерации актов, выполните запрос:

SELECT * FROM profile where invoicetype=<invoice_type_value>\G;
Пояснения

Чтобы вывести список клиентов с активным кредитным лимитом, выполните запрос:

select account from subaccount where creditlimit>0.0000