Имеются критические ошибки в логе worker

Skip to end of metadata
Go to start of metadata

Ошибки обработчика абонентов. Почему она возникла?

Обработчик абонентов является ключевым процессом продукта Carbon Billing 5 - именно он начисляется абонентскую плату, создаёт задания для демона отправки событий на оборудование, выполняет запланированные задачи и прочее.
Ошибки обработчика могут быть трех типов:

  • WARNING - не критичная ошибка
  • ERROR - ошибка средней критичности, к ним как правило относятся некорректные расчеты в ряде случаев, вызванные в основном некорректными настройками, которые можно исправить без подключения техподдержки
  • CRITICAL - критичные ошибки, требующие анализа службой техподдержки и/или отделом разработки
    Вне зависимости от критичности ошибки, они требуют действий администратора или техподдержки для устранения.

ERROR - Ошибка обработки трафика

В логе воркера следующее сообщение:

2018-10-02 13:52:10,514 - worker - common - ERROR - Ошибка обработки трафика

После этой строки описание ошибки с ID абонента:

Exception: У абонента 1377 нет счетчиков трафика для <result set row with STATUS = None, SUBNET = 0, USER_ID = 1423, V_OUT = 2006340, IDS = 327016,322338,316804,311495,305887,299861,292915,285478,277832,269941,262094,255473,249130,242811,236701,231088,225416,219812,213849,331537,336011,340291,344499,348675,352756,356910,361087,366122,371004,376138,381088,385861,390677,395578,401386,406108,410751,415729,421581, T_START = 1538396521, USER_IP = -1408237505, TTYPE = None, V_IN = 5964428, T_END = 1538476510>

Возможные причины и решения

  • В услуге с типом "трафик" (типы услуг описаны в статье "Услуги. Трафик (интернет)") на вкладке "Для разработчиков" не задана "Подсеть". Выберите подсеть из списка и сохраните услугу.
  • В подсети для тарификации не настроены диапазоны сетей, настройте их по статье "Правила и сети"
  • В услуге настроена подсеть, в подсетях настроены диапазоны, но ошибка все равно возникает.
    Причиной тому может быть то, что в коллектор приходит информация по трафику абонента, относящемуся к определенной подсети, при этом услуги для тарификации подсети у абонента нет. Вариантов решения несколько:
    • Настройте отправку netflow на nas только по определенным диапазонам сетей, которые Вы тарифицируете - если это возможно
    • Настройте услуги трафика по каждой подсети и подключите абоненту
    • Удалите все правила тарификации сетей кроме 0.0.0.0/0, чтобы весь трафик учитывался по единственной услуге (не рекомендуется в случае тарификации помегабайтно)

ERROR - Не выполнилось ни одной операции!

В логе воркера следующее сообщение:

2020-10-28 01:41:08,289 - worker - balance_change - ERROR - Не выполнилось ни одной операции!

1. Необходимо убедиться, что никаких дополнительных ошибок по платежам система мониторинга не фиксирует, проверить можно командой server_check
2. Включить уровень DEBUG в настройках службы worker по инструкции
3. Повторно проверить лог и обнаружить события, предшествующие возникновению ошибки, пример представлен ниже:

2021-02-25 10:44:19,607 - worker - balance_change - INFO - Выставление счетов на предоплату
2021-02-25 10:44:19,639 - worker - balance_change - INFO - Выставление обычного счета абоненту Test1
2021-02-25 10:44:19,692 - worker - balance_change - ERROR - Не выполнилось ни одной операции!
2021-02-25 10:44:19,696 - worker - balance_change - INFO - Обработка баланса завершена
2021-02-25 10:44:19,696 - worker - base_worker - INFO - Обработано строк: 2, 0.168s (daemons.balance_change.0)
2021-02-25 10:44:19,697 - worker - worker - INFO - Processed 2 in 0.168s.

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

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

CRITICAL - Ошибка работы обработчика

После сообщения "CRITICAL - Ошибка работы обработчика" идет расширенное описание возникшей проблемы. Такие ошибки как правило являются исключительными ситуациями, требующими подключения отдела разработки. Так же к ним относятся ошибки невозможности работы с базой данных по тем или иным причинам, некоторые примеры описаны ниже.

  • БД биллинга недоступна. Вероятная причина: она перезапускается из-за обнаруженных повисших транзакций.
    ('Error while connecting to database:\n- SQLCODE: -902\n- I/O error for file "/var/db/billing.gdb"\n- Error while trying to open file\n- No such file or directory', -902, 335544344)
  • БД аккаунтинга трафика недоступна. Вероятная причина: она перезапускается из-за обнаруженных повисших транзакций.
    ('Error while connecting to database:\n- SQLCODE: -902\n- I/O error for file "/var/db/buff_traf.gdb"\n- Error while trying to open file\n- No such file or directory', -902, 335544344)
  • Недоступна СУБД. Вероятней всего БД отправлена в перезапуск во время выполнения запроса обработчиком; так же возможно на сервере проводятся какие-либо работы при которых она остановлена вручную, при этом почему-то обработчик абонентов оставили работать
    ('Error while connecting to database:\n- SQLCODE: -902\n- Unable to complete network request to host "169.254.30.52".\n- Failed to establish a connection.\n- Connection refused', -902, 335544721)
  • Проблема так же может возникнуть при перезапуске БД.
    ('Error while connecting to database:\n- SQLCODE: -902\n- cannot start transaction for password database', -902, 335544654)
  • Ошибка при выполнении SQL-запроса обработчика абонентов. Если ошибка возникает постоянно, требуется подключить отдел разработки.
    ('Error while preparing SQL statement:\n- SQLCODE: -902\n- database file appears corrupt (/mnt/db/billing.gdb)\n- wrong page type\n- page 269 is of wrong type (expected 6, found -1)', -902, 335544335, {'params': (True,), 'sql': u'SELECT  "CURRENCY"."ID", "CURRENCY"."UPDATE_SERVER", "CURRENCY"."SHORT_NAME", "CURRENCY"."NAME", "CURRENCY"."PRIMARY_CUR" FROM "CURRENCY" WHERE "CURRENCY"."PRIMARY_CUR" = True'})
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.