Linux运维之zabbix(二)添加监控主机
- 添加监控主机的几种方式
实验环境准备:
server1:作为zabbix-server
server2:被监控的主机,作为zabbix-agent
在server2安装zabbix-agent:
vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.1 # 指定server主机,指定之后agent主机主动上报数据给server主机
ServerActive=172.25.254.1 # 开启之后,server主机主动前来agent主机提取数据
Hostname=server2 # 指定本机的主机名称
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
- 1.手动创建主机
配置–>主机–>右上角创建主机–>主机:主集名称toto,可见名称toto2,群组添加linux server ,agent代理程序的接口,ip地址:172.25.254.2–>模板:链接指器,Template OS Linux -->点击最下面的添加.
创建主机:
添加模板:
手动添加完成后上面的zbx为灰色,还为启用,需要在server2上配置agent并且开启zabbix-agent服务
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
文件需要修改的内容如下:
98 Server=172.25.254.1
139 ServerActive=172.25.254.1
150 Hostname=server2
开启agent服务
[root@server2 ~]# systemctl start zabbix-agent
再次刷新页面,显示server2可用
- 2.自动发现
1.在web页面创建自动发现
添加自动发现规则:
添加自动发现动作:
添加自动发现规则:
在主机server3上配置zabbix-agent
//zabbix-agent的安装
[root@server3 ~]# ls
anaconda-ks.cfg zabbix-agent-4.0.5-1.el7.x86_64.rpm (准备安装包)
[root@server3 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
[root@server3 ~]# ls
anaconda-ks.cfg zabbix-agent-4.0.5-1.el7.x86_64.rpm
[root@server3 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
//配置文件的修改
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.254.1
139 ServerActive=172.25.254.1
150 Hostname=server3
//开启zabbix-agent服务
[root@server3 ~]# systemctl start zabbix-agent
再次刷新页面发现server3主机已经添加进来并且显示可用
- 3.自动注册
删除server3主机,并且禁用自动发现
修改动作为自动注册并且启用
创建动作:
为动作添加操作:
在server3上重新启动zabbix-agent服务,刷新页面查看
- 4.api
api 应用程序编程接口。是一些预先定义的函数,或指软件系统不同组成部分衔接的约定 。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节
操作系统向编程人员提供了“程序与操作系统的接口,简称程序接口,又称应用程序接口 API(Application Programming Interface)。 该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得 OS 的服务,它也是程序能取得操作系统服务的惟一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序 。
Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
编辑脚本,运行来获取身份验证令牌:
vim zabbix-api.sh
[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://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。
给文件执行权限:
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# 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@server1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": "bceaae1c86e8af627c7de0fc7de35825"
}
响应对象又包含以下属性:
jsonrpc - JSON-RPC协议的版本;
result - 方法返回的数据;
id - 相应请求的标识符。
检索主机
我们现在有一个有效的用户身份验证令牌,可以用来访问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.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",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1" # 显示已经添加进监控的主机Zabbix server
}
]
},
{
"host": "server2",
"hostid": "10264",
"interfaces": [
{
"interfaceid": "3",
ip": "172.25.13.120" # 显示已经添加进监控的主机server2
}
]
}
]
}
删除主机:
使用 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.254.1/zabbix/api_jsonrpc.php |python -m json.tool
运行结果:
[root@server1 ~]# ./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": "server2", # 主机名称
"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.254.1/zabbix/api_jsonrpc.php |python -m json.tool
运行结果:
[root@server1 ~]# ./zabbix-api.sh
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10266" # 添加成功之后身成的hosttid
]
}
}
END