企业级监控系统——Zabbix——API的简介与使用
1. 什么是API
API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
2. Zabbix API
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
- 该API包含一组独立的方法;
- 客户端和API之间的请求和响应使用JSON格式进行编码。
3. API的使用示例
3.1 获取身份令牌
在server1中:
vim zabbix-api
curl -XPOST -H "Content-Type: application/json-rpc" -d ' #构建一个API的请求头
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.1.1/zabbix/api_jsonrpc.php
chmod +x zabbix-api
./zabbix-api
可以看到,当我们运行脚本之后,会返回一个用户身份验证令牌,但是格式不太好看,我们可以加入 json 模块:
vim zabbix-api
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api
3.2 检索主机
我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。
再开一台server1:
>zabbix-api
vim zabbix-api
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "6fc9c0869a025ec464754ec7b5c955a1" #这里填写之前我们获取到的身份令牌
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
./zabbix-api
3.3 删除主机
>zabbix-api
vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10308" #这里填写上面获取到的主机id
],
"auth": "6fc9c0869a025ec464754ec7b5c955a1", #这里填写之前我们获取到的身份令牌
"id": 2
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
接下来我们将自动发现和自动注册停用掉,否则你删除之后又会自动添加,我们就看不到效果了。
#执行
./zabbix-api
可以看到,在监控界面已经将server3主机删除掉了:
3.4 创建主机
>zabbix-api
vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.1.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" #可以在监控页面点击配置-->主机群组后,网址上看到groupid
}
],
"templates": [
{
"templateid": "10001" #可以在监控页面点击配置-->模板后,随便点击一个模板,在网址处可以看到templates
}
]
},
"auth": "6fc9c0869a025ec464754ec7b5c955a1",
"id": 2
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
#执行
./zabbix-api
执行完毕后,在监控界面可以看到,已经将server3主机创建并添加进去:
更多的使用示例可以参考Zabbix官网的使用手册API部分