172.25.13.120
yum install zabbix-agent.x86_64 -y
vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.13.110 # 指定server主机,指定之后agent主机主动上报数据给server主机
ServerActive=172.25.13.110 # 开启之后,server主机主动前来agent主机提取数据
Hostname=toto2 # 指定本机的主机名称
启动服务,并设置服务开机自动启动
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
开启之后查看10050端口开启情况:已经正常开启
[root@toto2 ~]# netstat -antlp |grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11618/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 11618/zabbix_agentd
配置–>主机–>右上角创建主机–>主机:主集名称toto,可见名称toto2,群组添加linux server ,agent代理程序的接口,ip地址:172.25.13.120–>模板:链接指器,Template OS Linux -->点击最下面的添加.
然后在配置,主机,里面看是否添加成功。
需要一个一个的去进行添加。当需要进行添加的服务器数量加大的时候,实现存在困难
必须先进行配置动作,再进行配置自动发现
先在配置选项下面的动作选项:
配置自动发现:
创建自动发现规则,填写名称;ip范围;更新间隔;检查等:(Zabbix 客户端 “system.uname”)选中已启用
该过程是已经配置的好的agent主机,需要等待着被server主机按照一定的频率以及一定的条件(都在规则中进行规定)发现之后才能添加进监控。
过程:
在配置—>动作—>选择右上角为自动注册—>点击创建动作—>名称(随便写);新的触发条件 (主机名称 :toto2);已启用选中;操作 新的,添加主机;添加到主机群组 linux server;链接到模板 template os linux;添加;
差一个图!:
重新启动toto2主机上的zabbix-agent服务。然后等待toto2 主机被自动添加
api 应用程序编程接口。是一些预先定义的函数,或指软件系统不同组成部分衔接的约定 。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节
操作系统向编程人员提供了“程序与操作系统的接口,简称程序接口,又称应用程序接口 API(Application Programming Interface)。 该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得 OS 的服务,它也是程序能取得操作系统服务的惟一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序 。
Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
1 验证:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。
编辑脚本,运行来获取身份验证令牌:
vim zabbix-api.sh
[root@toto1 ~]# 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://172.25.13.110/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。
给文件执行权限:
[root@toto1 ~]# chmod +x zabbix-api.sh
[root@toto1 ~]# ll
total 8
drwx------ 7 root root 4096 Jul 6 23:03 7.6zabbix
-rwxr-xr-x 1 root root 287 Jul 7 03:05 zabbix-api.sh
运行脚本获得身份验证令牌:
[root@toto1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "bceaae1c86e8af627c7de0fc7de35825"
}
响应对象又包含以下属性:
jsonrpc - JSON-RPC协议的版本;
result - 方法返回的数据;
id - 相应请求的标识符。
-2 检索主机
我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。 例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :
只需要修改: zabbix-api.sh
脚本内容
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": "bceaae1c86e8af627c7de0fc7de35825" # 该处是上面获得的身份令牌
}' http://172.25.13.110/zabbix/api_jsonrpc.php |python -m json.tool
返回结果:
[root@toto1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1" # 显示已经添加进监控的主机Zabbix server
}
]
},
{
"host": "toto2",
"hostid": "10264",
"interfaces": [
{
"interfaceid": "3",
"ip": "172.25.13.120" # 显示已经添加进监控的主机toto2
}
]
}
]
}
3 删除主机:
使用 host.delete 方法删除指定的主机。
curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10264"
],
"id": 1,
"auth": "bceaae1c86e8af627c7de0fc7de35825"
}' http://172.25.13.110/zabbix/api_jsonrpc.php |python -m json.tool
运行结果:
[root@toto1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10264" #该主机已经被从监控中删除了
]
}
}
curl -s -XPOST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.create", # 模块添加主机
"params": { # 主机信息设置
"host": "toto2", # 主机名称
"interfaces": [ # 接口设置
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.13.120", # 主机ip
"dns": "",
"port": "10050" # 监控端口
}
],
"groups": [
{
"groupid": "2" # 主机群组
}
],
"templates": [
{
"templateid": "10001" # 连接的模板
}
]
},
"id": 1,
"auth": "bceaae1c86e8af627c7de0fc7de35825"
}' http://172.25.13.110/zabbix/api_jsonrpc.php |python -m json.tool
运行结果:
[root@toto1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10266" # 添加成功之后身成的hosttid
]
}
}