Troubleshooting

Данное руководство описывает траблшутинг и нормальный flow компоненты smartcpd. Smartcpd осуществляет проверку вызова на наличие “человека” на линии, отсекая тишину, автоответчики и роботов. Получает записи вызова:

  • до соединения
  • до 8 секунд после соединения

Выполняется ряд проверок:

  • проверка времени, затраченного на снятие трубки
  • определение наличия специальных тонов
  • проверка соответствия локальной и “облачной” базами шаблонов dejavu
  • проверка LSTM-классификации ИИ моделью (lstm)
  • проверка на содержание ключевых слов (VOSK)

По результатам классифицирует вызов и сохраняет его запись для дальнейшего анализа в analyzer.

Читает записи из локального тома node_records.

Сохраняет классифицированные записи в локальном томе node_results.

  • Публикует порт tcp:5544 для доступа локального экземпляра amd
  • на этот же порт в overlay сети docker отдает статистические метрики matrics и получает события обновления моделей от models-store
  • также ожидает подключений на порт tcp:22 в overlay сети docker от analyzer по ssh

Просмотр логов контейнеров#

Логирование контейнеров осуществляется на уровне сервисов. Для анализа состояния сервиса и отладки следует использовать команды ниже.

Логи всех экземпляров сервиса#

docker service logs smartcpd_smartcpd

Дополнительные флаги:#

  • -f — непрерывный просмотр (аналог tail -f)
  • --since <время> — ограничение по времени (например, 5m, 1h, 2025-04-11T10:00:00)

Примеры:

docker service logs --since 10m smartcpd_smartcpd
docker service logs -f smartcpd_smartcpd
docker service logs -f --since 5m smartcpd_smartcpd

Логи конкретного контейнера#

  1. Определить ID контейнера:
docker ps | grep smartcpd_smartcpd
  1. Посмотреть логи:
docker logs <container_id>

Вход в контейнер и просмотр логов вручную#

  1. Подключиться по SSH к нужной ноде, где работает сервис.
  2. Найти нужный контейнер:
docker ps | grep smartcpd_smartcpd
  1. Подключиться:
docker exec -it <container_id> sh
  1. Найти лог-файлы внутри (если применимо):
ls /app/logs/

Рекомендации#

  • Использовать docker service logs для анализа поведения сервиса на уровне всей реплики.
  • Использовать docker logs и exec при отладке инстансов на конкретных нодах.

Проверка работы SmartCPD#

docker service logs --since 6h smartcpd_smartcpd

Полный цикл проверок в логах#

Проверка длительности preconnect#

В данной проверке проверяется скорость ответа на вызов, если она менее 4000 мс, вызов помечается как робот.

2025-02-14 11:49:45,359 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Получили длительность preconnect: 5732
2025-02-14 11:49:45,359 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Длительность preconnect больше чем 4000

Проверка длительности preconnect#

В данной проверке проверяется скорость ответа на вызов, если она менее 4000 мс, вызов помечается как робот.

2025-02-14 11:49:45,359 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Получили длительность preconnect: 5732
2025-02-14 11:49:45,359 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Длительность preconnect больше чем 4000

Проверка на специальные сигналы в preconnect#

В данной проверке ищется определенные спец.сигналы в preconnect записи вызова.

2025-02-14 11:49:45,359 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Проверка на сигнал 800 hz включена
2025-02-14 11:49:45,363 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Сигнал 800 hz не обнаружен
2025-02-14 11:49:45,364 | INFO    | [SC38.413.2760542.1744706978.1393793146]: Проверяем файл на SIT-сигнал [914, 1373, 1777]
2025-02-14 11:49:45,366 | INFO    | [SC38.413.2760542.1744706978.1393793146]: SIT-сигнал [914, 1373, 1777] в preconnect не обнаружен

Проверка на совпадение preconnect-записи с известными спектрограммами АО.#

Данная проверка сравниваем спектрограмму preconnect-файла , если hashes_matched_in_input > чем Confidence level, считаем что на записи робот.

2025-02-14 11:49:45,522 | INFO    | [SC38.457.738194.1744706976.1396791494]: Отдаём файл pre_SC38.457.738194.1744706976.1396791494.wav на распознавание в Dejavu
2025-02-14 11:49:45,530 | INFO    | [SC38.457.738194.1744706976.1396791494]: Распознавание завершено: 0:00:00.008286
2025-02-14 11:49:45,531 | INFO    | [SC38.457.738194.1744706976.1396791494]:
    Время обработки Dejavu:
        Total time: 0.008 ms
        fingerprint_time: 0.005 ms
        query_time: 0.001 ms
        align_time: 0.001 ms
2025-02-14 11:49:45,531 | INFO    | [SC38.457.738194.1744706976.1396791494]:
    Ближайшее совпадение:
        song name: sit_абонент_временно_недоступен_жен
        input_total_hashes: 30
        fingerprinted_hashes_in_db: 614
        hashes_matched_in_input: 12
        input_confidence: 0.4
        fingerprinted_confidence: 0.02
        offset: 43
        offset_seconds: 11.008

2025-02-14 11:49:45,531 | DEBUG   | [SC38.457.738194.1744706976.1396791494]: Confidence level для данной проверки: 20
2025-02-14 11:49:45,531 | INFO    | [SC38.457.738194.1744706976.1396791494]: Совпадения не найдены, считаем что на записи человек

Проверка postconnect-части#

В первую очередь файл анализируется на наличие в нем 425гц-сигналов

2025-02-14 11:49:39,625 | INFO    | Asterisk закончил CPD и прислал запрос: {'phone_number': 'SVD89000991962', 'amd_status': 'NOTSURE', 'confidence_level': '12', 'amd_cause': 'TOOLONG-5003', 'calluuid': 'SC38.446.27230.1744706971.1665682949', 'lstm_control_group_size': '0', 'preconnect_duration': 'INVITE|1744706972.7382;ACK|1744706976.8882', 'content': 'post_SC38.446.27230.1744706971.1665682949', 'client_id': '0022233301'}
2025-02-14 11:49:39,625 | DEBUG   | [unknown]: Проверяем есть ли папка для клиента ./0022233301
2025-02-14 11:49:39,627 | DEBUG   | [SC38.446.27230.1744706971.1665682949]: Получили NOTSURE от астериск, прогоняем файл через SmartCPD
2025-02-14 11:49:39,628 | INFO    | [SC38.446.27230.1744706971.1665682949]: Размер файла: 43884
2025-02-14 11:49:39,632 | INFO    | [SC38.446.27230.1744706971.1665682949]: Файл 'post_SC38.446.27230.1744706971.1665682949.wav' успешно скопирован.
2025-02-14 11:49:39,632 | INFO    | [SC38.446.27230.1744706971.1665682949]: Проверка на сигнал 425 hz в postconnect включена
2025-02-14 11:49:39,635 | INFO    | [SC38.446.27230.1744706971.1665682949]: Сигнал 425 hz в postconnect не обнаружен

Далее происходит сравнение файла с извесстными спектрограммами.

2025-02-14 11:49:42,100 | DEBUG   | [SC38.68.5121197.1744706967.700169291]: Отдаём файл post_SC38.68.5121197.1744706967.700169291.wav на распознавание в Dejavu через локальную базу
2025-02-14 11:49:42,115 | DEBUG   | [SC38.68.5121197.1744706967.700169291]: Распознавание завершено (local db): 0:00:00.015167
2025-02-14 11:49:42,116 | DEBUG   | [SC38.68.5121197.1744706967.700169291]: Отдаём файл post_SC38.68.5121197.1744706967.700169291.wav на распознавание в Dejavu через облачную базу
2025-02-14 11:49:42,151 | DEBUG   | [SC38.68.5121197.1744706967.700169291]: Распознавание завершено (cloud db): 0:00:00.035451
2025-02-14 11:49:42,152 | INFO    | [SC38.68.5121197.1744706967.700169291]: Результат local отсутствует.
2025-02-14 11:49:42,152 | INFO    | [SC38.68.5121197.1744706967.700169291]: Результат cloud:
2025-02-14 11:49:42,152 | INFO    | [SC38.68.5121197.1744706967.700169291]:
    Время обработки Dejavu:
        Total time: 0.034 ms
        fingerprint_time: 0.012 ms
        query_time: 0.017 ms
        align_time: 0.005 ms
2025-02-14 11:49:42,152 | INFO    | [SC38.68.5121197.1744706967.700169291]:
    Ближайшее совпадение:
        song name: autoetalon__17-09-2024__bfbdafd7-9bb6-4bb1-8be7-07ddd39a2e84
        input_total_hashes: 290
        fingerprinted_hashes_in_db: 262
        hashes_matched_in_input: 8
        input_confidence: 0.03
        fingerprinted_confidence: 0.03
        offset: -8
        offset_seconds: -2.048

2025-02-14 11:49:42,152 | INFO    | [SC38.68.5121197.1744706967.700169291]: Сохраняем результат cloud для дальнейшей работы
2025-02-14 11:49:42,152 | DEBUG   | [SC38.68.5121197.1744706967.700169291]: Confidence level для данной проверки: 12
2025-02-14 11:49:42,153 | INFO    | [SC38.68.5121197.1744706967.700169291]: Совпадения по Dejavu не найдены

Далее запись анализируется через LSTM-классификатор:

2025-02-14 11:49:11,441 | INFO    | [SC38.73.2482051.1744706940.895521319]: Используемая LSTM-модель: pcm16_2025-03-16_v1_ep10_state
2025-02-14 11:49:11,453 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: Время выполнения LSTM-проверки: 0.01 секунд
2025-02-14 11:49:11,454 | INFO    | [SC38.73.2482051.1744706940.895521319]: Результат классификации: 0
2025-02-14 11:49:11,454 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: Классификатор считает что на записи человек

Далее запись анализируется на наличие в ней ключевых слов:

2025-02-14 11:49:11,454 | INFO    | [SC38.73.2482051.1744706940.895521319]: Проводим дополнительный анализ через VOSK-модуль
2025-02-14 11:49:11,456 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: VOSK - Создаём KaldiRecognizer
2025-02-14 11:49:11,457 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: VOSK - Время создания KaldiRecognizer: 0.00 секунд
2025-02-14 11:49:11,468 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: VOSK - Время выполнения ffmpeg: 0.01 секунд
2025-02-14 11:49:11,622 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: VOSK - Время на транскрибацию: 0.17 секунд
2025-02-14 11:49:11,622 | INFO    | [SC38.73.2482051.1744706940.895521319]: VOSK - Результат транскрибации:
2025-02-14 11:49:11,623 | INFO    | [SC38.73.2482051.1744706940.895521319]: Распознано через VOSK:
2025-02-14 11:49:11,623 | DEBUG   | [SC38.73.2482051.1744706940.895521319]: Ключевые слова НЕ обнаружены
2025-02-14 11:49:11,624 | INFO    | [SC38.73.2482051.1744706940.895521319]: Совпадения не найдены, считаем что на записи человек

Если ни одна проверка не дала положительный результат - вызов помечается как “Человек”

Возможнные ошибки:#

Ошибка в работе Dejavu#

[2025-02-08 09:00:46 +0300] [32] [ERROR] [04b0aad8-7322-4477-8ab2-69ab1b9466a6]: Ошибка в проверке Dejavu: 

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

Ошибка в работе LSTM#

[2025-02-08 16:51:46 +0300] [32] [ERROR] [aa5b1b40-536d-4531-1dbd-c189e509845e]: Не удалось выполнить LSTM_CLASSIFIER проверку: 

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

Прочие ошибка#

Требуется проверить логи на предмет ERROR которые не описаны ранее - при их наличии следует обратиться к вендору.

Дата формирования

Powered by Altuera