一. Zabbix介绍
Zabbix是一个分布式企业级开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。 Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
二. Zabbix功能
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 由几个主要的功能组件组成,其功能介绍如下所示。
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。
数据流
首先,为了创建一个采集数据的监控项,您就必须先创建主机。
其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
四. Zabbix5.0 新功能
垂直菜单
侧边栏中的垂直菜单替换了旧版本中的水平菜单。
菜单可以折叠或完全隐藏:
折叠菜单时,一旦将鼠标指针放在菜单上,便会重新显示完整菜单。即使菜单被完全隐藏,也只需单击鼠标即可单击整个菜单
允许字符串比较
现在,可以使用 = 和 <> 运算符在触发器中进行字符串比较。
用户界面中的测试项目
在以前的Zabbix版本中,很难判断新配置的项目是否正确配置。为此,您需要等到该项目尝试收集一些数据。
在新版本中,甚至可以在保存之前从用户界面测试项目(模板项目,项目原型,低级发现规则),如果配置正确,则可以返回真实值。
Zabbix-agent2
Zabbix-agent2在Zabbix 4.4中首次通过实验引入,现已得到正式支持。Zabbix-agent2的功能已扩展:
- WINDOWS支持
现在可以从Windows平台上的源代码编译Zabbix-agent2。 - DOCKER监控插件
Zabbix代理2的Docker插件现已作为Docker容器的现成可用监视的一部分 - MEMCACHED监控插件
Zabbix-agent2的Memcached插件现在可以作为现成的Memcached实例监视的一部分使用 - MYSQL监控插件
Zabbix代理2的MySQL插件现在可以作为MySQL实例的现成可用监视的一部分 - agent2插件更新
其它新特性查看官方文档:https://www.zabbix.com/documentation/5.0/manual/introduction/whatsnew500
四. 源码安装
Zabbix前端使用PHP语言,因些服务器需要安装LNMP相关软件,5.0版本对软件版本的要求入依赖关系:
软件名称 | 最小版本 |
---|---|
PHP version | 7.2.0 |
数据库 | mysql,mariadb,pgsql,Oracle |
php-bcmath | |
php-mbstring | |
php-net-socket | |
php-gd | 2.0.28 |
php-xml | 2.6.15 |
php-gettext | 非必须 |
1. 配置php7.2 yum安装源(基于Centos7)
yum install epel-release
yum install https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装lnmp环境
yum install php72w-bcmath php72w-mbstring php72w-gd php72w-xml php72w-gettext php72w php72w-fpm php72w-common php72w-mysql nginx mariadb-server wget gcc mariadb-devel libxml2-devel net-snmp-devel libevent-devel curl-devel golang fping -y
检查nginx安装信息:
]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf #配置文件
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/systemd/system/nginx.service #启动脚本
/usr/lib64/nginx/modules
/usr/sbin/nginx #可执行程序
/usr/share/doc/nginx-1.16.1
检查mariadb-server信息:
~]# rpm -ql mariadb-server
/etc/logrotate.d/mariadb
/etc/my.cnf.d/server.cnf #配置文件
/usr/bin/innochecksum
/usr/bin/