среда, 15 апреля 2026 г.

Asterisk AMI скрипт по мониторингу для ZABBIX

 




      В принципе путь автоматизации  - это естественность развития человечества
Она везде и всюду окружает нас с самых первых шагов
     С одной стороны тяжело, а с другой - это как раз и работа мозга, когда придумываешь сам и пытаешься решить новое на основе уже знающего о мире

#!/usr/bin/php -q
<?php
set_time_limit(100);
ob_implicit_flush(false);           // Turn off output buffering
error_reporting(E_ALL ^ E_NOTICE);
date_default_timezone_set("Europe/Moscow");
include_once('phpagi-asmanager.php');

define('USER', 'zabbix');
define('PASSWD', 'Pass123');

/*
In file  /etc/asterisk/manager.conf

[zabbix]
secret=Pass123
deny=0.0.0.0/0.0.0.0
permit=127.0.0.0/255.255.255.0
allowmultiplelogin=yes
;displayconnects=yes
read = all,system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
write = all,system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
writetimeout=5000
*/



function dump_events($event_code, $data, $server, $port) {

    switch($event_code){
        case 'successfulauth':
          // Ignore
          break;
        case 'devicestatechange':
          // Ignore
          break;
        case 'challengesent':

          // Ignore
          break;

        default:
          on_display($event_code, $data);
    }
}

function on_display($event_code, $data) {
    $time_now = date('H:i:s');
    print($time_now." Received event:\n".$event_code."\nData:\n");
    print_r($data);
    print("\n");
    return 0;
}


//------------------------------------------------------------------------------

$asm=new AGI_AsteriskManager();
if($asm->connect('127.0.0.1:5038', USER, PASSWD)) {
    $Ar_Req=$asm->send_request('Events',
        array('Eventmask'=>'ON')                  // All Events on
        );
    var_dump($Ar_Req);

    $asm->add_event_handler('*', 'dump_events');  // Event handler
    $asm->wait_response();                        // Wait Events
    $asm->disconnect();
}
else{
    print("Manager not connected\n");
}
exit;

Комментариев нет:

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

Памятка по RFC протокола Диаметра

  Памятка по RFC проткола Диаметра DIAMETER — сеансовый протокол, созданный, отчасти, для преодоления некоторых ограничений протокола RADIUS...