目录
- 1. API
- 1.1 API的简介
- 1.2 API的应用
- 1.2.1 验证 API 请求
- 1.2.2 远程查看监控主机
- 1.2.3 删除监控主机
- 1.2.4 创建监控主机
- 2. 对 httpd、nginx 的监控
- 2.1 配置agent端环境
- 2.1.1 web页面上给server2主机添加http模块
- 2.1.2 在server3上配置nginx服务
- 2.2 自定义配置监控项
- 2.2.1 获取活跃的连接数
- 2.2.2 获取接受请求数
1. API
1.1 API的简介
- API定义
API(Application Programming Interface),应用程序编程接口,是一些预先定义的函数;
目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部的工作机制的细节;
简单来说,API就是对外的接口,利用API可以直接到达软件硬件内部来进行操作。
- Zabbix中的API
Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
- Zabbix API 是基于 Web 的 API,作为 Web 前端的一部分提供。
a. API 包含一组独立的方法
b. 客户端和 API 之间的请求和响应通过使用 JSON 格式进行编码
- Zabbix API 的方法
检索 |
get |
创建 |
create |
更新 |
update |
删除数据 |
delete |
- Zabbix API的作用
zabbix拥有完善的API,基于JSON RPC提供资产,主机,主机组,监控项,告警等方面的接口。
在做运维自动化时,需要用API功能对zabbix二次开发。
Zabbix API为批量操作,第三方软件集成以及其他作用提供可编程接口。
Zabbix API提供两项主要功能:
1>远程管理Zabbix配置
2>远程检索配置和历史数据
- Zabbix API 的应用
Zabbix API 允许我们通过编程的方式检索和修改 Zabbix 的配置,并提供对历史数据的访问。
它广泛应用于:
创建新的应用程序来使用 Zabbix
将 Zabbix 与第三方软件集成
自动执行常规任务
- Zabbix API的工作流程如下:
API采用JSON-RPC实现这意味着调用任何函数,都需要向POST请求,输入输出数据都是以JSON格式
转备JSON对象,它描述了你想要做什么,比如创建主机、获取JSON格式响应.
1.2 API的应用
1.2.1 验证 API 请求
user.login |
用户登录 |
host.get(create |
delete |
hostgroup.get(create|delete|update) |
主机组操作 |
item.get(create|delete|update) |
监控项目操作 |
history.get |
历史数据查询 |
event.get |
事件查询 |
trigger.get |
触发器查询 |
[root@server1 ~]
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]
[root@server1 ~]
{
"id": 1,
"jsonrpc": "2.0",
"result": "dcfd223f76cc30d944133cc07f2300b5"
}
1.2.2 远程查看监控主机
当前有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据
[root@server1 ~]
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 1,
"auth": "dcfd223f76cc30d944133cc07f2300b5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool
1.2.3 删除监控主机
[root@server1 ~]
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10308"
],
"id": 2,
"auth": "dcfd223f76cc30d944133cc07f2300b5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool
1.2.4 创建监控主机
[root@server1 ~]
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": "192.168.1.13",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},"id": 1,
"auth": "dcfd223f76cc30d944133cc07f2300b5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool
2. 对 httpd、nginx 的监控
2.1 配置agent端环境
2.1.1 web页面上给server2主机添加http模块
2.1.2 在server3上配置nginx服务
[root@server3 ~]
[root@server3 ~]
nginx-1.18.0 nginx-1.18.0.tar.gz
[root@server3 ~]
[root@server3 nginx-1.18.0]
[root@server3 nginx-1.18.0]
[root@server3 nginx-1.18.0]
--with-http_stub_status_module enable ngx_http_stub_status_module
[root@server3 nginx-1.18.0]
[root@server3 nginx-1.18.0]
[root@server3 nginx-1.18.0]
[root@server3 conf]
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
[root@server3 nginx]
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server3 nginx]
[root@server3 conf]
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
2.2 自定义配置监控项
2.2.1 获取活跃的连接数
[root@server3 ~]
1
[root@server3 ~]
[root@server3 zabbix_agentd.d]
userparameter_mysql.conf
[root@server3 zabbix_agentd.d]
[root@server3 zabbix_agentd.d]
userparameter_mysql.conf userparameter_nginx.conf
[root@server3 zabbix_agentd.d]
[root@server3 zabbix_agentd.d]
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
[root@server3 zabbix_agentd.d]
- 在server1下载软件zabbix-get,来获取server3的活跃连接数
zabbix_get 是 zabbix 服务端的一个命令,用于检测 agent 端的配置是否正确,可以很方便地知道 key 是否能正常获取到数据
在测试自定义监控的时候特别有用
[root@server1 4.4]# yum install -y zabbix-get-4.4.1-1.el7.x86_64.rpm
[root@server1 4.4]# zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.active"
[root@server1 ~]
/boot/grub2/fonts
/run/media/root/RHEL-7.6 Server.x86_64/EFI/BOOT/fonts
/etc/fonts
/usr/lib64/firefox/fonts
/usr/share/doc/HTML/common/fonts
/usr/share/fonts
/usr/share/X11/fonts
/usr/share/cockpit/base1/fonts
/usr/share/cockpit/static/fonts
/usr/share/yelp/mathjax/fonts
/usr/share/yelp/mathjax/jax/output/HTML-CSS/fonts
/usr/share/zabbix/assets/fonts
/usr/include/X11/fonts
/westos/EFI/BOOT/fonts
[root@server1 ~]
[root@server1 assets]
fonts img styles
[root@server1 assets]
[root@server1 fonts]
graphfont.ttf
[root@server1 fonts]
[root@server1 fonts]
graphfont.ttf simkai.ttf
[root@server1 fonts]
[root@server1 include]
:%s/graphfont/simkai/g
web界面添加新的监控项
2.2.2 获取接受请求数
root@server1 include]# zabbix_get -s 192.168.1.13 -p 10050 -k "nginx.accept"
[root@server1 include]# cd /usr/share/zabbix/assets/fonts/
[root@server1 fonts]# ls
graphfont.ttf simkai.ttf
[root@server1 fonts]# chmod 777 simkai.ttf #注意文件权限,解决字体乱码
[root@server1 fonts]# ll
total 4040
lrwxrwxrwx. 1 root root 33 Aug 27 02:10 graphfont.ttf -> /etc/alternatives/zabbix-web-font
-rwxrwxrwx 1 root root 4135804 May 19 11:28 simkai.ttf
[root@server3 zabbix_agentd.d]# curl -s http://127.0.0.1/status
Active connections: 1
server accepts handled requests
1225 1225 1225
Reading: 0 Writing: 1 Waiting: 0