Gravando CDR no Banco de Dados no Asterisk (Guia Técnico)

No Asterisk, o registro das chamadas (CDR – Call Detail Records) é um recurso nativo.
Por padrão, ele salva esses registros no arquivo /var/log/asterisk/cdr-csv/Master.csv, no próprio servidor.

Ou seja, mesmo sem painel, o Asterisk já gera tudo sozinho. O banco e o painel são só para facilitar a leitura e o gerenciamento.

Se você quiser que o Asterisk grave os CDRs diretamente em um banco de dados, como MySQL ou MariaDB, basta configurar corretamente.

Abaixo está o guia técnico para fazer isso.


Como o CDR funciona no Asterisk

  • O Asterisk gera os registros de chamadas automaticamente.
  • Inicialmente, ele grava tudo em arquivo .csv local.
  • Para gravar no banco de dados, é necessário instalar e configurar um módulo extra.
  • A visualização dos dados pode ser feita de qualquer forma: via painel, script, terminal ou até Excel.

Salvando os CDR no Banco de Dados

Para que o Asterisk grave as ligações no MySQL ou MariaDB, siga estes passos:

Instale o módulo de CDR para banco de dados.

Se estiver usando Debian ou Ubuntu, execute:

apt install asterisk-cdr-mysql

Se estiver usando CentOS ou RHEL, execute:

yum install asterisk-mysql

Configure o acesso ao banco.

Edite o arquivo /etc/asterisk/cdr_mysql.conf e insira as informações corretas:

[global]
hostname=127.0.0.1
dbname=asterisk
table=cdr
password=senha_do_banco
user=usuario_do_banco
port=3306

Salve e feche o arquivo.

Crie a estrutura da tabela no MySQL.

Conecte-se ao banco com:

mysql -u root -p

Em seguida, crie o banco e a tabela:

CREATE DATABASE asterisk;
USE asterisk;

CREATE TABLE cdr (
    calldate datetime NOT NULL default '0000-00-00 00:00:00',
    clid varchar(80) NOT NULL default '',
    src varchar(80) NOT NULL default '',
    dst varchar(80) NOT NULL default '',
    dcontext varchar(80) NOT NULL default '',
    channel varchar(80) NOT NULL default '',
    dstchannel varchar(80) NOT NULL default '',
    lastapp varchar(80) NOT NULL default '',
    lastdata varchar(80) NOT NULL default '',
    duration int(11) NOT NULL default '0',
    billsec int(11) NOT NULL default '0',
    disposition varchar(45) NOT NULL default '',
    amaflags int(11) NOT NULL default '0',
    accountcode varchar(20) NOT NULL default '',
    uniqueid varchar(32) NOT NULL default '',
    userfield varchar(255) NOT NULL default ''
);

Reinicie o Asterisk para aplicar as configurações:

systemctl restart asterisk

Verifique se o driver MySQL do CDR está ativo:

Acesse o console do Asterisk:

asterisk -rvv

E digite:

cdr show status

O driver MySQL deve aparecer como ativo.


Sobre o Arquivo Local CSV

Mesmo depois de configurar o banco de dados, o Asterisk continua gerando o arquivo .csv em /var/log/asterisk/cdr-csv/Master.csv.
Esse arquivo é útil como backup, consulta rápida ou para integração com sistemas que prefiram ler diretamente do servidor.

Se quiser desativar o CSV ou alterar configurações, isso é controlado pelo módulo cdr_csv.so no próprio Asterisk.


Resumo Técnico

  • O Asterisk gera CDRs nativamente.
  • Você pode gravar os dados tanto localmente (arquivo CSV) quanto em banco de dados.
  • O controle e a propriedade dos dados são totalmente seus.
  • A visualização pode ser feita por qualquer sistema que leia MySQL.
  • Não depende de painel para funcionar.
Rolar para cima