mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
|
|
// Configurations
|
|
$host = $opts["host"];
|
|
$port = $opts["port"];
|
|
$user = $opts["user"];
|
|
$pass = $opts["passwd"];
|
|
$vhost = $opts["vhost"];
|
|
$exchange = "canopsis.events";
|
|
|
|
// Connection
|
|
$conn = new PhpAmqpLib\Connection\AMQPConnection($host, $port, $user, $pass, $vhost);
|
|
$ch = $conn->channel();
|
|
|
|
// Declare exchange (if not exist)
|
|
// exchange_declare($exchange, $type, $passive=false, $durable=false, $auto_delete=true, $internal=false, $nowait=false, $arguments=null, $ticket=null)
|
|
$ch->exchange_declare($exchange, 'topic', false, true, false);
|
|
|
|
// Create Canopsis event, see: https://github.com/capensis/canopsis/wiki/Event-specification
|
|
switch ($obj['severity'])
|
|
{
|
|
case "ok": $state = 0;
|
|
break;
|
|
case "warning": $state = 1;
|
|
break;
|
|
case "critical": $state = 2;
|
|
break;
|
|
default: $state = 3;
|
|
}
|
|
$msg_body = array(
|
|
"timestamp" => time(),
|
|
"connector" => "librenms",
|
|
"connector_name" => "LibreNMS1",
|
|
"event_type" => "check",
|
|
"source_type" => "resource",
|
|
"component" => $obj['hostname'],
|
|
"resource" => $obj['faults'][1]['storage_descr'],
|
|
"state" => $state,
|
|
"state_type" => 1,
|
|
"output" => $obj['msg'],
|
|
"display_name" => "librenms"
|
|
);
|
|
$msg_raw = json_encode($msg_body);
|
|
|
|
// Build routing key
|
|
if ($msg_body['source_type'] == "resource")
|
|
$msg_rk = $msg_rk . "." . $msg_body['resource'];
|
|
else
|
|
$msg_rk = $msg_body['connector'].".".$msg_body['connector_name'].".".$msg_body['event_type'].".".$msg_body['source_type'].".".$msg_body['component'];
|
|
|
|
// Publish Event
|
|
$msg = new PhpAmqpLib\Message\AMQPMessage($msg_raw, array('content_type' => 'application/json', 'delivery_mode' => 2));
|
|
$ch->basic_publish($msg, $exchange, $msg_rk);
|
|
|
|
// Close connection
|
|
$ch->close();
|
|
$conn->close();
|
|
return true;
|