https://www.zabbix.com/documentation/3.4/zh/manual/api
概述
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
创建新的应用程序以使用Zabbix;
将Zabbix与第三方软件集成;
自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
该API包含一组独立的方法;
客户端和API之间的请求和响应使用JSON格式进行编码。
大多数API至少包含四种方法:
get
,create
,update
和delete
,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
在zabbix主机中:
在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login
方法完成。让我们假设你想要以标准Zabbix Admin用户身份登录。然后,你的JSON请求将如下所示:
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json ' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
让我们仔细看看请求对象。它具有以下属性:
jsonrpc
- API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0;
method
- 调用的API方法;
params
- 将被传递给API方法的参数;
id
- 请求的任意标识符;
auth
-用户认证令牌; 因为我们还没有一个,它的设置null。
如果你正确提供了凭据,API返回的响应将包含用户身份验证令牌:
[root@server1 ~]# vim zabbix-api.sh
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "22ee1f9e10f7e744094cffbd6ab5d198"
}
响应对象又包含以下属性:
jsonrpc
- JSON-RPC协议的版本;
result
- 方法返回的数据;
id
- 相应请求的标识符。
[root@server1 ~]# cat zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json ' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"id": 1,
"auth": "22ee1f9e10f7e744094cffbd6ab5d198"
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084"
},
{
"host": "server2",
"hostid": "10261"
}
]
}
删除hostid=10261的主机:
curl -s -X POST -H 'Content-Type: application/json ' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10261"
],
"id": 1,
"auth": "22ee1f9e10f7e744094cffbd6ab5d198"
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
web界面中显示主机已删除
创建主机:
[root@server1 ~]# cat zabbix-api.sh
curl -X POST -H 'Content-Type: application/json ' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.254.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "0"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "0424bd59b807674191e7d77572075f33",
"id": 1
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
这时在zabbix的web界面查看,server2主机已经出现
在server2里面做
rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
cd /etc/zabbix/
ls
vim zabbix_agentd.conf
server=172.25.254.1
serverActive=172.25.254.1
Hostname=server2
/etc/init.d/zabbix-agent start
得到一个nginx的源代码,进行编译
tar zxf nginx-1.14.0.tar.gz
yum install -y gcc pcre-devel zlib-devel ##解决依赖性
cd nginx-1.14.0
ls
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make && make install
vim /usr/local/nginx/conf/nginx.conf
在error_page 404上面加
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
ln -s /usr/local/nginx/sbin/nginx /sbin/
nginx -t
nginx
curl http://127.0.0.1/status
curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
cd /etc/zabbix
cd zabbix_agentd.d
cp userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
/etc/init.d/zabbix-agent restart
在zabbix主机中:
rpm -ivh zabbix-get-3.4.6-1.el7.x86_64.rpm
zabbix_get -s 172.25.254.1 -p 10050 -k "nginx.active"
进入浏览器界面
点进server2里面-->监控项-->创建监控--->名称:nginx_active,类型zabbix
的客户端,键值nginx.active,必须和server3里面写的保持一致,主机接口172.25.254.2:10050 -->图形 -->创建图形-->名称nginx_status-->图形类别为层积-->添加监控-->nginx_active--->预览-->便可以看见图形了
监控nginx的其他项
在server2里面做
curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}'
curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.accepts,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}'
UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'
/etc/init.d/zabbix-agent restart
在zabbix主机中
zabbix_get -s 172.25.254.2 -p 10050 -k "nginx.accepts"
zabbix_get -s 172.25.254.2 -p 10050 -k "nginx.handled"
zabbix_get -s 172.25.254.2 -p 10050 -k "nginx.requests"
进入浏览器界面
点进server2里面--监控项--创建监控---名称:nginx_accepts,类型zabbix的客户端,键值 nginx.accepts,必须和server3里面写的保持一致,主机接口172.25.254.2:10050-->名 称:nginx_handled,类型zabbix的客户端,键值nginx.handled-->名称:nginx_requests,类型 zabbix的客户端,键值nginx.requests(将三个值都添加进去)-->图形 --创建图形-- 名称nginx_status-->图形类别为层积--添加监控-- nginx_accepts,nginx.handled,nginx.requests--->预览-便可以看见图形了
mkdir /var/lib/zabbix
cd /avr/lib/zabbix/
vim .my.cnf ##隐藏文件
[mysql]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock
systemctl restart zabbix-agent
cd /etc/zabbix/zabbix_agentd.d/
ls
cat userparameter_mysql.conf | wc -l ##查看监控多少行,只有19行,所以我们要下载别的
得到一个percona-zabbix-templates-1.1.8-1.noarch.rpm包
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
cd /var/lib/zabbix/percona/templates
ls
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
cat userparameter_percona_mysql.conf | wc -l ##监控项有190行
systemctl restart zabbix-agent
cd /var/lib/zabbix/percona/scripts/
mysql_secure_installation
vim ss_get_mysql_stats.php.cnf
$mysql_user = 'root';
$mysql_pass = 'westos';
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
cd /tmp
cat localhost-mysql_cacti_stats.txt##有所显示
ll localhost-mysql_cacti_stats.txt
chown zabbix.zabbix localhost-mysql_cacti_stats.txt
进入浏览器
配置--模版--群组为templates/Databases ----倒入文件(zab_percona_mysql_template.xml)-->添加聚合图形--导入-- 群组percona templates --->配置--主机--zabbixserver--模版--链接指示器选择mysql server--.>添加----主机里面看,就多了190 个监控项
给zabbixserver配置
免费注册
配置应用,添加zabbix的应用,获得到一个应用key
在zabbix的主机里面做
cd /usr/lib/zabbix/alertscriptds/
得到一个包 oneitsm_zabbix_release-1.2.0.tar.gz
tar zxf oneitsm_zabbix_release-1.2.0.tar.gz -C /usr/lib/zabbix/
alertscriptds/
cd /usr/lib/zabbix/alertscriptds/
cd oneitsm/bin
yum install -y net-tools ##下载网关工具
route -n
route add default gw 172.25.254.56
vim /etc/resolv.conf
nameserver 114.114.114.114
ping baidu.com
cd /usr/lib/zabbix/alertscripts/oneitsm/bin
./install.sh 应用key
管理地址:http://172.25.17.111/zabbix
管理员帐号:Admin
管理员密码:zabbix
浏览器
管理--》报警媒介类型--》 创建媒介类型(oneitsm media)
管理--》用户--》创建用户--》用户(填写--》报警媒介(添加全写)
配置--》动作--》事件源(触发器)--》选择oneitsm action 启用 -->创建动作--》名称 oneitsm action 触发器名称--》
在真机里面做
iptables -t nat -nL
iptables -t nat -I POSTROUTING -s 172.25.0.0/24 -j MASQUERADE
iptables -t nat -nL
测试
让server2里面的/etc/init.d/zabbix-agent stop
##观看会不会发送报警