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 代理,可以轻松实现分布式远程监控
Zabbix 配置
实验环境: zabbix:192.168.0.10
安装 Zabbix Server、Web 前端和 Agent
zabbix 下载地址:https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/
# 下载安装 Zabbix Server、Web 前端和 Agent
安装创建初始数据库(mariadb)
yum install -y mariadb-server # 安装数据库
systemctl start mariadb.service # 启动数据库
mysql_secure_installation # 进行安全初始化
mysql -uroot -p
###
create database zabbix character set utf8 collate utf8_bin; # 创建库
create user zabbix@localhost identified by 'redhat';
grant all privileges on zabbix.* to zabbix@localhost; # 授权
###
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix # 导入初始架构和数据
为 Zabbix Server 配置数据库
vim /etc/zabbix/zabbix_server.conf
###
DBPassword=redhat
###
为 Zabbix 前端配置 PHP
vim /etc/httpd/conf.d/zabbix.conf
###
php_value date.timezone Asia/Shanghai
###
启动 Zabbix Server 和 Agent 进程
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
浏览器访问 zabbix
192.168.0.10/zabbix
Zabbix 监控功能的实现
手动添加主机到监控集群
实验环境:
主机名称 | IP地址 |
zabbix | 192.168.0.10 |
zabbix2 | 192.168.0.11 |
安装Zabbix server
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
创建主机
添加监控模板
zabbix2 主机配置 zabbix agent
vim /etc/zabbix/zabbix_agentd.conf
zabbix 配置自动发现
实验环境:
主机名称 | IP地址 |
zabbix | 192.168.0.10 |
zabbix | 192.168.0.11 |
配置自动发现动作
配置动作
配置自动发现
重启 zabbix server
在 zabbix 主机上重启 zabbix server
zabbix 配置自动注册
实验环境:
主机名称 | IP地址 |
zabbix | 192.168.0.10 |
zabbbix | 192.168.0.12 |
安装 Zabbix server
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
配置 zabbix agent 并启动
vim /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent.service
创建自动注册的动作
配置自动注册的操作
zabbix 主机重启服务端,zabbix3 主机重启客户端
Zabbix API
Zabbix API 允许我们通过编程的方式检索和修改 Zabbix 的配置,并提供对历史数据的访问。它广泛应用于:
- 创建新的应用程序来使用 Zabbix
- 将 Zabbix 与第三方软件集成
- 自动执行常规任务
Zabbix API 是基于 Web 的 API,作为 Web 前端的一部分提供。
- API 包含一组独立的方法
- 客户端和 API 之间的请求和响应通过使用 JSON 格式进行编码
大多数 API 至少包含四种方法分别是():
- get
- create
- update
- delete
当我们在完成前端的安装配置之后,就可以通过远程 HTTP 请求来调用 API
验证 API 请求
在 zabbix 主机中:
vim 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.010/zabbix/api_jsonrpc.php
###
chmod +x zabbix-api
./zabbix-api
API 检索主机
vim zabbix-api
./zabbix-api # 检索主机
API 删除主机
vim zabbix-api
###
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10308"
],
"id": 2,
"auth": "95f97d358e75ada647466abbbe015dbd"
}' http://192.168.0.10/zabbix/api_jsonrpc.php | python -m json.tool
###
API 创建主机到监控项
vim zabbix-api
###
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "zabbix3", # 被创建的主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.0.12", # 主机明 IP
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" # 主机群组 id
}
],
"templates": [
{
"templateid": "10001" # 模板 id
}
]
},
"id": 2,
"auth": "95f97d358e75ada647466abbbe015dbd" # 身份验证牌
}' http://192.168.0.10/zabbix/api_jsonrpc.php | python -m json.tool
###
Zabbix 配置监控项
获得状态信息
实验环境:
- zabbix2 主机中添加监控模板
- zabbix3 主机中配置 nginx
yum install -y gcc zlib-devel pcre-devel
tar zxf nginx-1.18.0.tar.gz # 解压 nginx 包
vim nginx-1.18.0/auto/cc/gcc # 关闭 debug
./configure --prefix=/usr/local/nginx --with-http_stub_status_module # 编译
make && make install # 安装
vim /usr/local/nginx/conf/nginx.conf
###
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
###
/usr/local/nginx/sbin/nginx -t # 语法检测
/usr/local/nginx/sbin/nginx # 启动
curl http://127.0.0.1/status # 访问本地状态
获取活跃连接数
- 在 zabbix3 主机中的用户自定义配置的目录中配置
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
###
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active |awk '{print $3}'
###
systemctl restart zabbix-agent.service
- zabbix 主机中测试
yum install zabbix-get-4.4.1-1.el7.x86_64.rpm -y # 安装测试工具
zabbix_get -s 192.168.0.12 -p 10050 -k "nginx.active" # 获取活跃连接数
- zabbix 主机的图形化界面中配置 zabbix3 的监控项
vim /usr/share/zabbix/include/defines.inc.php # 更改字体
获取接受请求数
- 在 zabbix3 主机上用户自定义配置的目录中配置
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
- zabbix 主机中测试
zabbix_get -s 192.168.0.12 -p 10050 -k "nginx.accept"
- 在 zabbix 的图形界面去进行配置 zabbix3 的监控项