前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix-gnomes:Zabbix 命令行工具套件

Zabbix-gnomes:Zabbix 命令行工具套件

作者头像
Debian中国
发布2020-01-21 14:35:39
8780
发布2020-01-21 14:35:39
举报
文章被收录于专栏:Debian中国Debian中国

Zabbix-gnomes 是一组 Zabbix 的开源脚本工具集合,它使用 Python 对 Zabbix API 的进行了分装,使得日常的大部分操作可以通过命令行完成,非常方便。最新的 Zabbix-gnomes 代码可以在 Github 上获取到。

所有 zabbix-gnomes 相关的工具,都可以用 -h/–help 调用获得帮助。

API工具:

  • zapi.py – 交互式 Zabbix API客户端。

相关历史:

  • zgethistory.py – 从历史记录获取一个itemid的值。
  • zhinvswitcher.py – 在主机( 群组组) 上切换 inv。
  • zgetinventory.py – 以CSV格式打印主机清单。
  • zhostupdater.py – 更新主机属性。
  • zhitemfinder.py – 查找主机上的项目。
  • zgethistory.py – 从历史记录( 不支持趋势) 获取项值。
  • zhgraphfinder.py – 查找在Zabbix主机上配置的图形。
  • zgetgraph.py – 从Zabbix前端( 需要用户前端访问) 下载一个图形. PNG 并保存它。
  • zghostfinder.py – 查找hostgroup中的成员主机。
  • zhostfinder.py – 根据搜索字符串在Zabbix中查找主机。
  • zhostupdater.py – 更新主机属性。
  • zhproxyfinder.py – 为Zabbix主机查找配置的代理。
  • ztmplimport.py – 将 xml 模板导入 Zabbix。
  • zhtmplfinder.py – 查找Zabbix主机的链接模板。
  • zthostfinder.py – 查找链接到模板的主机。
  • zthtmllinker.py – 将主机( 群组组)的链接链接到模板列表。
  • zthtmlunlink.py – 将主机( 群组组) 与模板列表断开。
  • zhtrigfinder.py – 在主机上查找触发器。
  • ztrigswitcher.py – 将触发器切换为已经启用或者discabled状态。
  • zhostupdater.py – 更新主机属性。
  • zeventfinder.py – 基于过滤器(。包含 tail -f 模式) 查找事件。
  • zgetevent.py – 获取eventIds的详细信息,包括和ack警报操作。
  • zeventacker.py – 基于eventIds确认事件。

配置 Zabbix-gnomes

这些程序可以使用 .ini 风格的配置文件,来获取所需的API连接信息。它的配置文件默认为 $HOME/.zbx.conf,样例如下:

代码语言:javascript
复制
[Zabbix API]
username=debian
password=Debian-CN-Debian.cn
api=http://aws-zabbix-1/zabbix/
no_verify=true

将 no_verify 设置为 true 将在使用 https 时禁用 tls/ssl 证书验证。

脚本依赖 pyzabbix、pillow 模块:

代码语言:javascript
复制
pip install pyzabbix pillow

用法样例

将主机 www.debian.cn 的一个月的CPU负载数据保存为 ~/jan.png,具体时间跨度是 2019年01月至1月31日:

代码语言:javascript
复制
graphid=$(./zhgraphfinder.py -e p-hsg-mysql-2 | grep 'CPU load' | cut -d ':' -f 1)
./zgetgraph.py -s $(date --date 'jan 1 2019' +%s) -t 2678400 -f ~/jan.png $graphid

输出的图形如下:

使用 zproxyfinder.py 在 zabbix_sender 脚本中使用恰当的 Zabbix 代理,

代码语言:javascript
复制
zabbix_sender -k $ITEMKEY -o $ITEMVALUE -s $HOSTNAME -z $(zhproxyfinder.py $HOSTNAME)

使用 zhtmpllinker.py 将三个模板链接到指定的 hostgroup 中所有主机:

代码语言:javascript
复制
./zhtmpllinker.py -t "Template App Apache" "Template App MySQL" "Template OS Linux" -G "LAMP Servers"

使用 zhtmplunlink.py 将模板与 hostgroup 中的所有主机关联:

代码语言:javascript
复制
./zhtmplunlink.py -G "Webservers" -t "Template App MySQL"

从模板目录中,导入所有的 xml 模板,并详细显示导入过程:

代码语言:javascript
复制
./ztmplimport.py -v -C./templates/*.xml

从 itemid 为 12345 的监控项的最新项目值:

代码语言:javascript
复制
./zgethistory.py 12345 -C 1

从历史记录中查询一个监控项的值,并指定气质时间段:

代码语言:javascript
复制
./zgethistory.py -s $(date --date 'jan 1 2014' +%s) -t 7200 -e 1030

禁用主机名为 Google DNS 的主机上的,”Unavailable by ICMP”触发器:

代码语言:javascript
复制
./ztrigswitcher.py -D $(./zhtrigfinder.py -s "Unavailable by ICMP" -n "Google DNS")

在主机 webserver 上计算活动触发器的数目:

代码语言:javascript
复制
./zhtrigfinder.py -A "Webserver" | wc -l

switch 对 hostgroup 中所有主机的库存模式:

代码语言:javascript
复制
./zhinvswitcher.py -G"Linux Servers" -m manual

从 Zabbix 的资产清单中,列出所有的主机:

代码语言:javascript
复制
./zhinvswitcher.py --all-hosts

在指定的 hostgroup 中查找与以 mongo 开头的,名称匹配的主机列表:

代码语言:javascript
复制
./zghostfinder.py "mongodb of aws-sg1" | grep -i ^mongo

将指定主机的,可用内存的最后一个监控值打印出来:

代码语言:javascript
复制
./zgethistory.py -C 1 $(./zhitemfinder.py -k 'vm.memory.size[available]' -n Webserver)

对主机名中匹配字符串 zabbix 的所有受监控主机执行搜索,列出主机名:

代码语言:javascript
复制
./zhostfinder.py -m -S zabbix

从主机资产组中,以主机组为维度,按照指定关键字查询,生产一个 csv 文件:

代码语言:javascript
复制
./zgetinventory.py -G "Zabbix Servers" -F "os" "vendor" "contact" > report.csv

将主机名为 web001 的主机,名称更新为 webserver:

代码语言:javascript
复制
./zhostupdater.py web001 -V webserver

启用主机 web001,应用宏 {$APACHEPROC} 并更新资产表中的指定字段:

代码语言:javascript
复制
./zhostupdater.py web001 -E -M apacheproc=15 -I software_app_a="Apache"

查询最近一个小时内的,某主机组中的所有问题事件(限于 100个事件):

代码语言:javascript
复制
./zeventfinder.py -P -t 3600 -G 'Linux Servers' 

使用指定的确认消息,来确认 三个事件:

代码语言:javascript
复制
./zeventacker.py -m"Power outage" 6578 6689 6590

在三个事件上打印详细信息,包括触发注释,操作和确认:

代码语言:javascript
复制
./zgetevent.py -ACL 6578 6689 6590 

确认指定主机组中的主机上的所有的问题事件:

代码语言:javascript
复制
./zeventacker.py -m 'Foobar with Fabric :-(' $(./zeventfinder.py -i -P -t 900 -G 'Linux servers') 

所有主机的Zabbix触发器事件:

代码语言:javascript
复制
./zeventfinder.py -L 10 --all-hosts -f

组合命令样例,查询受监控主机中,某一类主机的指定key值的最新状态:

代码语言:javascript
复制
for i in $(./zhostfinder.py -m -S mysql); do echo -n $i\ \ \ ; ./zgethistory.py -C 1 $(./zhitemfinder.py -k 'net.if.in[eth0]' -n $i) ; done

使用 zapi.py API客户机测试Zabbix调用:

代码语言:javascript
复制
Logging in on 'https://zabbix.debian.cn/' with user 'Admin'.
Welcome to the interactive Zabbix API client.
zapi: z host.get(filter={"host":"Zabbix Server"})
[{u'hostid': u'1001'}]
zapi: 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • API工具:
  • 相关历史:
  • 配置 Zabbix-gnomes
  • 用法样例
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档