运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
DevOps学院

DevOps学院

中国新一代IT在线教育平台
我买云

我买云

企业级开源运维解决方案

Zabbix API初步入门

Zabbix赵班长 发表了文章 • 0 个评论 • 164 次浏览 • 2018-12-30 18:42 • 来自相关话题

    Zabbix API是实现Zabbix自动化监控的主要手段之一,你可以使用Zabbix Agent的自动注册功能,也可以使用网络自动发现功能,但是这些功能各有各的缺点。如果编写脚本对你来说没有压力,我跟建议Zabbix的所有自动化功能全部使用API的方 ...查看全部
    Zabbix API是实现Zabbix自动化监控的主要手段之一,你可以使用Zabbix Agent的自动注册功能,也可以使用网络自动发现功能,但是这些功能各有各的缺点。如果编写脚本对你来说没有压力,我跟建议Zabbix的所有自动化功能全部使用API的方式来完成。
 

图片1.png

 
 
1.登录API接口
 
## 登录认证
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

 


执行完毕,会访问一个Auth Token,需要保留下来,后面的操作中需要使用


 
2.使用Python调用Zabbix API
 
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests
import json

url = 'http://zabbix.unixhot.com/zabbix/api_jsonrpc.php'
post_data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "api-user",
"password": "zabbix"
},
"id": 1
}
post_header = {'Content-Type: application/json'}

ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
print ret.text

 
3.显示所有主机:注意替换auth token。
 
## 显示所有主机
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "3593bc5a0a3b62a5b7f8c3a9c3b9f59f",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -mjson.tool

 
查询所有主机组:
## 显示所有主机组
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend"
},
"auth": "3593bc5a0a3b62a5b7f8c3a9c3b9f59f",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -mjson.tool

 
查询所有模板:
## 显示所有模版
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend"
},
"auth": "3593bc5a0a3b62a5b7f8c3a9c3b9f59f",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -mjson.tool

Zabbix告警脚本-Python发送邮件

Zabbix赵班长 发表了文章 • 0 个评论 • 119 次浏览 • 2018-12-30 10:08 • 来自相关话题

自定义Zabbix告警,首先需要编写告警脚本,告警脚本需要支持3个参数:        1.告警接收人      2.主题      3.内容   生产建议使用Shell脚本作为告警脚本, ...查看全部
自定义Zabbix告警,首先需要编写告警脚本,告警脚本需要支持3个参数:
 
     1.告警接收人
     2.主题
     3.内容
 
生产建议使用Shell脚本作为告警脚本,同时需要日志记录,也可以在Shell脚本中完成,然后可以再使用Shell脚本调用其它的脚本。这样可以随时更换告警介质,也可以做好日志记录。
 
 
1.最简单的告警脚本
 
[root@linux-node1 alertscripts]# cat pymail.sh 
#!/bin/bash
echo $1 $2 $3 >> /tmp/alter.txt

 
2.编写告警脚本
#!/usr/bin/python
#coding: utf-8
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header
from email.Utils import COMMASPACE

receiver = sys.argv[1]
subject = sys.argv[2]
mailbody = sys.argv[3]
smtpserver = 'smtp.qq.com'
username = 'username'
password = 'passwd'
sender = username

msg = MIMEText(mailbody,'html','utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = username
msg['To'] = receiver

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.starttls()
smtp.sendmail(msg['From'], msg['To'], msg.as_string())
smtp.quit()

 
测试邮件发送
 
[root@linux-node1 alertscripts]# python pymail.py 57459267@qq.com testmail test

 
加入到告警脚本中
 
#!/bin/bash
/usr/local/bin/python /usr/lib/zabbix/alertscripts/pymail.py "$1" "$2" "$3"