zabbix简介&安装
# 1.1 Zabbix简介
# 1.1.1 Zabbix概述
Zabbix 是一款可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix 基于存储的数据提供报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
# 1.1.2 zabbix特性
# 1.1.2.1 数据收集
- 可用性和性能采集;
- 支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
- 自定义检查;
- 按照自定义的时间间隔采集需要的数据;
- 通过 Server/Proxy 和 Agents 来执行数据采集。
# 1.1.2.2 灵活的阈值定义
你可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。
# 1.1.2.3 高度可配置化告警
- 可以根据递增计划、接收者、媒介类型自定义发送告警通知;
- 使用宏变量可以使告警通知变得更加高效有益;
- 自动动作包含远程命令。
# 1.1.2.4 实时绘图
使用内置图形功能可实以将监控项绘制成图形。
# 1.1.2.5 WEB监控功能
Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
# 1.1.2.6 丰富的可视化选项
- 能够创建可以将多个监控项组合到单个视图中的自定义图形;
- 网络拓扑图;
- 以仪表盘样式展示自定义聚合图形和幻灯片演示;
- 报表;
- 监控资源的高层次(业务)视图。
# 1.1.2.7 历史数据存储
- 存储在数据库中的数据;
- 可配置的历史数据;
- 内置数据管理机制(housekeeping)
# 1.1.2.8 易配置
- 将被监控设备添加为主机;
- 主机一旦添加到数据库中,就会采集主机数据用于监控;
- 将模板用于监控设备。
# 1.1.2.9 模板功能
- 在模板中分组检查;
- 模板可以关联其他模板,获得继承。
# 1.1.2.10 网络发现
- 自动发现网络设备;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
# 1.1.2.11 页面展示
- 基于 PHP 的 Web 前端;
- 可以从任何地方访问;
- 您可以定制自己的操作方式;
- 审计日志。
# 1.1.2.12 zabbix api
Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途
# 1.1.2.13 权限系统
- 安全的用户身份验证;
- 将特定用户限制于访问特定的视图。
# 1.1.2.14 易扩展
- 部署于被监控对象上;
- 完美支持 Linux 和 Windows
# 1.1.2.15 二进制守护进程
- 为了更好的性能和更少的内存占用,采用 C 语言编写;
- 便于移植。
# 1.1.2.16 适用复杂网络环境
使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
# 官方给的硬件资源配置参考
下表提供了几个硬件配置参考:
规模 | 平台 | CPU/内存 | 数据库 | 受监控的主机数量 |
---|---|---|---|---|
小型 | CentOS | Virtual Appliance | MySQL InnoDB | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | RAID10 MySQL InnoDB 或 PostgreSQL | >1000 |
极大型 | RedHat Enterprise Linux | 8 CPU cores/16GB | Fast RAID10 MySQL InnoDB 或 PostgreSQL | >10000 |
实际上,Zabbix 环境的配置非常依赖于监控项(主动)和更新间隔。 如果是进行大规模部署,强烈建议将数据库独立部署。
# 1.2 Zabbix 基础架构
# 1.2.1 zabbix server
zabbix server 是整个 Zabbix 软件的核心程序。
Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。
Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
# 1.2.2 Zabbix agent
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。
Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。
Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。
# 1.3 Zabbix部署
# docker-crompose 部署
参考zabbix-docker (opens new window)仓库进行编写。
zabbix官方采用了几种基础的镜像进行构建zabbix镜像:
- alpine (opens new window)
- centos (opens new window)
- oracle linux (opens new window) from Zabbix 5.0
- ubuntu (opens new window)
不同的基础镜像内部自带的命令,构建完成的大小也不相同,根据版本选择即可。
docker-compose 文件也分为两种:
*_latest.yaml :从 hub.docker.com 下载官方已经打包好的镜像进行部署。
*_local.yaml :采用本地的 Dockerfile
进行构建新的镜像。
看情况进行选择需要用哪种镜像。我这里使用的是 alpine_mysql_latest
版本的 yaml 进行部署。
# 拉取 zabbix-docker 项目
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
2
3
4
等待镜像拉取完成后,访问 http://ip地址 进行登录,用户名Admin,密码zabbix。
更新语言时区即可。
# web页面解决中文乱码问题
# 安装字符集
yum -y install wqy-microhei-fonts
# 新建 fonts 文件夹
mkdir -p zbx_env/usr/share/zabbix/assets/fonts/
# 拷贝字体到目录下
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc zbx_env/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
2
3
4
5
6
在 zabbix-web-nginx-mysql:
的 volumes:
里添加:
# 修复zabbix中文字体乱码
- ./zbx_env/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro
2
重启zabbix后即可发现中文正常显示了。