Статья содержит команды для выявления причин некорректной работы платформы, а также команды для перезапуска платформы и некоторых служб для восстановления их работы. Для выполнения команд подключитесь к серверу с платформой по SSH.
Общая диагностика
Раздел содержит список команд для первого шага диагностики. Эти команды позволят исключить базовые проблемы и сократить время поиска неполадок.
Версия операционной системы (ОС)
Если ОС сервера с платформой не поддерживается, установка завершится с ошибкой или работа платформы будет некорректной. Чтобы определить версию ОС, выполните команду:
cat /etc/*release
Список поддерживаемых ОС см. в документации BILLmanager:
- для BILLmanager Hosting&Cloud — в статье Требования к серверу;
- для BILLmanager Advanced, Startup — в статье Требования к серверу.
Дата и время на сервере
Во время периодической синхронизации с сервером лицензий происходит проверка даты и времени. Если на сервере с платформой установлены некорректная дата или время, платформа будет заблокирована или её работа будет некорректной. Чтобы определить текущую дату и время на сервере, выполните команду:
date -R
Занятое пространство диска и оперативная память
Для корректной работы платформы свободное пространство диска и оперативная память должны соответствовать требованиям, указанным в документации BILLmanager:
- для BILLmanager Hosting&Cloud — в статье Требования к серверу;
- для BILLmanager Advanced, Startup — в статье Требования к серверу.
Также, если свободного пространства или оперативной памяти недостаточно, резервные копии не будут создаваться. Чтобы проверить объём занятого пространства диска и данные о файловой системе, выполните команду:
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:
- Сгенерируйте новый ключ лицензии в личном кабинете. Перейдите в раздел Товары → Лицензии → выберите лицензию → кнопка Изменить → кнопка Сгенерировать новый ключ.
-
Активируйте лицензию командой:
/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
С помощью команды для отображения логов в настоящий момент можно провести диагностику любой проблемы. Для этого:
- Откройте раздел в интерфейсе BILLmanager, где происходит некорректное поведение.
- Подключитесь к серверу с платформой по SSH.
-
Откройте лог в реальном времени командой:
tail -f /usr/local/mgr5/var/billmgr.log
- Воспроизведите некорректное поведение в интерфейсе.
В результате этих действий в логе отобразится ошибка и запрос, который следует перед ней. Это поможет выявить причину некорректного поведения.
Поток и увеличенный уровень логирования
Выявить больше информации об ошибке можно, увеличив уровень логирования и проверив поток лога с ошибкой.
Чтобы выявить дополнительную информацию:
-
Увеличьте уровень логирования для нужного журнала. Для этого добавьте строку "name_log.* 9" в файл /usr/local/mgr5/etc/debug.conf.
Пояснения -
Перезапустите платформу:
/usr/local/mgr5/sbin/mgrctl -m billmgr -R
-
Определите поток с ошибкой. Для этого откройте нужный лог с поиском по ошибке:
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'
Пояснения -
Проверьте лог-файл по найденному потоку:
grep '483562:72787' /usr/local/mgr5/var/name.log.log
Эта команда отобразит подробную информацию об ошибке.
-
После диагностики верните уровень логирования к состоянию по умолчанию, чтобы детализированные логи не занимали свободное пространство. Для этого удалите или закомментируйте добавленную строку "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 — значение удалённого идентификатора.
Провайдер
Запрос к БД позволит получить текущий статус провайдера, привязку к нему тарифного плана и другие параметры.
Чтобы проверить активных провайдеров, выполните запрос:
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