利用zabbix API进行管理

简介:

    zabbix 现在之所以那么流行,个人感觉跟zabbix 强大的API有一个很大的关系,利用API可以帮我们完成很多事情:

    1、获取相关组,主机信息。

    2、比如有人喜欢获取历史数据重新出图。

    3、添加删除主机,绑定删除模板。

    4、添加删除维护周期


这里我使用pipy提供的zabbix_client模块来进行,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可:


1、安装zabbix_client:

 pip install zabbxi_client


2、API管理脚本,替换成自己用户名密码即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#coding:utf-8
import  time
from  zabbix_client  import  ZabbixServerProxy
class  Zabbix():
     def  __init__( self ):
         self .zb  =  ZabbixServerProxy( "http://192.168.10.100/zabbix" )
         self .zb.user.login(user = "Admin" , password = "zabbix" )
      ############## 查询组所有组获取组id ###############
     def  get_hostgroup( self ):
         data  =  {
            "output" :[ 'groupid' , 'name' ]
          }
         ret  =  self .zb.hostgroup.get( * * data)
         return  ret 
   
      ########### 通过组id获取相关组内的所有主机 ###############
1
2
3
4
5
6
7
8
9
10
11
12
13
     def  get_hostid( self ,groupids = 2 ):
         data  =  {
         "output" : [ "hostid" "name" ],
         "groupids" : groupids
         }
         ret  =  self .zb.host.get( * * data)
         return  ret
      ########## 通过获取的hostid查找相关监控想itemid ###################
     def  item_get( self , hostids = "10115" ):
         data  =  {
        "output" :[ "itemids" , "key_" ],
        "hostids" : hostids,
         }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
         ret  =  self .zb.item.get( * * data)
         return  ret
   ######### 通过itemid(传入itemid和i0表示flast类型)获取相关监控项的历史数据 ###########
     def  history_get( self , itemid, i ,limit = 10 ):
         data  =  "output" "extend" ,
           "history" : i,
           "itemids" : [itemid], 
           "limit" : limit 
           }
         ret  =  self .zb.history.get( * * data)
         return  ret
   
    ###############添加主机并且指定到组(传入主机名,IP地址和组ID)#####################
     def  add_zabbix_host( self ,hostname = "test_zabbix" ,ip = "192.168.10.100" ,groupid = "2" ):
         data  =  {
          "host" : hostname,
          "interfaces" : [
             {
                 "type" 1 ,
                 "main" 1 ,
                 "useip" 1 ,
                 "ip" : ip,
                 "dns" : "",
                 "port" "10050"
             }
          ],
          "groups" : [
              {
                 "groupid" : groupid
              }
          ]
         }
         ret  =  self .zb.host.create(data)
         return  ret
     #####################查看现有模板#######################
     def  get_template( self ):
         datalist  =  []
         datadict = {}
         data  =  {
             "output" :[ "templateid" , "name" ]
         }
         ret  =   self .zb.template.get(data)
         for  in  ret:
             datadict[i[ 'name' ]]  =  i[ 'templateid' ]
             datalist.append(datadict)
         return  datalist 
     
      #################### 关联主机到模板##################################
     def  link_template( self , hostid = 10156 , templateids = 10001 ):
         data  =  {
             "hostid" :hostid,
              "templates" :templateids
         }      
   
         ret  =  self .zb.host.update(data)
         return  ret
    
     ###################  添加维护周期,,######################################
  
     def  create_maintenance( self ,name = "test" ,hostids = 10156 ,time = 2 ):
         data  =   {
             "name" : name,
             "active_since" 1458142800 ,
             "active_till" 1489678800 ,
             "hostids" : [
                 hostids
             ],
             "timeperiods" : [
                 {
                     "timeperiod_type" 0 ,
                     "period" 3600
                 }
             ]
         }
         ret  =  self .zb.maintenance.create(data)
         self .host_status( 10130 1 )
         return  ret
     ################获取维护周期,,#########################
     def  get_maintenance( self ):
         data  =  {
             "output" "extend" ,
             "selectGroups" "extend" ,
             "selectTimeperiods" "extend"
         }
         ret  =  self .zb.maintenance.get(data)
         return  ret
     ##############获取维护周期之后,通过传入maintenanceid删除维护周期###########
     def  del_maintenance( self ,maintenanceids):
         return  self .zb.maintenance.delete(maintenanceids) 
     #########################添加维护周期时候需要吧zabbix_host设置成非监控状态##################
     def  host_status( self , hostid, status):
         data  =  {
             "hostid" :hostid,
             "status" :status
         }
         return  self .zb.host.update(data)
     ###########通过hostids删除主机id,顺带也删除模板#########
     
     def  host_del( self ,hostids = 10155 ):
         return  self .zb.host.delete(hostids)
if  __name__  = =  "__main__" :
     zabbix_server  =  Zabbix()
     #print zabbix_server.get_hostgroup()
     #print zabbix_server.get_hostid()
     #print zabbix_server.item_get(10156)   
     #data = zabbix_server.history_get("24889",0) 
     #print zabbix_server.get_hostgroup()
     #print zabbix_server.add_zabbix_host()
     #data = zabbix_server.get_template()
     #print data[0]['Template OS Linux']
     #print zabbix_server.link_template()
     #print zabbix_server.create_maintenance()
    # print zabbix_server.host_del(10155)
     #print zabbix_server.get_maintenance()
     print  zabbix_server.del_maintenance( 15 )

zabbix视频请移步:http://www.roncoo.com/details/fb3050a5b34b42f39ccad83ebebc89c1


zabbix自动化课程目录(需求更新中):


1、zabbix生产环境如何使用

2、saltstack批量部署zabbix_agent

3、zabbix API简单使用讲解

4、web UI讲解

5、开始监控之添加一个简单的linux监控

6、zabbix 强大的内置key讲解

7、内置key的使用、 端口、用户数、磁盘读取状态出图

8、trigger表达式学习,实现用户登录数,端口检查告警

9、zabbix邮件告警设置与维护周期

10、zabbix自定义Key添加,tcp状态模板编写

11、自定义监控之、监控nginx解析与实现

12、自定义监控之php-fpm监控

13、自定义监控之mysql状态监控

14、自定义监控之缓存服务器memcached,redis监控

15、自动化之saltstack管理zabbix,批量推送key生效

16、zabbix自动发现绑定删除模板,自动注册

17、zabbix lld发现讲解以及端口发现监控告警出图

18、zabbix lld 发现web站点以及批量获取状态码

19、zabbix lld复习和监控磁盘的运行状况

20、zabbix生成环境规范和按月生成报表资源统计

21、微信公众号告警











本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1827151,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
Java API Maven
淘东电商项目(05) - Swagger及网关统一管理API
淘东电商项目(05) - Swagger及网关统一管理API
70 0
|
4月前
|
安全 大数据 API
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
58 0
|
9月前
|
JSON 监控 前端开发
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据
292 0
|
5月前
|
Java API Maven
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
54 0
|
1月前
|
监控 供应链 测试技术
如何利用API接口进行高效的商品变体管理?
要利用API接口进行高效的商品变体管理,您需要执行一系列策略和技术步骤来确保数据的准确性和实时性。以下是详细的指南:
|
6月前
|
JSON 数据可视化 安全
Swagger 管理 API 的一些经验分享
Swagger 管理 API 的一些经验分享
106 0
|
3月前
|
运维 监控 前端开发
功能强大的国产API管理神器 Eolink,亲测好用
功能强大的国产API管理神器 Eolink,亲测好用
23 0
功能强大的国产API管理神器 Eolink,亲测好用
|
4月前
|
消息中间件 Kafka API
kafka topic 管理api
kafka topic 管理api
34 0
|
4月前
|
算法 关系型数据库 API
Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
42 0
|
5月前
|
API
Vue3.0实现todolist-使用状态管理的api
Vue3.0实现todolist-使用状态管理的api
22 1

推荐镜像

更多