Advertisement
TheGerman

Asterisk queue_log file import into mySQL

Nov 19th, 2020
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.30 KB | None | 0 0
  1. <?php
  2. // Resources:
  3. // https://community.asterisk.org/t/how-do-i-import-var-log-asterisk-queue-log-1-into-mysql/6751/2
  4. // https://www.plus2net.com/sql_tutorial/mysql_connect.php
  5. // http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/ACD_id289009.html
  6. // https://stackoverflow.com/questions/30161384/asterisk-11-queue-log-to-mysql/30203264
  7.  
  8. // describe asterisk.queues_log_old;
  9. // +-----------+----------------------+------+-----+-------------------+----------------+
  10. // | Field     | Type                 | Null | Key | Default           | Extra          |
  11. // +-----------+----------------------+------+-----+-------------------+----------------+
  12. // | id        | bigint(255) unsigned | NO   | PRI | NULL              | auto_increment |
  13. // | time      | varchar(255)         | NO   |     |                   |                |
  14. // | callid    | varchar(255)         | NO   |     |                   |                |
  15. // | queuename | varchar(255)         | NO   | MUL |                   |                |
  16. // | agent     | varchar(255)         | NO   |     |                   |                |
  17. // | event     | varchar(255)         | NO   | MUL |                   |                |
  18. // | data      | varchar(255)         | NO   |     |                   |                |
  19. // | data1     | varchar(255)         | NO   |     |                   |                |
  20. // | data2     | varchar(255)         | NO   |     |                   |                |
  21. // | data3     | varchar(255)         | NO   |     |                   |                |
  22. // | data4     | varchar(255)         | NO   |     |                   |                |
  23. // | data5     | varchar(255)         | NO   |     |                   |                |
  24. // | created   | timestamp            | NO   |     | CURRENT_TIMESTAMP |                |
  25. // +-----------+----------------------+------+-----+-------------------+----------------+
  26. // 13 rows in set (0.00 sec)
  27.  
  28. include 'mysql_connect.php';
  29.  
  30. $logfile = '/var/log/asterisk/queue_log';
  31. $delimiter = '|';
  32.  
  33. $data=file($logfile);
  34. $numlines = count($data);
  35. $num_rows = explode($delimiter, $data[0]);
  36.  
  37. print "\n\n";
  38. print "=======================================================================\n";
  39. print "START OF FILE - $numlines RECORDS ON $logfile\n\n";
  40.  
  41. if (count($num_rows) >= 5) {
  42.         for($i=1; $i<$numlines; $i++) {
  43.                 //print "$data[$i]\n";
  44.                 $row = explode($delimiter, preg_replace("[\'\"]", "", $data[$i]));
  45.                 $epoch = trim($row[0]);
  46.                 $uniqueid = trim($row[1]);
  47.                 $queuename = trim($row[2]);
  48.                 $agent = trim($row[3]);
  49.                 $event = trim($row[4]);
  50.                 $arg1 = trim($row[5]);
  51.                 if( ISSET($row[6]) ) { $arg2 = trim($row[6]); } else {$arg2 = '';}
  52.                 if( ISSET($row[7]) ) { $arg3 = trim($row[7]); } else {$arg3 = '';}
  53.                 if( ISSET($row[8]) ) { $arg4 = trim($row[8]); } else {$arg4 = '';}
  54.                 if( ISSET($row[9]) ) { $arg5 = trim($row[9]); } else {$arg5 = '';}
  55.  
  56.                 $time=date("Y-m-d H:i:s",$epoch);
  57.                 $check_log = "SELECT callid FROM asterisk.queues_log_old WHERE time='$time' AND callid='$uniqueid' AND event='$event' AND agent='$agent'";
  58.                 //print "$check_log\n";
  59.                 $result = mysqli_query($link, $check_log);
  60.                 $num_rows = mysqli_num_rows($result);
  61.                 //print "$num_rows\n";
  62.  
  63.                 if($num_rows == 0) {
  64.                         $sql = "INSERT INTO queues_log_old (`time`,`callid`,`queuename`,`agent`,`event`,`data1`,`data2`,`data3`,`data4`,`data5`)
  65.                                VALUES ('$time','$uniqueid','$queuename','$agent','$event','$arg1','$arg2','$arg3','$arg4','$arg5')";
  66.                         //print "$sql\n";
  67.                         $result = mysqli_query($link, $sql);
  68.                 }
  69.                
  70.                 if ( ($i % 100) == 0) { print str_pad($i,6," ",STR_PAD_LEFT); }
  71.                 if ( ($i % 3000) == 0) { print "\n"; }
  72.         }
  73. }
  74.  
  75. mysqli_close($link);
  76. print "\n\n";
  77. print "=======================================================================\n";
  78. print "END OF FILE - $i RECORDS PROCESSED FOR $logfile\n";
  79. print "=======================================================================\n\n";
  80. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement