asterisk cdr mysql настройка

Asterisk CDR — запись в базу данных MySQL через cdr_mysql

Причины записи CDR в базу данных MySQL

В первую очередь возникает вопрос — зачем вообще нужно записывать CDR в базу данных MySQL сервера? Дело в том, что в отличие от многих других баз, asterisk может делать запись в mysql собственными средствами, без дополнительных программ. Кроме того, установка и настройка баз MySQL является простой операцией, а сама распространенность баз данных MySQL дает возможность рекомендовать этот формат баз данных для хранения статистики звонков — CDR.

Этапы настройки записи CDR в MySQL

Настройка сохранения истории звонков asterisk (CDR) в базу данных формата MySQL состоит из двух частей, каждая из которых состоит из нескольких этапов. Части могут настраиваться независимо и параллельно (до определенного момента).

Часть 1. Установите и настройте MySQL сервер

  1. Установите MySQL сервер
  2. Создайте базу данных для asterisk
  3. Создайте таблицу для asterisk

Часть 2 — настройка asterisk

  1. Установите компоненты для работы с MySQL: MySQL client и библиотеку для поддержки MySQL
  2. Пересоберите asterisk для работы с MySQL — cdr_mysql
  3. К этому моменту должна быть выполнена часть 1.
  4. Проверьте подключение к MySQL Server
  5. Настройте asterisk для работы с MySQL

И отдельным пунктом вынесены возможные ошибки, возникающие в процессе настройки MySQL / asterisk.

Установка и настройка MySQL

Установка MySQL Server

Для установки сервера MySQL в Debian достаточно набрать команду:
apt-get install mysql-server

В операционной системе RHEL / CentOS также все довольно просто:
yum install mysql-server

При этом будет установлена текущая (актуальная) версия mysql сервера (на момент написания статьи это версия 5.5).
В процессе установки будет необходимо задать пароль пользователя root для mysql. Не забудьте этот пароль, он Вам еще понадобится!
Для установки и первоначальной настройки MySQL сервера Вы можете воспользоваться статьей «Установка и первоначальная настройка MySQL в linux».

Читайте также:  установка windows award bios setup utility настройка

Запуск сервиса MySQL

Для запуска сервиса в CentOS выполните команду:
service mysqld start

Подключение к серверу SQL для выполнения запросов

Для подключения к MySQL серверу (чтобы можно было выполнять команды SQL) Вы можете воспользоваться любыми своими имеющимися инструментами, например PHPMyAdmin. Либо же можете воспользоваться встроенными средствами командной строки из пакета MySQL — mysql:
mysql -u имя-пользователя-SQL -p
например:
mysql -u root -p
после нажатия Enter будет запрошен пароль для пользователя. После ввода пароля и нажатия Enter, будет выведено приглашение MySQL:
mysql>_

Теперь Вы можете выполнять запросы SQL.

Создание базы данных (и пользователя этой базы данных) для asterisk cdr

Для создания базы данных (назовем ее asteriskcdr, Вы можете выбрать любое другое имя) выполните команду SQL:

Если Вы хотите создать отдельного пользователя (например, asterisk_user) для работы с этой базой данных, при этом выставить ему пароль например, asterisk_password, выполните команду SQL:

Теперь Вам необходимо назначить этому вновь созданному пользователю asterisk_user права для доступа к базе данных (например, права только для добавления / обновления записей и для просмотра базы). Для этого выполните команду SQL:

Если же Вы хотите дать этому пользователю полные права на базу данных, вместо предыдущей команды выполните эту команду SQL:

Если Вы хотите, чтобы пользователь MySQL мог подключаться удаленно к серверу MySQL (с другого компьютера), то (при создании, а также предоставлении ему прав доступа к БД) его имя следует указывать в формате:
имя-пользователя@хост
например:
asterisk_user@192.168.1.1

Если же Вы не знаете, с каких IP будет подключаться пользователь, либо Вам необходимо, чтобы он подключался с любых IP адресов, укажите имя пользователя в следующем формате:
имя-пользователя@’%’
например:
asterisk_user@’%’

В этом случае команда для предоставления полных прав [на работу с MySQL] пользователю asterisk_user, который может подключаться к MySQL с любых IP адресов, будет выглядеть так:

Создание таблицы для asterisk

Для создания таблицы asterisk CDR подключитесь к созданной базе данных и выполните следующий запрос:

Обратите внимание: в этой таблице (в отличие от таблиц asterisk cdr, представленных в интернете) присутствуют поля: start, answer, end. Эти поля присутствуют в самом CDR, имеют место быть в таблице CDR для Microsoft SQL, но почему-то отсутствуют в большинстве рекомендаций по созданию таблиц CDR для баз MySQL.
Дело в том, что (как указано на сайте voip-info.org), любые стандартные столбцы CDR в базе данных MySQL могут быть исключены простым удалением из таблицы (или переименованием столбца). При этом никаких сообщений об ошибках не возникает — просто соответствующая информация не пишется в базу данных (Standard columns may also be excluded now, simply by dropping the column name from the table, renaming the column, or aliasing the cdrname from a nonexistent variable (e.g. foo => amaflags)).
Поэтому в случае, если в Вашей таблице нет столбцов answer и end (вместо start можно использовать calldate), то рекомендую их туда добавить (иначе время ответа на звонок придется вычислять путем сложения и вычитания нескольких других полей, что далеко не всегда удобно).

Читайте также:  яндекс браузер настройки ssl

Обратите также внимание, что в новых версиях asterisk [не уверен, но предполагаю, что речь идет об asterisk 10-й, 11-й версии и новее] столбец calldate является копией столбца start, в отличие от старых версий asterisk, где столбец calldate является копией столбца end.

Настройка asterisk

Установка компонентов для работы asterisk с MySQL: mysql client и библиотеки mysql для сборки asterisk

Для установки клиента mysql (неважно, установлен ли asterisk на том же компьютере, что и сервер MySQL или нет) запустите в debian следующую команду:
apt-get install mysql-client

В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
yum install mysql

Теперь необходимо установить библиотеки mysql. Они дадут возможность собирать программы, предназначенные для работы с MySQL.
Для debian это будет команда:
apt-get install libmysqlclient-dev

Для RHEL / CentOS выполните:
yum install mysql-devel

Повторная сборка asterisk для работы с MySQL

Перейдите в папку с исходными кодами (откуда устанавливался asterisk) и запустите команду конфирурирования:
cd /usr/src/asterisk-11.4.0/
./configure
make menuselect

В открывшемся меню включите использование следующих компонентов:

  • Add-ons => res_config_mysql
  • Add-ons => cdr_mysql

После выхода (с сохранением) из меню выбора компонентов выполните сборку и повторную установку asterisk:
make
make install

Команду make samples не делать ни в коем случае, это сотрет имеющиеся конфигурационные файлы! Команду make config также выполнять не нужно, поскольку [предполагается, что] asterisk уже установлен и настроен в Вашей системе.

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

Проверка связи с MySQL Server

Давайте проверим работу с сервером MySQL, подключившись к нему с помощью mysql клиента.
Для этого из командной строки запустите:
mysql —host= имя-сервера-MySQL -u имя-пользователя-БД -p
например:
mysql —host=192.168.1.1 -u asterisk_user -p
при этом будет запрошен пароль пользователя asterisk_user, укажите его.

При успешном подключении появится приглашение:
mysql>
теперь можно ввести команды mysql, например:
exit — для выхода

Настройка asterisk для работы с MySQL Server

Для настройки asterisk откройте файл /etc/asterisk/cdr_mysql.conf и впишите туда подобные строки (здесь указан лишь пример):

Вы можете раскомментировать нужные Вам строки или вписать новые.

После выполнения вышеуказанных действий запустите asterisk и попробуйте подключить модуль cdr_mysql.so. Для этого запустите подключение к asterisk:
asterisk -rvvv
И из командной строки asterisk (asterisk CLI) выполните следующую команду:
module load cdr_mysql.so
При возникновении ошибок решение см. в конце статьи. В случае, если Вы исправили ошибку, и Вам необходимо выгрузить и повторно загрузить модуль, выполните команды:
module unload cdr_mysql.so
module load cdr_mysql.so
В случае успеха asterisk может выдать несколько уведомлений и загрузит модуль. Убедиться в том, что модуль загружен, можно выполнив команду:
module show like cdr_mysql.so
После этого перезагрузите конфигурацию CDR и убедитесь, что звонки фиксируются в базе данных. Для перезагрузки конфигурации CDR выполните команды:
reload cdr
reload cdr_mysql.so
или
reload
На этом настройка asterisk закончена.

Читайте также:  настройка достигнет своего предела

Возможные ошибки, возникающие в процессе настройки MySQL / asterisk

Error 1130 (HY000): Host ‘. ‘ is not allowed to connect to this MySQL server

Если Вы подключаетесь к серверу MySQL удаленно (с другого компьютера), то может возникать подобное сообщение. Данное сообщение означает, что сервер MySQL не настроен на возможность подключения к нему извне (точнее, что пользователю, под которым Вы пытаетесь подключиться, не разрешено подключение извне). Вам необходимо создать нового пользователя вида user@host, например asterisk_user@192.168.1.1 или asteriskcdr@’%’ (второй вариант дает возможность пользователю asteriskcdr подключаться с любого IP адреса).

Error 1045 (28000): Access denied for user ‘. ‘ (using password: NO)

При попытке подключения к серверу MySQL с помощью клиента mysql появляется указанное выше сообщение: это (вероятнее всего) означает, что Вы не задали пароль пользователя MySQL при подключении к серверу.

Error 1045 (28000): Access denied for user ‘. ‘ (using password: YES)

Если при попытке подключения к серверу MySQL с помощью клиента mysql появляется указанное выше сообщение, то это означает, что Вы указали неверный пароль для пользователя MySQL при подключении к серверу.

Error 2003 (HY000): Can’t connect to MySQL server on ‘. ‘ (113)

Если при попытке подключения к серверу MySQL с помощью клиента mysql (с другого компьютера) появляется указанное выше сообщение, это значит, что у Вас закрыт доступ к порту MySQL данного компьютера. Вероятнее всего, это вызвано неверной настройкой (а точнее, отсутствием настройки на работу с MySQL) службы iptables. Для начала попробуйте просто отключить iptables (остановить службу) и попробуйте подключиться ещё раз.

источник

Asterisk: пишем CDR в базу данных MySQL

May 19, 2016 23:19 · 380 words · 2 minute read asterisk mysql

Детализированная информация о всех телефонных вызовах содержится в CDR (Call Detail Records). В Asterisk есть возможность сохранять CDR-записи в базе данных MySQL, вместо текстовых CSV файлов, использующихся по умолчанию. Давайте разберемся, как писать CDR в базу MySQL!

Считаем, что MySQL-сервер у вас уже установлен и настроен. Если нет, то установить его можно командой:

Подключаемся к MySQL-серверу:

Выбираем только что созданную базу данных:

Создаем таблицу для хранения записей CDR:

Создаем пользователя для работы с CDR:

Выставляем созданному пользователю необходимые права:

Asterisk должен быть собран с поддержкой mysql (модули cdr_mysql , res_config_mysql ). Если нет, то в каталоге с исходным кодом выполняем:

Открываем конфигурационный файл /etc/asterisk/cdr.conf , проверяем следующий параметр:

Открываем конфигурационный файл /etc/asterisk/cdr_mysql.conf , приводим к следующему виду:

Для применения изменений перезапускаем Asterisk командой:

Проверить, что все было сделано правильно можно так:

источник

Оцените статью
Adblock
detector