说明
Zabbix_manager是Zabbix终端管理工具,可以在linux 终端实现管理Zabbix
同时可以通过Zabbix_manager实现对Zabbix的一键初始化,一键导出报表(报表为excel)等功能。
Zabbix_manager的应用场景。
- 需要多次部署实施Zabbix
- 日常Zabbix管理
- 日常导出Zabbix报表
Zabbix_manager安装及配置
安装Zabbix_manager
[root@localhost ~]# yum -y install git
[root@localhost ~]# git clone https://github.com/BillWang139967/zabbix_manager.git
[root@localhost ~]# cd zabbix_manager
[root@localhost ~]# sh start.sh
常见问题
git clone 失败
[root@localhost ~]# git clone https://github.com/BillWang139967/zabbix_manager.git
Initialized empty Git repository in /root/zabbix_manager/.git/
error: while accessing https://github.com/BillWang139967/Vim.git/info/refs
fatal: HTTP request failed
解决方法
[root@localhost ~]# git config --global http.sslVerify false
Zabbix_manager配置
# 配置文件位置/etc/zabbix_tool/zabbix_config.ini
[root@localhost zabbix_manager]# vim /etc/zabbix_tool/zabbix_config.ini
[zabbixserver] #默认连接(可通过--profile选择连接的zabbix)
server = 172.168.1.75 #zabbix server IP
port = 80 #zabbix web端口
user = admin #zabbix web管理员账号
password = 123456 #zabbix web管理员密码
# zabbix_api 可以进行管理多台zabbix server 只需要在配置文件中增加如下配置即可,加入要对 [bendi] 的机器进行管理,在命令行后跟--profile bendi即可
[bendi]
server = 172.168.1.76
port = 80
user = admin
password = zabbix
名词解释
host:被监控的设备,服务器,交换机等等
item:被监控的设备上的一个监控点,比如[Free disk space on /]
trigger:触发器(报警点),比如[Free disk space on /] 小于 20%时
action:trigger触发后的动作,比如发邮件,被监控的设备自动注册时的动作等等,
event:zabbix server 每次收到数据后,如果此item有trigger,则会将收到的值与trigger进行比较,并记录状态
graph:自定义图表
screen:graph的集合,需要手动维护
history:每个item每次获取到的数据
trend:针对每个item,每个小时的min,max,avg的值
运行及帮助
运行
直接执行zabbix_api输出帮助信息
[root@localhost ~]# zabbix_api
输出 zabbix_api 成员函数信息以及选项
运行方式
[root@Ansible ~]# zabbix_api function param [options]zabbix_api
方法名 参数 选项(非必须)
如[root@Ansible ~]# zabbix_api host_get
如果方法名对应的参数个数不对,会默认输出此方法的提示
hostgroup管理
主机组列表
--table选项使得输出以列表输出,默认以text输出
[root@Ansible ~]# zabbix_api hostgroup_get
zabbix_manager:[1.4.04]
[hostgroupID] [hostgroupName]
[5] [Discovered hosts]
[7] [Hypervisors]
[2] [Linux servers]
[1] [Templates]
[12] [Templates/Applications]
[13] [Templates/Databases]
[8] [Templates/Modules]
[9] [Templates/Network devices]
[10] [Templates/Operating systems]
[11] [Templates/Server hardware]
[14] [Templates/Virtualization]
[16] [V3.0测试环境]
[15] [v4.0测试环境]
[6] [Virtual machines]
[4] [Zabbix servers]
sum: 15
创建主机组
[root@Ansible ~]# zabbix_api hostgroup_create "ceshi"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "create hostgroup [17] OK"}
host管理
主机列表
[root@Ansible ~]# zabbix_api host_get --table
创建主机(可设置自动创建,故不常用)
场景:创建主机
操作说明:zabbix_api host_create 主机IP 主机名 主机组名 需要链接的模板名
[root@Ansible ~]# zabbix_api host_create 192.168.1.79 "Test" "ceshi" "Template OS Linux by Zabbix agent"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "create host:[Test] hostid:[10368] OK"}
删除主机
场景:删除不需要的主机
操作说明:zabbix_api host_delete 主机名
[root@Ansible ~]# zabbix_api host_delete "Test"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "delete host:[Test] id:[10368] OK"}
批量对主机进行clear 指定模板
场景:某个模板需要clear时
操作说明:zabbix_api hosts_template_clear 模板名
注:可以使用--hostgroupid,--hostid两个选项进行对特定主机或者主机组进行clear模板操作
[root@Ansible ~]# zabbix_api hosts_template_clear "Template Module Generic SNMPv1"
zabbix_manager:[1.4.04]
clear template [Template Module Generic SNMPv1]...
host:[Test] ip:[192.168.1.79] OK
[root@Ansible ~]# zabbix_api hosts_template_clear "Template OS Linux by Zabbix agent" --hostid 10368
zabbix_manager:[1.4.04]
clear template [Template OS Linux by Zabbix agent]...
host:[Test] ip:[192.168.1.79] OK
批量对主机进行link指定模板
场景:批量对主机进行link指定模板(不加参数,默认为全部主机)
操作说明:zabbix_api hosts_template_link 模板名
[root@Ansible ~]# zabbix_api hosts_template_link "Template DB MySQL"
注:可以使用--hostgroupid,--hostid两个选项进行对特定主机或者主机组进行clear模板操作
[root@Ansible ~]# zabbix_api hosts_template_link "Template DB MySQL" --hostid 10368
zabbix_manager:[1.4.04]
link template [Template DB MySQL]...
host:[Test] ip:[192.168.1.79] OK
用户管理
用户组列表
[root@Ansible ~]# zabbix_api usergroup_get --table
创建用户组
[root@Ansible ~]# zabbix_api usergroup_create "ceshi_usergroup" "Linux servers"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "create usergroup:[ceshi_usergroup] id:[13] is OK"
删除用户组
[root@Ansible ~]# zabbix_api usergroup_delete "ceshi_usergroup"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "delete usergroup [ceshi_usergroup] OK"}
用户列表
[root@Ansible ~]# zabbix_api user_get --table
zabbix_manager:[1.4.04]
+--------+-------+--------+-----+
| userid | alias | name | url |
+--------+-------+--------+-----+
| 1 | Admin | Zabbix | |
| 2 | guest | | |
+--------+-------+--------+-----+
sum: 2
创建用户
格式:zabbix_api user_create 用户名 密码 组名 报警媒介 接受报警账号
[root@Ansible ~]# zabbix_api user_create "test" "123456" "test" "alerts" "[email protected]"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "create user:[test] id:[3] OK"}
删除用户
[root@Ansible ~]# zabbix_api user_delete test
zabbix_manager:[1.4.04]
{"status": "OK", "output": "delete user:[test] id:[3] OK"}
template管理
template列表
[root@Ansible ~]# zabbix_api template_get
template模板导入
template模板路径尽量使用绝对路径,相对路径是以/tmp/为基本目录
[root@Ansible ~]# zabbix_api template_import "/tmp/zbx_export_templates.xml"
zabbix_manager:[1.4.04]
{"status": "OK", "output": "import template [/tmp/zbx_export_templates.xml] OK"}
action(动作)管理
action列表
[root@Ansible ~]# zabbix_api action_get --table
sh_menu
此工具与zabbix_api命令搭配使用
日常工作时有些命令是重复性操作,可以将这些日常重复使用的命令写成脚本放在zabbix_manager/ZabbixTool/sh_menu/Function目录中
# 操作方法
1)将日常需要调用zabbix_api命令的脚本放在zabbix_manager/ZabbixTool/sh_menu/Function目录中
2)执行zabbix_manager/ZabbixTool/main.sh -c 进行手动更新菜单
3)执行zabbix_manager/ZabbixTool/main.sh 进行日常管理
zabbix安装后一键配置
配置内容
一键配置主要是配置以下内容
创建自动注册action ,使用脚本安装的agent会自动添加到[Linux servers]中
创建[alerts]脚本报警设置
创建用户群组[op_group],并对[Linux servers]拥有可管理权限
创建用户[op],属于用户群组[op_group],密码为123456,同时邮箱为"[email protected]"
创建触发器 action,设置发生问题使用[alerts]邮件方式发送到设置的邮箱
脚本位置及脚本内容
脚本位置:/tmp/ZabbixTool/scripts/init.sh
#!/bin/bash
zabbix_api action_autoreg_create "ceshi_action" "Linux servers"
zabbix_api mediatype_create alerts alerts.py
zabbix_api usergroup_create "op_group" "Linux servers"
zabbix_api user_create op 123456 "op_group" alerts "[email protected]"
zabbix_api action_trigger_create "trigger_action" "op_group" "alerts"
zabbix日常使用报表
日常使用报表
加个crontab,可以定期导出报表哦,
item在一段时间内的最高值、平均值、最小值等
item支持模糊搜索
1)对监控名称进行分隔符分割后,进行完全匹配,如某个监控项名称为"CPU idle time" 则搜索CPU即可匹配,搜索CP,则不匹配
2)--sign 设置分割符,默认以" "(空格)分割,如某个监控项名称为"CPU_idle_time" 则搜索CPU相关的监控项,同时加"--sign _"参数
文件系统的使用情况等
支持选择特定主机组或者主机
注意:日常使用报表需要zabbix server 3.0.x以上支持(程序中会调用3.0.x 新增的trend_get接口支持)
可以通过--hostgroupid,--hostid选择特定主机
格式:zabbix_api --report "监控项名称" "起始时间" "结束时间" --table --hostid 用户ID
# 用户ID可通过zabbix_api host_get --table查看
[root@Ansible ~]# zabbix_api --report "CPU" "2020-04-30 00:00:00" "2020-04-30 10:00:00" --table --hostid 10369
格式:zabbix_api --report "监控项名称" "起始时间" "结束时间" --table --hostgroupid 用户组ID
# 用户组ID可通过zabbix_api hostgroup_get --table查看
[root@Ansible ~]# zabbix_api --report "CPU" "2020-04-30 00:00:00" "2020-04-30 10:00:00" --table --hostgroupid 17
输出显示时加--xls /tmp/test.xls可以导出excel文件到/tmp目录
# 报表
实例
默认监控项名称是以空格分隔的,假如要搜索的字符串是以其他字符串分割,可以通过 "--sign 分隔符"进行设置分隔符
[root@Ansible ~]# zabbix_api --report "Cpu" "2020-04-29 00:00:00" "2020-04-30 00:00:00" --table --sign _
- 输入编号:6906,直达文章
- 输入m|M,直达目录列表