基于NagiosQl优化Nagios快速查询

  • A+
所属分类:监控文档 默认

Nagios的快速查询,需要完全的输入主机名称,才能进行查询,不然会报CGI的错误

062917 1221 NagiosQlNag1 - 基于NagiosQl优化Nagios快速查询

当节点多的时候,就不能完全记得每个节点叫什么了,本次优化用过jquery 异步提交,

从NagiosQl配置数据库中提取相关信息,实现输入框联动效果,只要输入部分名字、IP地址信息等,就能完全联动出整个名字,方便查看以及查找,效果

输入部分IP查找相关的主机,或者输入主机名也可以。

062917 1221 NagiosQlNag2 - 基于NagiosQl优化Nagios快速查询

062917 1221 NagiosQlNag3 - 基于NagiosQl优化Nagios快速查询

1、首现需要准备两大组件

一、Jquery 以及jquery-UI 官方随便下载

二、ezSQL_mysql 不是必须,这个是别人封装好的连接数据类,也可以自己写mysql连接器

2、在搜索页面进行引用,默认的搜索页面文件在/nagioos/share 下面有一个side.php文件

<head> 标签中引用Jquery 以及Jquery -ui,根据自己放置的路径进行填写

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>

<script src="jquery-ui-1.12.1/jquery-ui.min.js"></script>

<link href="jquery-ui-1.12.1/jquery-ui.css" rel="stylesheet" type="text/css">

062917 1221 NagiosQlNag4 - 基于NagiosQl优化Nagios快速查询

3、配置ezSQL_mysql 连接数据库信息,新建一个
php文件,这个不解释,应用ezSQL_mysql类文件,实例化一个类,用于数据库查询,信息根据自己的情况进行更改

<?php

ini_set('date.timezone','Asia/Shanghai');

// Include ezSQL core

include_once "shared/ez_sql_core.php";

// Include ezSQL database specific component

include_once "mysql/ez_sql_mysql.php";

$db = new ezSQL_mysql('root', '123.com', 'db_nagiosql_v32', 'localhost');

$db->query("set names utf8");

?>

062917 1221 NagiosQlNag5 - 基于NagiosQl优化Nagios快速查询

4、编写后台获取主机列表文件 conn.php为上面编写的数据库连接文件
,通过查询NagiosQl,数据库比对和输入相进的主机,返回前10条,这里会比较主机名、IP地址、主机描述,返回主机名

<?php

header('Content-Type:text/html;charset=UTF-8');

include "include/conn.php";

$term = $_GET['term'];

if ($term == '')

{

exit("输入DRLCode进行查询");

}

$sql="select host_name,alias,address from tbl_host where host_name like '%".$term."%' or alias like '%".$term."%' or address like '%".$term."%' and hostgroups = 1 limit 10";

$results=$db->get_results($sql);

$arr=array();

foreach ($results as $result)

{

$arr[]=array("label"=>$result->host_name);

}

echo json_encode($arr);

?>

062917 1221 NagiosQlNag6 - 基于NagiosQl优化Nagios快速查询

页面返回json效果

062917 1221 NagiosQlNag7 - 基于NagiosQl优化Nagios快速查询

5、在页面上启用autocomplete自动补全功能

以下操作都在side.php 文件进行

一、首现为页面的输入框,绑定一个ID,默认无

<input type='text' name='host' size='15' class="NavBarSearchItem">

<input id="host" type='text' name='host' size='15' class="NavBarSearchItem">

二、为form 绑定一个ID ,用于选择完后自动提交

<form method="get" action="<?php echo $cfg["cgi_base_url"];?>/status.cgi" target="<?php echo $link_target;?>">

<form id="statussubit" method="get" action="<?php echo $cfg["cgi_base_url"];?>/status.cgi" target="<?php echo $link_target;?>">

062917 1221 NagiosQlNag8 - 基于NagiosQl优化Nagios快速查询

三、在《head》总添加关键脚本代码,以下代码有3个中用

第一:实现自动补全功能,修改getDRLCode.php为第四步创建的文件名,会异步获取相关列表信息

第二:选择完成后自动提交
主要该代码实现 $("#statussubit").submit();

第三:当重新点击输入框时,清空输入框内容
主要实现代码 $("#host").attr("value","");

以下代码都是必须的哦!

<script>

$(document).ready(function(){

$("#host").focus(function(){

$("#host").attr("value","");

});

$("#host").autocomplete({

autoFocus: true,

source: "getDRLCode.php",

select: function(event, ui){

$("#host").val(ui.item.label);

event.preventDefault();

$("#statussubit").submit();

}

});

});

</script>

062917 1221 NagiosQlNag9 - 基于NagiosQl优化Nagios快速查询

到这里基本所有修改完成,保存后试试效果吧

所涉及的软件资源可以在我另外一个github项目中找到 ,代码部分也大致相同

https://github.com/dcl-lily/MrtgTrffDashboard

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  1

    • alex Admin

      第四步种 大家把SQL语句变更如下 ,我当时应为有特殊需求,删除 and hostgroups = 1
      $sql=”select host_name,alias,address from tbl_host where host_name like ‘%”.$term.”%’ or alias like ‘%”.$term.”%’ or address like ‘%”.$term.”%’ limit 10″;