Loading... <p></p> <p> 公司由于大量业务调整,尤其是服务器功能和性能的转变,监控也跟随这变化,其中操作最为繁琐的当数zabbix筛选(相信各位从页面添加的都深感痛苦)于是有了本文。</p> <p> 本文采用的方法是sql操作(由于本人不会php等,无法写程序直接调用官方api,所以,嘿嘿,不解释,同时也希望各路大大多多交流。)</p> <p> 本文所述的脚本属于beta版,其中很多部分可以和sql,php,python进行结合,各位可以进行多种尝试。如果该脚本有任何bug,请及时联系我,同时我也会针对该版本进行更新,还望各位多多支持。</p> <p>——————————————-Bash内容————————————————</p> <p><span style="font-size: 12px">#!/bin/sh</p> <p>:<< Statement<br />Function : To Quick Create zabbix Screen<br />Version : 1.0-beta<br />Mail : 714810243@qq.com<br />Date : 2015-12-16<br />Bug : 1.该脚本仅适用于zabbix-2.0.8(开发环境是该版本,其他版本没测试过,但是按照官方文档说明,应该适用到2.4.x >_< )<br /> 2.该脚本目前只适用于传输一个key,无法支持多个,同一个分组必须要都含有该key值,如果无该key,那么,无key的机器将无法加入筛选<br /> 3.目前该脚本仅仅适用于有图形的选项,对于简单图形等,不支持</span></p> <p><span style="font-size: 12px"> 4.本文中的函数是准备用来进行第二版的扩展,如果不需要,可以删除<br /></span></p> <p><span style="font-size: 12px"> 该脚本可以和数据库,php等结合使用,目前是beta版,其功能还有待开发与完善。<br />Statement</p> <p>[ -n ${DEBUG:-''} ] && set -v</p> <p>DBUser=root<br />DBPasswd=sy381<br />DBHost=localhost</p> <p>HostGroupName=$1<br />ScreenName=$2<br />Screenkey=$3</p> <p>#插入screen<br />function InsertScreen (){<br />#查询组中主机数量,以便插入行和列的信息<br />Host_Num=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> SELECT<br /> count(*)<br /> FROM<br /> zabbix.hosts,<br /> zabbix.groups,<br /> zabbix.hosts_groups<br /> WHERE<br /> zabbix.hosts.hostid = zabbix.hosts_groups.hostid<br /> AND zabbix.hosts_groups.groupid = zabbix.groups.groupid<br /> AND zabbix.groups.name = '$HostGroupName';" | awk 'NR==2{print}'`</p> <p>if [ $[$Host_Num%2] != '0' ] ;then<br /> LineNum=$[$Host_Num/2+1]<br />else<br /> LineNum=$[$Host_Num/2]<br />fi</p> <p>LastScreenId=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> SELECT<br /> zabbix.screens.screenid<br /> FROM<br /> zabbix.screens<br /> ORDER BY<br /> zabbix.screens.screenid DESC LIMIT 1;" | awk 'NR==2{print}'`<br /> <br />ScreenId=$[$LastScreenId+1]</p> <p>/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> INSERT INTO zabbix.screens (<br /> zabbix.screens.screenid,<br /> zabbix.screens.name,<br /> zabbix.screens.hsize,<br /> zabbix.screens.vsize<br /> )<br /> VALUES<br /> ('$ScreenId','$ScreenName', '2', '${LineNum}');"</p> <p>}</p> <p>#插入screen中的items<br />function InsertScreenitems (){</p> <p>ScreenGrap=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> SELECT<br /> zabbix.graphs.graphid<br /> FROM<br /> zabbix.hosts_groups,<br /> zabbix.hosts,<br /> zabbix.groups,<br /> zabbix.items,<br /> zabbix.graphs_items,<br /> zabbix.graphs<br /> WHERE<br /> zabbix.groups.groupid = zabbix.hosts_groups.groupid<br /> AND zabbix.hosts_groups.hostid = zabbix.hosts.hostid<br /> AND zabbix.hosts.hostid = zabbix.items.hostid<br /> AND zabbix.graphs_items.itemid = zabbix.items.itemid<br /> AND zabbix.graphs.graphid = zabbix.graphs_items.graphid<br /> AND zabbix.groups.name = '$HostGroupName'<br /> AND ( zabbix.items.key_ LIKE '%$Screenkey%') GROUP BY zabbix.graphs.graphid;"| awk 'NR!=1{print}'`</p> <p>Screennum=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> SELECT<br /> zabbix.screens.screenid<br /> FROM<br /> zabbix.screens<br /> WHERE<br /> zabbix.screens.name = '$ScreenName';"| awk 'NR!=1{print}'`</p> <p>x=0<br />y=0<br /> <br />for screenresource in $ScreenGrap ; do<br /># echo $screenresource<br /> LastScreenitemsnum=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> SELECT<br /> zabbix.screens_items.screenitemid<br /> FROM<br /> zabbix.screens_items<br /> ORDER BY<br /> zabbix.screens_items.screenitemid DESC LIMIT 1;"| awk 'NR==2{print}'`<br /> <br /> Screenitemsnum=$[$LastScreenitemsnum+1]<br /> <br /> x=$[$x%2]<br /># echo "$Screenitemsnum $Screennum 0 $screenresource 500 100 $x $y 1 1 0 0 0 0 0 0"<br /> /usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"<br /> INSERT INTO <br /> zabbix.screens_items<br /> VALUES<br /> ('$Screenitemsnum','$Screennum','0','$screenresource','500','100','$x','$y','1','1','0','0','0','0','','0','0');"<br /> y=$[$y+$x]<br /> x=$[$x+1]<br /> <br />done</p> <p>}<br />InsertScreen<br />InsertScreenitems</span><br />———————————————————————————–</p> <p>使用方法 : sh shellname.sh groupname screenname itemskey</p> <p> ex: sh addscreen.sh 01-银行业务03 01-银行业务03-流量 bond0</p> <p>那么,该脚本会生成名为01-银行业务03-流量的筛选,并将01-银行业务03分组中的所有机器(有bond0)的bond0网卡流量纳入筛选中。</p> <p></p> <p>欢迎各位多多交流和转载,转载还请保留出处,>.<</p> <pre class="brush:html;toolbar:false;"><br /></pre> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信