导出zabbix的IT service报表
zabbix中的IT service可以是树状结构。
这就要求脚本要有这个功能点:能收集到一个节点的所有子节点信息。(这是典型的递归循环的使用场景)。
接着上篇博客,我们已经可以获取到zabbix的auth信息。
使用zbxapi_login.pl脚本获取认证串这里是2080444abc88afe37b59456d4b7ee0a1
打开页面的IT service,点击某个你关心的节点。之你可以在地址栏看到如下信息。serviceID就在里面。
http://x.x.x.x/zabbix/report3.php?serviceid=4&year=2016&period=weekly
现在我可以用如下命令获取到IT service信息了。第三第四个参数分别是起止时间。
perl getsla.pl 2080444abc88afe37b59456d4b7ee0a1 4 `date -d '2015-10-01 00:00:00' +%s` `date -d '2015-11-01 00:00:00' +%s`
以下是脚本内容
#cat getsla.pl use Text::CSV_XS; use JSON::RPC::Client; use Time::Local; use Data::Dumper; use strict; use warnings; my $csv = Text::CSV_XS->new ({ binary => 1, eol => $/ });sub getsla {my($auth,$serviceid,$from,$to) = @_;my $client = new JSON::RPC::Client;my $uri = 'http://zabbixIP/zabbix/api_jsonrpc.php';my $callobj = {jsonrpc => '2.0',method => 'service.getsla',params => { serviceids => [$serviceid],intervals => [{ from => "$from" , to => "$to" }],#intervals => [ from => "1443913200" , to => "1444518000" ],} ,auth => "$auth",id => '1',};my $res = $client->call($uri, $callobj);return $res->result; }sub getservice{my($auth,$serviceid) = @_;my $client = new JSON::RPC::Client;my $uri = 'http://zabbixIP/zabbix/api_jsonrpc.php';my $callobj = {jsonrpc => '2.0',method => 'service.get',params => { serviceids => [$serviceid],selectDependencies => "extend",output => "extend",},auth => "$auth",id => '1',};my $res = $client->call($uri, $callobj);my $return = $res->result;return $return; }sub average {my (@num) = @_;my $num = scalar @num;my $total;foreach (0..$#num) {$total += $num[$_];}return ($total/$num); }sub getobj{my($auth,$serviceid,$from,$to) = @_;my @array;my %hash;$hash{'sla'}=getsla($auth,$serviceid,$from,$to);$hash{'service'}=getservice($auth,$serviceid);${$hash{'service'}}[0]{'countdependencies'}=scalar(@{$hash{'service'}->[0]{'dependencies'}});my @num;if (${$hash{'service'}}[0]{'countdependencies'} > 0 ){my $sid ;foreach $sid (@{$hash{'service'}->[0]{'dependencies'}}) {my $child=&getobj($auth,$sid->{'serviceid'},$from,$to);push (@array,$child);push (@num,$child->{'sla'}{$child->{'service'}[0]{'serviceid'}}{'sla'}[0]{'sla'})}my $num = scalar @num;my $total;foreach (0..$#num) {$total += $num[$_];}$hash{'sla'}{$serviceid}{'sla'}[0]{'sla'}= $total / $num;}push (@array,\%hash);return @array; }sub caltime{my($period) = @_;my $days = int($period/(24*3600));my $hours = int($period%(24*3600)/3600);my $mins = int($period%3600/60);my $secs = $period%60;return $days."d,".$hours."h,".$mins."m,".$secs."s"; }open my $out,">", "/data/HTI_sla.csv" or die "Can NOT create file:outputfile:$!"; my @title=( 'Service Name','SLA','Down Time','Problem Time','OK Time','Period','from','to'); my $status = $csv->print ($out, \@title);my @ultobj; @ultobj= &getobj($ARGV[0],$ARGV[1],$ARGV[2],$ARGV[3]); my $obj; foreach $obj (@ultobj){my @crow=();push(@crow,$obj->{'service'}[0]{'name'});push(@crow,$obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'sla'}."%");push(@crow,caltime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'downtimeTime'}));push(@crow,caltime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'problemTime'}));push(@crow,caltime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'okTime'}));push(@crow,caltime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'to'} - $obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'from'}));my ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'from'});$year = $year+1900;$mon=$mon+1;push(@crow,$year."-".$mon."-".$day." ".$hour.":".$min.":".$sec);($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($obj->{'sla'}{$obj->{'service'}[0]{'serviceid'}}{'sla'}[0]{'to'});$year = $year+1900;$mon=$mon+1;push(@crow,$year."-".$mon."-".$day." ".$hour.":".$min.":".$sec);my $status = $csv->print ($out, \@crow); }#print Dumper(@ultobj);
转载于:https://blog.51cto.com/chcearth/1734878
导出zabbix的IT service报表相关推荐
- SQL Server 2012--Reporting Service报表阅览工具 - Power View【转载】
微 软SQL Server 2012是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理.其中Reporting Service报表系统是目前最流行的报表设计,开发以及生成 ...
- python 导出数据并发邮件_Python自动化导出zabbix数据并发邮件脚本
Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件.效果如下: 下面是脚本,可根据自己的具体情况修改: #!/usr/bin/python` `#coding:utf-8` ...
- api zabbix 拓扑图 获取_Zabbix报表系统
Zabbix监控资源之后,常需要对资源的的监控数据进行导出,制作成为报表,如周报,日报等形式,目前zabbix还未自带报表功能.近期学习go语言,开发了一个简单的Zabbix报表工具. 在线试用 ht ...
- ActiveReports中如何在后台导出运行时绑定数据源报表
ActiveReports支持运行时绑定数据源功能,这种绑定数据源方法使用较为普及,然而很多系统中都需要在后台导出报表文件,所以用户就很困惑,ActiveReports中如何在后台导出运行时绑定数据源 ...
- 如何解决Form中不能导出数据和不能输出报表的问题
Metalink推荐的解决方法.[@more@] 如何解决Form中不能导出数据和不能输出报表的问题 1.以root用户登陆 2.切换到orporcli用户 #su orporcli 3.启动数据库 ...
- 导出带图片的Excel报表
导出带图片的Excel报表 先引用 Microsoft.Office.Tools.Excel.v4.0.Utilities.dll程序集,然后在后台页面引用using Excel = Microsof ...
- zabbix生成资源性能报表+邮件自动发送
使用python调去zabbix数据库groups,hosts_groups,hosts,items,trends,trends_uint表格中的数据组个而成的字典形式,并将其写入excel表格中. ...
- zabbix企业应用之报表功能
对于运维来说,监控是一个重要的工作,如果做好了监控可以解决以下问题: 1.做了硬件监控,如果服务器出现硬件问题可以提前知晓,提前安排好解决方案,避免突然出现问题造成损失: 2.做了系统与服务的监控,如 ...
- cognos报表导出excel_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...
EasyReport是一个简单易用的Web报表工具,它的主要功能是把SQL语句查询出的数据转换成报表页面, 同时支持表格的跨行(RowSpan)与跨列(ColSpan)配置. 同时它还支持报表Exce ...
最新文章
- JQ用变量关联input name
- AppDomain,应用程序域
- Window 窗口层次关系
- 两台电脑可以用同一IP上网吗?
- 农村房屋能抵押做贷款吗?
- HDU 4035 Maze
- 全局eslint不生效的处理
- kali linux之edb--CrossFire缓冲区溢出
- 《MySQL——连接查询》
- Python使用正则表达式检查书稿中不应该出现的重复字
- 【MyBatis笔记】03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
- openssh 加固
- KinectV2+Ubuntu 14.04+Ros 配置
- 网游设想二:九重天[]
- 某大型电商云平台实践
- 计算机芯片制造原理,制作芯片与下围棋——一张图说明芯片的工作原理
- FreeRtos 任务优先级和中断优先级
- kylin构建cube时step1报错MoveTask
- 计算机桌面背景设置,电脑桌面背景设置图文教程
- 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装
热门文章
- php 设计模式系列,一看就懂系列之 php设计模式(一)-Go语言中文社区
- BeanUtils.copyProperties使用
- java 事件分发机制_读Android源码之事件分发机制最全总结
- java订单重复提交_java表单重复提交常用解决办法
- html头部协议,TCP/IP协议头部结构体
- python import system_[Python Basics]引用系统(The Import System)
- 创建图片mat_OPENCV(二)——Mat类与几个函数的简介
- tablepc是什么平板电脑_tablepc平板电脑怎么截图
- python更改文件路径 unable_python 安装无效:无法打开/usr/lib/python2. 7/config/Makefile ( 没有此类文件或者目录)...
- 数据结构c语言描述第课后答案李学刚,数据结构(C语言描述)(第2版)