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

2020-01-21 14:35:39 浏览数 (1)

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: 

0 人点赞