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