zabbix企业应用之报表功能
对于运维来说,监控是一个重要的工作,如果做好了监控可以解决以下问题:
1、做了硬件监控,如果服务器出现硬件问题可以提前知晓,提前安排好解决方案,避免突然出现问题造成损失;
2、做了系统与服务的监控,如果系统资源与服务出现问题,可以及时知晓并解决,同时可以根据周期内监控数据,做好调优;
如果仅完成以上事情的话,只是对运维本身工作有所帮忙,如何对其他部门做支持,以及让公司领导看出运维团队的重要性,就需要多下一份功夫,毕竟如果出现问题,就是运维工作不到位,如果不出问题,是运维应该做的。
为了提供运维团队对其他部门的支持,以及为运维争取话语权,我除了对以上2个工作更好、快速的完成外,还对于监控数据充分利用起来,通过监控数据实现报表功能,实现以下工作:
1、运维无法直接创造利益,就只能开源节流,节省服务器数量,合并压力小的业务,以便节省服务器数量与成本;
2、通过监控数据,计算出各项目使用的资源量与成本,方便各项目负责人的知晓业务使用情况与成本;
3、方便财务统计,并知晓各项目使用机房流量带宽百分百。
所以我使用shell+mysql,写了个统计报表功能,能定时的统计每个月(我默认是每月,可以自定义时间)以下信息的信息(我统计是平均值,是概数,供参考):
1、主机资源使用
功能:包括查询时间、主机所属组、主机ip、cpu逻辑核数、cpu平均空闲值、cpu平均最小值、可用平均内存、可用最小内存、总内存、cpu最小wio、cpu最大wio、进入最大流量、出去最大流量、进入平均流量、出去平均流量、进入最小流量、出去最小流量;
作用:使用这个表可以帮忙我们对浪费服务器资源的项目适当减少服务器数量,以便节省资源与成本。
功能:包括查询时间、主机所属组、进入最大流量、出去最大流量、进入平均流量、出去平均流量、进入最小流量、出去最小流量;
功能:包括查询时间、机房、进入最大流量、出去最大流量、进入平均流量、出去平均流量、进入最小流量、出去最小流量;
作用:方便运维了解机房网络使用量与每月机房带宽成本计算(一般机房计算机房带宽成本都使用cacti)。
功能:包括查询时间、所属组、进入最大流量、出去最大流量、进入平均流量、出去平均流量、进入最小流量、出去最小流量;
完成后会在/tmp/zabbix_log目录里有4个文件生成
[root@ip-10-10-13-8 zabbix_log]# pwd /tmp/zabbix_log [root@ip-10-10-13-8 zabbix_log]# ll 总用量 100 -rw-r--r-- 1 root root 5484 5月 14 11:19 zabbix_group_network_traffic.txt -rw-r--r-- 1 root root 78282 5月 14 11:19 zabbix_host_search.txt -rw-r--r-- 1 root root 5477 5月 14 11:19 zabbix_network_percent.txt -rw-r--r-- 1 root root 296 5月 14 11:19 zabbix_room_network.txt
zabbix_group_network_traffic.txt对应“各项目网络流量”
zabbix_host_search.txt对应“主机资源使用”
zabbix_network_percent.txt对应“各项目占机房总流量百分比”
zabbix_room_network.txt对应“机房网络流量”
由于运行脚本后会生成txt文件,非技术人员还是喜欢看excel,所以下一步介绍如何把txt转为excel
请参看“http://jingyan.baidu.com/article/359911f5108f3757fe0306fb.html”,我就不介绍了,很简单。
#!/bin/bash . /etc/profile logdir='/tmp/zabbix_log' mysql_host='10.10.11.12' mysql_user='zabbix' mysql_passwd='zabbix' mysql_database='zabbix' year=`date +%Y` month=`date +%m` next_month=`echo $month+1|bc` if [ ! -d $logdir ];thenmkdir $logdir fi
#select cpu avg idle mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_cpu_avg_idle.txt<<EOF set names utf8; select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host, round(avg(hi.value_avg),1) as Cpu_Avg_Idle from hosts_groups hg join groups g on g.groupid = hg.groupid jo in items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends hi on i.itemid = hi.itemid where i.key_='system.cpu.util[,idle]' and hi.clock >= UNIX_TIMESTAMP('${year}-$ {month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF
#select cpu avg idle mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_cpu_avg_idle.txt<<EOF set names utf8; select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host, round(avg(hi.value_avg),1) as Cpu_Avg_Idle from hosts_groups hg join groups g on g.groupid = hg.groupid jo in items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends hi on i.itemid = hi.itemid where i.key_='system.cpu.util[,idle]' and hi.clock >= UNIX_TIMESTAMP('${year}-$ {month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF
#select cpu max load 5 minute mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_cpu_max_load5.txt<<EOF set names utf8; select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host, round(max(hi.value_max),0) as Cpu_Max_Iowait from hosts_groups hg join groups g on g.groupid = hg.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends hi on i.itemid = hi.itemid where i.key_='system.cpu.load[all,avg5]' and hi.clock >= UNIX_TIMESTAMP('${ye ar}-${month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF
#select memory avg avaiable mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_memory_avg_avaiable.txt<<EOF set names utf8; select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host,round(avg(hi.value_avg)/1024/1024/1024,1) as Memory_Avaiable from hosts_groups hg join groups g on g.groupi d = hg.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends_uint hi on i.itemid = hi.itemid where i.key_='vm.memory.size[available]' and hi.clock >=UNIX_TIMESTAMP('${year}-${month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF
#select memory total mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_memory_total.txt<<EOF set names utf8; select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host,round(avg(hi.value_avg)/1024/1024/1024,0) as Memory_Total from hosts_groups hg join groups g on g.groupid =hg.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends_uint hi on i.itemid = hi.itemid where i.key_='vm.memory.size[total]' and hi.clock >= UNIX_TI MESTAMP('${year}-${month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF
#select network em2 avg in mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_network_em2_avg_in.txt<<EOF set names utf8;select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host,round(avg(hi.value_avg)/1000,0) as Network_Em2_Avg_In from hosts_groups hg join groups g on g.groupid = hg .groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends_uint hi on i.itemid = hi.itemid where i.key_='net.if.in[em2]' and hi.clock >= UNIX_TIMESTAMP('$ {year}-${month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF sed -i '/Date*/d' $logdir/info_mysql_network_em2_avg_in.txt #select network em2 avg out mysql -h $mysql_host -u $mysql_user -p$mysql_passwd $mysql_database >$logdir/info_mysql_network_em2_avg_out.txt<<EOF set names utf8;select from_unixtime(hi.clock,'%Y-%m') as Date,g.name as Group_Name,h.host as Host,round(avg(hi.value_avg)/1000,0) as Network_Em2_Avg_Out from hosts_groups hg join groups g on g.groupid = h g.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends_uint hi on i.itemid = hi.itemid where i.key_='net.if.out[em2]' and hi.clock >= UNIX_TIMESTAMP( '${year}-${month}-01 00:00:00') and hi.clock < UNIX_TIMESTAMP('${year}-0${next_month}-01 00:00:00') group by h.host; EOF sed -i '/Date*/d' $logdir/info_mysql_network_em2_avg_in.txt paste $logdir/info_mysql_network_em2_avg_in.txt $logdir/info_mysql_network_em2_avg_out.txt |awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$NF}' >$logdir/info_mysql_network_em2_avg.txt
所以如果各位想使用我脚本的话,肯定得自己根据自己需求来修改,我分享脚本主要是让大家看看各个监控项的sql,具体如何写就看各位了。
zabbix企业应用之报表功能相关推荐
- zabbix企业应用之自动语音报警平台
我从2013年5月开始研究zabbix,研究的版本是2.0.6,到现在也马上2年了,目前生产版本还是2.0.6. 现在我公司1000+的服务器无论是物理机还是vmware.openstack的云主机. ...
- Zabbix部署及微信告警功能
大学毕业设计写的是关于Zabbix微信告警功能的设计与实现,因为某明星得瑟,高校严控查重率,所以我的毕业论文,虽然查重率比较低,但是还是感觉写的东西太少,不够专业,为了以后还能记住,特意写几篇文章记录 ...
- api zabbix 拓扑图 获取_Zabbix报表系统
Zabbix监控资源之后,常需要对资源的的监控数据进行导出,制作成为报表,如周报,日报等形式,目前zabbix还未自带报表功能.近期学习go语言,开发了一个简单的Zabbix报表工具. 在线试用 ht ...
- 用友BQ商业智能平台报表功能
用友BQ商业智能平台报表功能 概述 用友BQ商业智能平台有两种模式,即设计模式和用户模式(非设计模式),设计模式主要用来进行报表的设计.开发和定制:用户模式则是进行相关报表的操作和使用. 让我们首先站 ...
- 使用正确的报表软件做统计,帮助企业提高统计报表的质量
统计工作对于一个企业而言是很重要的,它不仅是实现企业科学化管理的主要手段,还是企业在决策过程中的重要依据,同时还是一个企业衡量市场做出判断的标准,所以统计年终报表是有多么的重要.但是统计年终报表比较复 ...
- 生成msk文件的用处_Yotta企业云盘“小”功能大用处企业办公好伙伴
Yotta企业云盘"小"功能大用处企业办公好伙伴 对于传统的数据存储,Yotta企业云盘可以很好的超越传统存储所面临的挑战. 1.支持本地文件多个同时上传:在网盘中,在需要上传文件 ...
- 网站维护页面_营销型企业网站有哪些功能?
营销型企业网站是企业进行网络营销的一个利器,现在也越来越多企业重视做一个营销型网站.因为网站是客户和企业在网络上互相沟通的一个平台.所以营销型网站的功能也是运营人员在运营的过程中非常重视的体验,今天牛 ...
- 163邮箱有传真服务器,网易企业邮箱邮件传真功能使用说明
网易企业邮箱邮件传真功能是网易在用户购买网易企业邮箱时附赠的增值服务,管理员通过在企业邮箱管理后台给员工邮箱设置邮件传真号码,员工便可在WebMail直接收发电子传真,无需通过传真机.此功能需要联系经 ...
- vue点击其它侧边栏收缩_企业微信聊天侧边栏功能怎么开启?聊天侧边栏有什么用?...
腾讯的企业微信上线以来一直在默默的优化更新,今年8月份悄悄上新了聊天侧边栏功能. 作为一款主打移动端办公的软件,企业微信上线聊天侧边栏有什么用? 聊天侧边栏是啥聊天侧边栏是企业微信的一个全新功能,为了 ...
最新文章
- C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
- 英语听力里面的religion words
- Packagist发布个人的Composer包
- 加白名单_Android保活从入门到放弃:乖乖引导用户加白名单吧
- java 在线编辑器_最好的Markdown开源在线编辑器,没有之一!
- CI框架取消index.php
- 【剑指offer】面试题29:顺时针打印矩阵(Java)
- Windows 10 LTSB 还原默认照片查看器
- CentOS6.6上编译安装httpd2.4
- “几乎看不见”的铰链!可折叠iPhone要来了?
- android.jar 位置,Android 导入jar包 so模块--导入放置的目录
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_17_常用的函数式接口_Function接口中的方法andThen...
- [NOIP2014]自测
- python基础学习笔记(七)
- ISIS协议原理与配置
- Latex:表格插入图片
- installshield java_使用InstallShield打包java程序exe以及jdk,安装完成自动运行
- 蛋糕究竟是怎样做大的
- 怎么从H5广告页内复制微信号直接调起微信客户端添加好友
- alert angularjs