Asterisk(FreePBX). Как удалить записи разговоров с помощью скрипта.

FreePBX. Как удалить записи разговоров.

 Чистота-залог здоровья. Чистим CDR.

Как удалить записи разговоров. Магнитофонные катушки.

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

Файлы записей звонков хранятся в директории /var/spool/asterisk/monitor/%год%/%месяц%/%день%, а данные Call Detail Records(CDR) в базе asteriskcdrdb.

Этот способ основан на скрипте, который удаляет файлы записей в формате .wav старше определенной даты, удаляет пустые папки, оптимизирует базу asteriskcdrdb и отправляет на почту письмо с отчетом о проделанной работе.

Сразу хочется поблагодарить автора статьи на Хабре, который и разместил скрипт, вошедший, с небольшими доработками, в эту статью.

Итак, к делу. Давайте, я сначала размещу сам скрипт, а потом немного расскажу о нюансах, с которыми столкнулся.

Скрипт для удаления старых записей

Еще:  Powercli. Клонирование и создание ВМ из шаблона.

 В данном скрипте удаляются записи разговоров старше 153 дней и данные из таблиц asteriskcdrdb.cdr и asteriskcdrdb.cel старше 5 месяцев. Разместите его на сервере и создайте задачу в crontab на выполнение с нужной периодичностью.

Теперь о нюансах.

У меня не получилось заставить работать скрипт с пустым паролем пользователя root для mysql, поэтому я использовал учетку пользователя freepbxuser, которая есть во FreePBX и имеет доступ к нужной нам базе asteriskcdrdb. Пароль от этой учетки можно посмотреть в файле /etc/asterisk/res_odbc_additional.conf

Если хочется использовать другого пользователя для доступа к БД, можно создать нового пользователя mysql и предоставить ему права на необходимые базы данных. Для этого короткое описание некоторых команд mysql:

Посмотреть имеющихся пользователей mysql можно командой:

(Перед этим не забываем подключиться к mysql введя: mysql -uroot -p)

Для создания пользователя:

Посмотреть права пользователя:

Предоставить определенные разрешения :

(Разрешения могут быть: CREATE, DROP, DELETE, INSERT, SELECT, UPDATE),

либо предоставить все права на базу:

Ну и, на всякий случай, отобрать права можно так:

а удалить пользователя так:

Ну, вот, наверное, и всё о том как удалить записи разговоров и очистить CDR в FreePBX. Не забудьте добавить этот скрипт в crontab для выполнения его по расписанию.

 

5 комментариев к “Asterisk(FreePBX). Как удалить записи разговоров с помощью скрипта.”

  1. Валерий

    Возможно будет полезен, более универсальный вариант.
    https://github.com/vixfree/clear_asterisk-db
    не на что не претендую, просто сам убил кучу времени для автоматизации процесса и если честно нормальных решений не нашел.

  2. Спасибо. Возможно, и этот вариант будет кому-то полезен.

  3. Здравствуйте!
    Запустил данный скрипт, по концовке выдал сообщения и по факту в папках ничего не удалил:

    asteriskcdrdb.cdr
    note : Table does not support optimize, doing recreate + analyze instead
    status : OK
    asteriskcdrdb.cel
    note : Table does not support optimize, doing recreate + analyze instead
    status : OK

    У меня FreePBX 15.0.17.37 распберипи крутится (RasPBX).
    Помогите с решением, если не сложно.
    Спасибо.

  4. Здравствуйте! Проверьте, отрабатывает ли команда удаления записей без скрипта. Если всё нормально, проверьте правильность команд в скрипте(иногда, при копировании с сайта могут меняться кавычки, например). Также, возможно, нет записей старше того количества дней, которое Вы указали(в скрипте из статьи это 153 дня). В любом случае, начните с выполнения команды find /var/spool/asterisk/monitor/ -name "*.wav*" -type f -mtime +153 и посмотрите, найдутся ли файлы записей.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх