利用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,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Linux API 数据安全/隐私保护
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
81 0
|
Java API Maven
淘东电商项目(05) - Swagger及网关统一管理API
淘东电商项目(05) - Swagger及网关统一管理API
103 0
|
7月前
|
安全 大数据 API
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
297 0
|
7月前
|
监控 Cloud Native 安全
【阿里云云原生专栏】云原生下的API管理:阿里云API Gateway的应用场景与优势
【5月更文挑战第23天】阿里云API Gateway是高性能的API托管服务,适用于微服务API聚合、安全管理及流量控制。它提供统一入口、多种认证方式和流量控制策略,确保服务稳定性。具备高度可扩展性、丰富插件生态和简化API生命周期管理等特点。通过简单步骤,如创建API、配置后端服务、设置认证和发布,即可快速上手。作为云原生时代的API管理解决方案,阿里云API Gateway助力企业高效、安全地管理API,推动业务创新和数字化转型。
99 1
|
7月前
|
存储 自然语言处理 搜索推荐
Elasticsearch 8.10 同义词管理新篇章:引入同义词 API
Elasticsearch 8.10 同义词管理新篇章:引入同义词 API
171 1
|
7月前
|
前端开发 JavaScript API
React的Context API:全局状态管理的利器
【4月更文挑战第25天】React的Context API解决了深层组件间状态共享的难题,提供全局状态管理方案。通过`Provider`和`Consumer`组件,或结合`useContext` Hook,实现状态在组件树中的传递。最佳实践包括避免过度使用,分离逻辑,以及在必要时与Redux或MobX结合。Context API简化了数据传递,但需谨慎使用以保持代码清晰。
|
Java API Maven
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
微服务技术系列教程(27) - SpringCloud- Zuul整合Swagger管理微服务所有API
98 0
|
7月前
|
Linux API 网络架构
Rest API请求管理最佳实践:RestClient-cpp库的应用案例
Rest API请求管理最佳实践:RestClient-cpp库的应用案例
|
7月前
|
JSON JavaScript API
访问REST API:在Vue中消费和管理远程数据
【4月更文挑战第23天】本文探讨了在Vue应用中高效访问REST API的方法,包括选择合适的API、使用Axios或Fetch发送请求、封装API服务、处理响应和数据、错误管理及性能优化。关键点在于创建服务层封装请求,使用计算属性和方法处理数据,以及实施错误处理和性能提升策略。通过这些最佳实践,开发者能更好地管理和消费远程数据,构建出动态、响应式的Vue应用。
70 0
|
7月前
|
供应链 数据挖掘 API
淘宝API接口系列:数据分析丨Erp上货丨维权控价丨商品搬家丨店铺订单管理
淘宝API接口系列在多个方面为电商业务提供了强大的支持,包括数据分析、ERP上货、维权控价、商品搬家以及店铺订单管理。下面将针对这些方面逐一进行说明。

推荐镜像

更多