目录
1.Zabbix的介绍
2.Zabbix的配置
2.1 安装Zabbix server,Web前端,agent
2.2 安装创建初始数据库(mariadb)
2.3 为Zabbix server配置数据库
2.4 为Zabbix前端配置PHP
2.5 启动Zabbix server和agent进程
2.6 zabbix的访问
3.zabbix监控功能的实现
3.1 手动添加主机到监控集群
3.2 zabbix配置自动发现
3.3 Zabbix配置自动注册
3.4 Zabbix API
1.验证API请求
2.API检索主机
3.API删除主机
4.API创建主机到监控项
1.Zabbix的介绍
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保可以在任何地方访问您监控的网络状态和服务器健康状况。
Zabbix 的组成部分:
Server: Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库: 所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
Web 界面: 为了从任何地方和任何平台轻松访问 Zabbix ,提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Proxy: Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Agent: Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
Zabbix的功能
数据采集: 可用性和性能检查;支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;自定义检查;自定义的时间间隔采集需要的数据; 通过 Server/Proxy 和 Agents 来执行数据采集。
灵活的阈值定义: 后端数据库定义非常灵活的告警阈值,即触发器
高度可配置化的告警: 可以根据递增计划、接收者、媒介类型自定义发送告警通知;使用宏变量可以使告警通知变得更加高效有用;自动操作包含远程执行命令。
实时图形: 使用内置图形功能可以将监控项实时绘制成图形。
Web 监控功能: zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
丰富的可视化选项: 可以组合多个监控项到单个视图中,创建自定义图表; 网络拓扑图; 以仪表盘样式展示自定义聚合图形和幻灯片演示;报表;监控资源的更高层次展示视图(业务视图)。
历史数据存储: 存储在数据库中的数据; 历史配置; 内置数据管理机制(housekeeping)。
配置简单: 将被监控设备添加为主机; 主机一旦添加到数据库中,就会采集数据用于监控; 将模板用于监控设备。
使用模板: 模板中分组检查;模板可以关联模板,继承已关联模板的属性。
网络发现: 自动发现网络设备;Zabbix Agent 发现设备后自动注册;自动发现文件系统、网络接口和 SNMP OIDs 值。
**快捷的 Web 界面:**基于 PHP 的 Web 前端;可以从任何地方访问;您可以定制自己的操作方式;您可以通过审计日志来查看你的操作。
Zabbix API: Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
权限管理系统: 安全的用户身份验证;指定的用户只能查看指定的权限范围内的视图。
功能强大且易于扩展的 Zabbix Agent: 部署于被监控对象上;支持 Linux 和 Windows ;
二进制守护进程: 为了更好的性能和更少的内存占用,采用 C 语言编写; 便于移植。
适应更复杂的环境: 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
2.Zabbix的配置
实验环境: server1:192.168.43.10
2.1 安装Zabbix server,Web前端,agent
配置好zabbix的yum源
server1:
vim /etc/yum.repo.d/zabbix.repo(确保此虚拟机可以联网)
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0
安装zabbix及所需依赖项
2.2 安装创建初始数据库(mariadb)
yum install -y mariadb-server
安装数据库systemctl start mariadb.service
启动数据库mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'westos';
create.sql.gz | mysql -uzabbix -p zabbix
导入初始架构和数据
2.3 为Zabbix server配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=westos
2.4 为Zabbix前端配置PHP
vim /etc/httpd/conf.d/zabbix.conf
vim /etc/php.ini
systemctl restart httpd
2.5 启动Zabbix server和agent进程
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
2.6 zabbix的访问
172.25.1.1/zabbix
3.zabbix监控功能的实现
3.1 手动添加主机到监控集群
实验环境:
server1 :172.25.1.1
server3 :172.25.1.3
1.安装Zabbix server
yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm -y
2.创建主机
3.添加监控模板
4.配置zabbix agentvim /etc/zabbix/zabbix_agentd.conf
Server=172.25.1.1
ServerActive=172.25.1.1
hostname=server3
3.2 zabbix配置自动发现
实验环境:
server1 :172.25.1.1
server3 :172.25.1.3
1.配置自动发现的动作
2.配置自动发现
3.重启zabbix server
刷新页面后自动添加server3
3.3 Zabbix配置自动注册
注意:自动发现server端主动扫描网段中的所有主机,符合条件加入集群中;自动注册是客户端自己与server端通信加入集群
实验环境:
server1 :172.25.1.1
server4 :172.25.1.4
1.安装Zabbix serveryum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
2.配置zabbix agentvim /etc/zabbix/zabbix_agentd.conf
Server=172.25.1.1
ServerActive=172.25.1.1
Hostname=server4
3.配置自动注册的动作与操作
4.重启zabbix
3.4 Zabbix API
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:创建新的应用程序以使用Zabbix; 将Zabbix与第三方软件集成;自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。该API包含一组独立的方法;客户端和API之间的请求和响应使用JSON格式进行编码。大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据。当完成了前端的安装配置后,你就可以使用远程HTTP请求来调用API。
1.验证API请求
在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。
在server1中:
# curl -s -X POST -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.1.1/zabbix/api_jsonrpc.php | python -m json.tool
2.API检索主机
我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。
curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "9a85195197da6e9db5146acf1c633f2d"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
执行效果
3.API删除主机
执行命令删除server4
curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265"
],
"auth": "9a85195197da6e9db5146acf1c633f2d",
"id": 1
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
4.API创建主机到监控项
将server4重新添加至主机监控项
curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server4",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.1.4",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "9a85195197da6e9db5146acf1c633f2d",
"id": 1
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool