mysql CDR-DB auf Asterisk

chocoa

Neuer User
Mitglied seit
3 Mrz 2005
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo VoIP-Freunde,

ich bräuchte mal eine Bestätigung von euch ob ich mit meiner Vermutung der Konfiguration richtig liege.
Ich möchte eine Datenbank anlegen in der eine Tabelle CDR existiert, in welcher alle Calls aufgelisted werden.

1.)
cdr_addon_mysql.conf.sample in /etc/astertisk kopieren und umbenennen zu cdr_addon_mysql.conf

2.)
cdr_addon_mysql.conf öffnen und ändern
bei mir:
[global]
hostname=localhost
dbname=asteriskcdrdb
table=cdr
password=password
user=asteriskcdruser
port=3306
sock=/tmp/mysql.sock
userfield=1

Mir scheint es als ob man bei einigen Fehlern den sock zu /var/run/mysqld/mysqld.sock ändern sollte.
Muss eigentlich in der cdr_addon_mysql.conf und der my.conf der selbe sock stehen ? Was empfehlt ihr da ?

Als nächstes habe ich die modules.conf geändert und folgende Zeile hinzugefügt:
load => cdr_addon_mysql.so

Mein nächster Schritt war die /etc/mysql/my.cnf zu editieren. Ich habe einfach noch die user und password Zeilen eingefügt.
[Client]
user=root
password=YES
port=3306
socket=/var/run/mysqld/mysqld.sock

Als nächstes habe ich den mysql-Server gestartet und die Datenbank angelegt.

CREATE DATABASE asteriskcdrdb;

GRANT INSERT
ON asteriskcdrdb.*
TO asteriskcdruser@localhost
IDENTIFIED BY 'password';

USE asteriskcdrdb;

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 '',
`userfield` varchar(255) NOT NULL default ''
);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );


Dann habe ich den Asterisk mit 'reload' neu gestartet und auf meiner Testmachine kommt keine Fehlermeldung.
Ich habe dann einmal mit der 88 meine Voicemail aufgerufen und anschließend mit select * from cdr; den Inhalt der Tabelle abgefragt aber es stand nicht drin. Es sollte doch was drin stehen, oder funzt das nur bei ausgehenden Calls ?
Desweiteren stelle ich mir die Frage ob meine oberen Schritte ausreichend waren oder ob ich irgendwas noch machen muss (editieren, Dateien kopieren, etc.)?

Danke für eure Hilfe
Marc
 
Ist cdr_addon_mysql.so überhaupt vorhanden und geladen ?
(/usr/lib/asterisk)
 
Mir scheint es als ob man bei einigen Fehlern den sock zu /var/run/mysqld/mysqld.sock ändern sollte.
Muss eigentlich in der cdr_addon_mysql.conf und der my.conf der selbe sock stehen ? Was empfehlt ihr da ?

Dabei geht es nicht danach, was man empfehlen sollte, sondern der Socket ist eindeutig definiert und dient externen Applikationen dazu, sich in die Datenbank einzuhängen. Also kannst und mußt Du genau den Socket verwenden, den Dein MySQL Server generiert.

Das Modul sollte übrigens auch ohne Änderung der modules.conf automatisch geladen werden.
 
im Ordner /usr/lib/asterisk/modules ist leider keine cdr_addon_mysql.so

Es gibt nur im Ordner /usr/src/asterisk-addons-1.2.1 eine cdr_addon_mysql.c Datei.

Wie bekomme ich denn die Datei, ich habe eigentlich alle Schritte im Asteriskkurs getan.
 
Wahrscheinlich hast Du die DEVEL-Bibliotheken für MySQL nicht installiert, deshalb wurde die cdr_addon_mysql.c bei Deinem make gar nicht kompiliert. Schau nochmal in die erste Lektion im Kurs, da hab ich damals was zu dem Thema nachgetragen !
 
also das libmysqlclient12 Paket ist installiert.
Ich kann aber keinen Eintrag von libmysqlclient12-dev finden.
Gibt es nicht im Paketverwalter.

Wenn ich apt-get install libmysqlclient12-dev probiere bekomme ich folgende Fehlermeldung:

Package libmysqlclient12-dev is not available, but is referred to by another package.
This may mean thet the package is missing, has been obsoleted, or is only available from another source
E: Package libmysqlclient12-dev has no installation candidate

Ich habe schon versucht auf der Debianseite das Paket zum downloaden zu finden aber den Download scheint debian wohl nicht mehr anzubieten weil die Seite nicht mehr existiert.
http://packages.debian.org/testing/libdevel/libmysqlclient12-dev

Ich habe mittlerweile mit den Repositories im Synaptic Package Manager gespielt aber es wird immer noch nicht gefunden, immer wieder selbe Fehlermeldung wie oben.
Weiß vielleicht wer wo man es downloaden könnte ?
 
Probier doch mal ohne eine Nummer dahinter. Dann solltest Du eine solche Ausgabe bekommen und sehen, welche Pakete es gibt (im Beispiel 10 und 12)

Code:
vs4509:~# apt-get install libmysqlclient-dev
Reading Package Lists... Done
Building Dependency Tree... Done
Package libmysqlclient-dev is a virtual package provided by:
  libmysqlclient12-dev 4.0.24-10sarge1
  libmysqlclient10-dev 3.23.56-3
You should explicitly select one to install.
E: Package libmysqlclient-dev has no installation candidate
 
apt-get install libmysqlclient10-dev

edit:

oh, betateilchen war schon schneller
 
apt-get install libmysqlclient10-dev ist auch installiert und bei
apt-get install libmysqlclient-dev wird auch die 10ner Version als neuste erkannt.

Warum braucht man nur dieses verdammte libmysqlclient12-dev Paket, rrrrr
Warum hat Debian nur seine Downloadsite nicht verfügbar, rrrr

Vielleicht kann mir ja jemand dieses file zusenden, wenn das überhaupt was bringt wenn ich das file einfach reinkopiere !
 
Wenn dieses Paket aber auf Deinem Rechner vorhanden ist, dann solltest Du die mysql-addons auch kompilieren können.

Geh doch nochmal in /usr/src/asterisk-addons und mach dort mal

Code:
make clear && make

und achte bei den Bildschirmausgaben auf Fehlermeldungen. Vielleicht meckert er ja ganz was anderes an und wir suchen hier seit Stunden an der völlig falschen Stelle.
 
das Problem mit dem fehlenden Paket war:
ich hatte nicht all zu viele Paketsources für den Download von updates eingestellt.
Habe also dann mit apt-setup einen deutschen ftp.debian Server hinzugefügt wo es das Paket dann auch gab.
Zu guter letzt habe ich dann noch einmal das MySQL-Paket neu gemacht und alles neu konfiguriert und bekomme jetzt einen neuen Fehler in der CLI.

asterisk*CLI> reload
== MySQL RealTime reloaded.
Jan 26 23:55:40 WARNING[2188]: cdr.c:443 ast_cdr_free: CDR on channel 'SIP/11-9f9b' not posted
Jan 26 23:55:40 WARNING[2188]: cdr.c:445 ast_cdr_free: CDR on channel 'SIP/11-9f9b' lacks end
Jan 26 23:55:58 WARNING[2195]: cdr.c:443 ast_cdr_free: CDR on channel 'SIP/12-6294' not posted
Jan 26 23:55:58 WARNING[2195]: cdr.c:445 ast_cdr_free: CDR on channel 'SIP/12-6294' lacks end
asterisk*CLI>

Das hat doch bestimmt was mit der NoCDR()-Option in der extension.conf

[local]
exten => _1X,1,NoCDR() zu tun, oder ???

weitere Einstellungen sind:
cdr_mysql.conf
[global]
hostname=localhost
dbname=asteriskcdrdb
table=cdr
password=password
user=asteriskcdruser
port=3306
sock=/var/run/mysqld/mysqld.sock

res_mysql.conf
[general]
dbhost=127.0.0.1
dbname=asteriskcdrdb
dbuser=asteriskcdruser
dbpass=password
dbport=3306
dbsock=/var/run/mysqld/mysqld.sock

ansonsten habe ich die Datenbank so angelegt wie ganz oben beschrieben.

Könnt ihr mir da vielleicht helfen.

Danke
Marc
 
NoCDR() sorgt dafür, daß keine EInträge in die Tabelle geschrieben werden. Und die 2 von Dir zitierten Meldungen sind die Bestätigung dafür, daß dieses Nichtschreiben erfolgt ist.
 
also muss ich diese Zeile NoCDR().. wohl auskommentieren, oder liege ich da falsch ?
 
habe mittlerweile nach meinem Testrechner auch auf meinem vServer das mysql zum laufen gebracht und bin sehr zufrieden.

Nur eine kleine Frage hätte ich dann doch noch.

Ich würde auch gerne interne Gespräche auflisten aber das geht ja nicht wenn ich in der extensions.conf

[local]
exten => _3X,1,NoCDR()

verwende. Wenn ich es auskommentiere dann sind keine internen Gespräche mehr möglich.

Gibt es da überhaupt eine Möglichkeit das man auch interne Gespräche in der Datenbank auflisten kann ?
Wenn es keine Möglichkeit dafür gibt, gibt es dann zufällig irgend eine Auflistungsmöglichkeit im .csv-Format o.ä. ?
Weil wenn die CDR-Datenbank eingebunden ist werden ja in den csv-Dateien keine Calls außer Mailboxaufrufe und Echotests mehr aufgelistet.

Danke für eure bisherige Hilfe
Marc
 
Wenn Du das nur auskommentierst, mußt Du daran denken, in der nächsten Zeile des Contexts die Priority 1 zu setzen - eine Abarbeitung in einem Context darf nicht mit "n" beginnen :!:
 
danke für den Tipp mit der Priorität, funktioniert.

Desweiteren ist mir aufgefallen das ich beim reload der CLI immer folgenden Fehler bekomme:

vs*CLI> reload
Jan 31 20:31:09 ERROR[28231]: res_config_mysql.c:615 mysql_reconnect: MySQL RealTime: Failed to connect database server on . Check debug for more info.
Jan 31 20:31:09 WARNING[28231]: res_config_mysql.c:495 reload: MySQL RealTime: Couldn't establish connection. Check debug.
== MySQL RealTime reloaded.
vs*CLI>

Es funktioniert aber alles, alle Gespräche werden in der Datenbank aufgelistet.
Die Datei res_mysql.conf habe ich noch nicht ins Verzeichnis /etc/asterisk kopiert bzw editiert. Dieses habe ich schon auf meinem Testrechner gemacht und dabei weitere Fehlermeldungen bekommen bzw. es soweit gebracht das der Asterisk sich beim CLI>reload einfach disconnected.

Kennt ihr dafür eine Lösung oder soll ich es einfach so laufen lassen ?

Danke
Marc
 
Diese Meldungen kannst Du getrost ignorieren. Die haben mit CDR nix zu tun, sondern beziehen sich auf eine mögliche datenbankbasierte Asterisk-Konfiguration.

Da Du das noch nicht eingerichtet hast, können natürlich auch die entsprechenden Daten nicht gefunden werden.
 
du meinst wohl diese Datein habe was damit zu tun wenn man den dialplan usw. dem Asterisk via einer Datenbank übergibt, also nicht in den .conf-Datein konfiguriert ?
 
Ja, genau das meine ich.
 
Kostenlos!

Neueste Beiträge

Zurzeit aktive Besucher

Statistik des Forums

Themen
247,207
Beiträge
2,263,762
Mitglieder
375,692
Neuestes Mitglied
greypeter1