## Mojo::Zabbix IT is a simple perl wrapper of Zabbix API. We build only authentication and request methods and few helper methods to simplify calling methods such ascreate/get/update/delete/exists. ## ä¸æ–‡ä»‹ç» Mojo::Zabix - 是对zabbix api函数的简å•æ‰“包,以便更易于用perl脚本进行 访问æ“作zabbix。目å‰ä»…支æŒè®¤è¯å’Œè¯·æ±‚方法,å¯ä»¥ç”¨å…¶è¿›è¡Œcreate/get /update/delete/exists方法调用,è§ä¾‹å。本模å—基于Mojo::useragent,结果 å¯ä»¥ç”¨Mojo:DOM进行处ç†å’Œå†…容æå–。 本模å—ä¾èµ–Mojo,建议使用cpan包安装 cpanm Mojo::Zabbix ###The more details ,please visting the Zabbix API documentation pages . - [Zabbix API Wiki](http://www.zabbix.org/) - [Zabbix 1.8 API](http://www.zabbix.com/documentation/1.8/api) - [Zabbix 2.0 API](http://www.zabbix.com/documentation/2.0/) - [Zabbix 2.2 API](https://www.zabbix.com/documentation/2.2/) - [Zabbix 3.0 API](https://www.zabbix.com/documentation/3.0/) - [Zabbix 3.2 API](https://www.zabbix.com/documentation/3.2/) - [Zabbix 3.4 API](https://www.zabbix.com/documentation/3.4/) ### Test The module is compatible and tested with Zabbix less version 3.0 本模å—ç›®å‰ä»…在3.0以å‰çš„模å—下测试,3.0下基本å¯ä»¥ä½¿ç”¨ï¼Œ3.0å¯ä»¥ä½¿ç”¨ï¼Œä½†æ˜¯æœªä¸¥æ ¼æµ‹è¯• ## Example use Mojo::Zabbix; my $z = Net::Zabbix->new( url => "https://server/zabbix/", username => 'user', password => 'pass', verify_ssl => 0, debug => 1, trace => 0, ); my $r = $z->get("host", { filter => undef, search => { host => "test", }, } ); #### A example for print the zabbix api version 打å°zabbixæœåŠ¡å™¨ç‰ˆæœ¬. print $z->get("apiinfo.version",)->{result},"\n"; #### A example for get the new warn message of triggerid 打å°æ–°è¦å‘Šè§¦å‘器. print getTriggers($z); sub getTriggers { my $z=shift; my $ysterday=localtime(time()-24*3600); my $r = $z->get("trigger", { filter => {value => 1, lastChangeSince => "$ysterday", 'withUnacknowledgedEvents'=>1, }, output => ["","triggerid","description","priority"], sortfield =>"priority", sortorder => "DESC", expandData=>"host", }, ); my $result; my $host=$r->{'result'}; for (@$host){ $result.="$_->{'host'}:".$_->{'description'}."\n" ; } return $result; } ## The result all 结果示æ„: xxx.xxx.xx.55: {HOST.CONN}æœåŠ¡å™¨çš„84端å£down xxx.xxx.xx.55: {HOST.CONN}æœåŠ¡å™¨çš„81端å£down xxx.xxx.xx.55: {HOST.CONN}æœåŠ¡å™¨çš„82端å£down xxx.xxx.xx.55.9: {HOST.CONN}æœåŠ¡å™¨çš„80端å£down xxx.xxx.xx.12: {HOST.NAME} æœåŠ¡å™¨è´Ÿè½½è¾ƒé«˜ï¼Œè¯·åŠæ—¶æŸ¥çœ‹ xxx.xxx.xx.124: ç£ç›˜sdb利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} xxx.xxx.xx.44: ç£ç›˜sdb利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} xxx.xxx.xx.45: ç£ç›˜sdb利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} xxx.xxx.xx.33: ç£ç›˜sdb利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} xxx.xxx.xx.56: ç£ç›˜sda利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} xxx.xxx.xx.57: ç£ç›˜sda利用率超过95%,当å‰å€¼ä¸º{ITEM.LASTVALUE} ## 基于本模å—的,通过webqq或者webwx实时获å–hosts监控数æ®çš„实例 XX_10.2.7.20_ 实时数æ®: ESTABLISHED链接 - { connections.status[ESTABLISHED] } : 9 SYN链接 - { connections.status[SYN] } : 0 网å¡$1的出å£æµé‡ - { net.if.out[bond0] } : 5176 è´Ÿè½½ - { system.cpu.load[,avg1] } : 0.000000 $1剩余inode百分比 - { vfs.fs.inode[/,pfree] } : 99.788211 $1的剩余百分比 - { vfs.fs.size[/,pfree] } : 99.269724 å¯ç”¨å†…å˜ - { vm.memory.size[available] } : 261874798592 内å˜åˆ©ç”¨çŽ‡ - { vm.memory.size[pused] } : 4.720467 内å˜æ€»ç©ºé—´ - { vm.memory.size[total] } : 270763327488 ## More 更多说明 wo can add the program to crontab and gain the result for mail or some Im tool. 我们å¯ä»¥é€šè¿‡cron定时调用程åºèŽ·å¾—结果,也å¯ä»¥é€šè¿‡IM工具(qq,微信, ç›®å‰æœ‰ä¸ªwebqq(https://github.com/sjdy521/Mojo-Webqq)的æ’件,交互 性获å–监控数æ®ã€‚ 本模å—有个高级函数打包模å—Mojo::Zabbix:APP å¯ä»¥æ›´æ–¹ä¾¿ä½¿ç”¨: ## Mojo-Zabbix-APP The application of Mojo-Zabbix module。 Get data from zabbix data include host,items, Triggers and warns and so on. ## ä¸æ–‡ä»‹ç» 是Mojo::Zabix模å—的应用模å—,对zabbix api常è§æ¨¡å—进行打包 å¯ä»¥æ–¹ä¾¿çš„获å–zabbixä¿¡æ¯ï¼Œç›®å‰åŒ…括zabbix版本,主机列表,监控列表,触å‘器,è¦å‘Š ç‰ï¼Œå¯ä»¥æ ¹æ®éœ€æ±‚æ供更多的æ“作。 ### Example use Mojo::Zabbix::APP; my @myzinfo = <DATA>; ##(get zabbix info from __DATA__ ) #### Define for debug and traceing processe infomaition。(打开调试和跟踪) my $DEBUG=0; my $TRACE=0; #### 定义zabbixæœåŠ¡å™¨ my @myzinfo = ('test1 http://test1/zabbix testuser pass'); @å¯ä»¥å®šä¹‰ä¸ºå¤šè¡Œæ•°æ®ï¼Œæ ¼å¼æŒ‰ç…§è¿™ç§ï¼Œä¸€ä¸ªzabbix æœåŠ¡åœ°å€ä¸€ä¸ª for (@myzinfo) { next if /^#/; next if /^\s*$/; my ( $name, $url,$user, $pass ) = split; print "\n$name\n"; my $z; eval { $z = initZ( $url,$user,$pss ); }; if ($@) { print "Error $@!\n"; } else { ## Print the version of zabbix api. 打å°zabbix 版本 pVersion($z); ## Print all host lists。 获å–所有的主机列表 print getAllhost($z); ## Print warning info of Triggers。打å°å–得的所有触å‘器告è¦ä¿¡æ¯ pTriggers($z); ## Print the history data of given items, default for past 24 hours. ## 打å°ç»™å®šæ—¶é—´æ®µçš„item历å²æ•°æ®ï¼Œå¦‚果默认ä¸ç»™æ—¶é—´é»˜è®¤ä¸ºè¿‡åŽ»24å°æ—¶å†…çš„ pHitems($z); } } ## 结果展示 name Warning info of Triggers 2016-10-19 23:29:57 : 192.168.1.* : {HOST.NAME}上的80端å£å…³é— 2016-10-19 22:58:28 : 192.168.2.* : 系统目录/etc/sysconfig/å‘生å˜åŒ– 2016-10-19 22:24:32 : 192.168.3.* : 系统目录/etc/init.d/å‘生å˜åŒ– 2016-10-19 19:12:53 : 192.168.3.* : ç£ç›˜sda IO利用率超过95% 2016-10-19 18:03:03 : 192.168.4.* : Too many processes on {HOST.NAME} ## more,æ›´å¤šå®žä¾‹è§ example/example.pl ## Git repo [github] (https://github.com/bollwarm/Mojo-Zabbix) [oschina] (https://git.oschina.net/ijz/Mojo-Zabbix.git) ## AUTHOR mail to orange: <bollwarm@ijz.me> [web|blog](http://ijz.me) ## License This software is copyright (c) 2016 by oragnge. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself..