zabbix介绍:
- zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix由2部分构成,zabbix server与可选组件zabbix agent。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
- zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
- zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
- 要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
主要功能:CPU负荷,内存使用,磁盘使用,网络状况,端口监视,日志监视。
官网:https://www.zabbix.com 下载安装包以及查看官方文档。
服务搭建:
安装 Zabbix server 并使用 MySQL 数据库
yum install zabbix-server-mysql.x86_64 -y
安装 Zabbix 前端
yum install zabbix-web-mysql -y
安装数据库mariadb并进行安全初始化:
yum install mariadb-server.x86_64 -y
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
登陆数据库并在数据库中创建库以及用户并进行授权:
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';
导入数据,使用 MySQL 来导入 Zabbix server 的初始数据库 schema 和数据
由于该数据较多,导入的过程较长,不能中途打断。
成功后可进入数据库查看
mysql -p
use zabbix;
show tables;
配置zabbix server 配置文件
/etc/zabbix/zabbix_server.conf116 DBUser=zabbix
#这里的密码是zabbix用户的密码,不是数据库的登录密码
124 DBPassword=westos
启动 Zabbix server 进程
查看端口开启没:
httpd服务配置
需要在前端web页面展示监控结果。需要httpd服务开启并设置开机自动启动
/etc/httpd/conf.d/zabbix.confphp_value date.timezone Asia/Shanghai
测试zabbix server 是否设置好,在物理机浏览器进行测试 http://192.168.13.111/zabbix/setup.php
点击Next step,之后会看到一个页面,显示检查php的结果
继续往下,输入密码,密码是mysql中的密码
名字随便来一个把
显示成功安装的页面
登陆zabbix(默认用户是Admin,密码是zabbix)
登陆成功后,显示了以下的界面,点击右上角的"小人"头像
点击后选择language为Chinese(以便我们之后更好的操作),注意这里也可以更改密码。
监控的四种添加主机方式:
首先我们要做的是:
配置zabbix agent IP为192.168.13.112
yum install zabbix-agent.x86_64 -y
装好之后修改配置文件
vim /etc/zabbix/zabbix_agentd.conf98 Server=192.168.13.111 指定server主机,agent主机主动上报数据给server主机
139 ServerActive=192.168.13.111 server主机主动前来agent主机提取数据
150 Hostname=server2 指定本机的主机名称
启动服务,并设置服务开机自动启动
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
开启之后查看10050端口开启情况:已经正常开启
netstat -antlp
1 . 手动添加:
配置–>主机–>右上角创建主机
选好后在填下模板
添加完毕后的界面应该是这样的
手动的弊端就在于需要一个一个的去进行添加。当需要进行添加的服务器数量加大的时候,实现存在困难。
2 . 自动发现:
将之前创建的主机删除,避免其影响之后的结果
创建自动发现规则,填写名称;ip范围;更新间隔;检查等:(Zabbix 客户端 “system.uname”)选中已启用
然后查看新的主机是否被发现上线。
该过程是已经配置的好的agent主机,需要等待着被server主机按照一定的频率以及一定的条件(都在规则中进行规定)发现之后才能添加进监控。
3 . 自动注册:
- agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。
- 当以前未知的active agent要求检查时,会发生自动注册。
- 这样功能可以非常方便的自动监控新的Cloud节点。一旦在Cloud中有一个新节点,Zabbix将自动启动host的性能和可用性数据的收集。
在浏览器中点击配置->自动发现,点击“已启用”将自动发现禁用(也可以将其打上对勾,选择底下的禁用)
在配置—>动作—>选择右上角为自动注册—>点击创建动作
操作 新的,添加主机;添加到主机群组 linux server;链接到模板 template os linux;添加;
重新启动server2主机上的zabbix-agent服务。然后等待server2 主机被自动添加
4 . Api
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。
(1)它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
主机和主机组
什么是“主机”?
- 一般来讲,Zabbix主机是指你希望监控的那些设备,例如服务器、工作站、交换机等等。
- 创建主机是使用Zabbix过程中的一个首要任务。例如,如果你想在一台服务器“X”上监控一些参数,你必须首先创建一个主机称之为“服务器X”,然后就可以查看添加监控项到这台“服务器X”上。
- 主机组是由主机组成的。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
示例:
1 . 验证:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。
vim zabbix-api.sh
chmod +x zabbix-api
./zabbix-api
脚本内容如下图:
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.13.111/zabbix/api_jsonrpc.php | python -m json.tool
运行脚本获得身份验证令牌:
值得注意的是:
-
请求的 Content-Type 头部必须设置为以下值之一: application/json-rpc, application/json 或 application/jsonrequest。
-
示例请求对象具有以下属性:
jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;
method - 被调用的API方法名;
params - 将被传递给API方法的参数;
id - 请求的任意标识符;
auth -用户认证令牌; 因为我们还没有一个,它的设置null。 -
如果你正确提供了凭据,API返回的响应将包含用户身份验证令牌:
响应对象又包含以下属性:
jsonrpc - JSON-RPC协议的版本;
result - 方法返回的数据;
id - 相应请求的标识符。
2 . 检索主机:
现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :
vim zabbix-api # 修改脚本内容
./zabbix-api
修改内容如下图所示:
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid","host"],"selectInterfaces": ["interfaceid","ip"]},"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本成功
3 . 删除主机:
使用 host.delete 方法删除指定的主机。
vim zabbix-api
./zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.delete","params": ["10266"],"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本删除
4 . 创建主机:
创建一个具有IP接口的“Linux Server”主机,将其添加到主机组中,链接一个模板并且把MAC地址设置到主机资产清单里(注意:在实验开始之前需要将之前做的自动发现和自动注册取消,否则会报错,而且在实验开始之前需要将添加的主机进行删除,否则无法成功添加):
vim zabbix-api
./zabbix-api
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": "192.168.13.112","dns": "","port": "10050"}],"groups": [{"groupid": "2"}],"templates": [{"templateid": "10001"}]},"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
运行脚本:
在网页上查看发现server2存在