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Логи конкретного контейнера#
- Определить ID контейнера:
docker ps | grep smartcpd_smartcpd- Посмотреть логи:
docker logs <container_id>Вход в контейнер и просмотр логов вручную#
- Подключиться по SSH к нужной ноде, где работает сервис.
- Найти нужный контейнер:
docker ps | grep smartcpd_smartcpd- Подключиться:
docker exec -it <container_id> sh- Найти лог-файлы внутри (если применимо):
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 которые не описаны ранее - при их наличии следует обратиться к вендору.