База знаний 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'

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

Триальная лицензия

Триальная лицензия предназначена для знакомства с продуктом и ее можно активировать на одном сервере только один раз. Также нельзя активировать триал после коммерческой версии. Чтобы проверить, была ли ранее активирована лицензия 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