коммутаторы портов виртуализации с Zabbix API - PullRequest
0 голосов
/ 24 февраля 2020

Я начинающий системный администратор. Всего месяц go, я установил zabbix и настроил коммутаторы с помощью триггеров operstatus.

Возник вопрос, как правильно отображать состояние порта. Я нашел скрипт в Inte rnet и как-то разобрался в скрипте PHP.

Когда выдается команда print php, в файле отображаются цифры от 1-2 в цифровом формате, и все кажется чтобы быть в порядке, но были проблемы с js .... всплывающая подсказка работает, а то, что ниже, больше не отображается.

Помогите мне, пожалуйста.

Первый скрипт работает:

<?php
header('Access-Control-Allow-Origin: *');
// itemids портов Cisco по порядку
$P10255=array('29820','29821','29822','29823','29824','29825','29826','29827','29828','29829','29830','29831','29832','29833','29834','29835','29836','29837','29838','29839','29840','29841','29842','29843','29844','29845','29846','29847','29848','29849','29850','29851','29852','29853','29854','29855','29856','29857','29858','29859','29860','29861','29862','29863','29864','29865','29866','29867');
// itemids портов Zyxel IES1248 по порядку
$P10257=array('31516','31517','31518','31519','31520','31521','31522','31523','31524','31525','31526','31527','31528','31529','31530','31531','31532','31533','31534','31535','31536','31537','31538','31539','31540','31541','31542','31543','31544','31545','31546','31547','31548','31549','31550','31551','31552','31553','31554','31555','31556','31557','31558','31559','31560','31561','31562','31563');
$ITEMS = array();
// В зависимости от пришедшего по POST ID хоста присваиваем определённый набор itemids
switch ($_POST['hostid']){
case '10255': $ITEMS = $P10255;
break;
case '10257': $ITEMS = $P10257;
break;
}
$header=array('Content-Type:application/json-rpc');
// Первый запрос - получаем авторизационный токен
$params=array("jsonrpc" => "2.0","method" => "user.login","params" => array("user" => "apiuser","password" => "apiuser"),"id" => 0);
$params_json=json_encode($params);
$API_URL = 'http://192.168.1.96/zabbix/api_jsonrpc.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $API_URL);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params_json);
$SESSION=json_decode(curl_exec($ch))->result;
// Второй запрос - получаем данные хоста
$params=array("jsonrpc"=>"2.0","method"=>"item.get","params"=>array("output"=>"extend","hostids"=>$_POST['hostid'],"itemids"=>$ITEMS),"auth"=>$SESSION,"id"=>1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
$retval = curl_exec($ch);
curl_close($ch);
$result = json_decode($retval);
$portmap=array();
foreach ($result->result as $key => $item){
$portmap[$key]=$item->lastvalue;
}
echo json_encode($portmap);
?>

Второй скрипт не работает

<style>
.port{width:auto;height:25px;text-align:center;font-size:0.8em;}
#tooltip {
z-index: 9999;
position: absolute;
display: none;
top:0px;
left:0px;
background-color: #000;
padding: 5px 10px 5px 10px;
color: white;
opacity: 0.6;
border-radius: 5px; 
}
.switch{
font-size:2em;
text-align: center;
background-color: #4974ad;
color: #fff;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function(){ 
$("[data-tooltip]").mousemove(function (eventObject) {
$data_tooltip = $(this).attr("data-tooltip");
$("#tooltip").text($data_tooltip)
.css({ "top" : eventObject.pageY + 15, "left" : eventObject.pageX + 5 })
.show();
}).mouseout(function () {
$("#tooltip").hide()
.text("")
.css({"top" : 0,"left" : 0});
});
function updateswitch()
{
$.ajax({
url:"http://192.168.1.96/operstatus.php", 
type: "POST",
data: {hostid:'10257'},
success: function (response){

response.forEach(function(item,i,response){
switch (item){
case '1':
$('#port'+(i+1)).css('background-color','#6f6');
break;
case '2':
$('#port'+(i+1)).css('background-color','#f66');
break;
}
});
},
dataType: "json"});
}
setInterval(function(){
updateswitch();
},10000);
updateswitch();
});
</script>
<table width="640" cellpadding="1" cellspacing="1" border="1">
<tr>
<td colspan="24"><div class="switch">Zyxel IES1248</div></td>
</tr>
<tr>
<td><div class="port" id="port1" data-tooltip="">adsl-1</div></td>
<td><div class="port" id="port5" data-tooltip="">adsl-5</div></td>
<td><div class="port" id="port9" data-tooltip="">adsl-9</div></td>
<td><div class="port" id="port13" data-tooltip="">adsl-13</div></td>
<td><div class="port" id="port17" data-tooltip="">adsl-17</div></td>
<td><div class="port" id="port21" data-tooltip=" ">adsl-21</div></td>
<td><div class="port" id="port25" data-tooltip="">adsl-25</div></td>
<td><div class="port" id="port29" data-tooltip="">adsl-29</div></td>
<td><div class="port" id="port33" data-tooltip="">adsl-33</div></td>
<td><div class="port" id="port37" data-tooltip="">adsl-37</div></td>
<td><div class="port" id="port41" data-tooltip="">adsl-41</div></td>
<td><div class="port" id="port45" data-tooltip="">adsl-45</div></td>
</tr>
<tr>
<td><div class="port" id="port2" data-tooltip="">adsl-2</div></td>
<td><div class="port" id="port6" data-tooltip="">adsl-6</div></td>
<td><div class="port" id="port10" data-tooltip="">adsl-10</div></td>
<td><div class="port" id="port14" data-tooltip="">adsl-14</div></td>
<td><div class="port" id="port18" data-tooltip="">adsl-18</div></td>
<td><div class="port" id="port22" data-tooltip="">adsl-22</div></td>
<td><div class="port" id="port26" data-tooltip="">adsl-26</div></td>
<td><div class="port" id="port30" data-tooltip="">adsl-30</div></td>
<td><div class="port" id="port34" data-tooltip="">adsl-34</div></td>
<td><div class="port" id="port38" data-tooltip="">adsl-38</div></td>
<td><div class="port" id="port42" data-tooltip="">adsl-42</div></td>
<td><div class="port" id="port46" data-tooltip="">adsl-46</div></td>

</tr>
<tr>
<td><div class="port" id="port3" data-tooltip="">adsl-3</div></td>
<td><div class="port" id="port7" data-tooltip="">adsl-7</div></td>
<td><div class="port" id="port11" data-tooltip="">adsl-11</div></td>
<td><div class="port" id="port15" data-tooltip="">adsl-15</div></td>
<td><div class="port" id="port19" data-tooltip="">adsl-19</div></td>
<td><div class="port" id="port23" data-tooltip="">adsl-23</div></td>
<td><div class="port" id="port27" data-tooltip="">adsl-27</div></td>
<td><div class="port" id="port31" data-tooltip="">adsl-31</div></td>
<td><div class="port" id="port35" data-tooltip="">adsl-35</div></td>
<td><div class="port" id="port39" data-tooltip="">adsl-39</div></td>
<td><div class="port" id="port43" data-tooltip="">adsl-43</div></td>
<td><div class="port" id="port47" data-tooltip="">adsl-47</div></td>
</tr>
<tr>
<td><div class="port" id="port4" data-tooltip="">adsl-4</div></td>
<td><div class="port" id="port8" data-tooltip="">adsl-8</div></td>
<td><div class="port" id="port12" data-tooltip="">adsl-12</div></td>
<td><div class="port" id="port16" data-tooltip="">adsl-16</div></td>
<td><div class="port" id="port20" data-tooltip="">adsl-20</div></td>
<td><div class="port" id="port24" data-tooltip="">adsl-24</div></td>
<td><div class="port" id="port28" data-tooltip="">adsl-28</div></td>
<td><div class="port" id="port32" data-tooltip="">adsl-32</div></td>
<td><div class="port" id="port36" data-tooltip="">adsl-36</div></td>
<td><div class="port" id="port40" data-tooltip="">adsl-40</div></td>
<td><div class="port" id="port44" data-tooltip="">adsl-44</div></td>
<td><div class="port" id="port48" data-tooltip="">adsl-48</div></td>
</tr>
</table>
<div id="tooltip"></div>

проблема начинается в данный момент

$.ajax({
url:"http://192.168.1.96/operstatus.php", 
type: "POST",
data: {hostid:'10257'},
success: function (response){

но я не понимаю, что делать ...

...