1. Zabbix 介绍
1.1 概述
Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。
1.2 zabbix功能
Zabbix 是一个高度成熟完善的网络监控解决方案,一个的软件包中包含了多种功能。
-
可用性和性能检查;
-
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
-
自定义检查;
-
按照自定义的时间间隔采集需要的数据;
-
通过 Server/Proxy 和 Agents 来执行数据采集。
-
您可以参考后端数据库定义非常灵活的告警阈值,即触发器
-
可以根据递增计划、接收者、媒介类型自定义发送告警通知;
-
使用宏变量可以使告警通知变得更加高效有用;
-
自动操作包含远程执行命令。
-
使用内置图形功能可以将监控项实时绘制成图形。
-
Zabbix可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
-
可以组合多个监控项到单个视图中,创建自定义图表;
-
网络拓扑图;
-
以仪表盘样式展示自定义聚合图形和幻灯片演示;
-
报表;
-
监控资源的更高层次展示视图(业务视图)。
-
存储在数据库中的数据;
-
历史配置;
-
内置数据管理机制(housekeeping)。
-
将被监控设备添加为主机;
-
主机一旦添加到数据库中,就会采集数据用于监控;
-
将模板用于监控设备。
使用模板
-
模板中分组检查;
-
模板可以关联模板,继承已关联模板的属性。
-
自动发现网络设备;
-
Zabbix Agent 发现设备后自动注册;
-
自动发现文件系统、网络接口和 SNMP OIDs 值。
-
基于 PHP 的 Web 前端;
-
可以从任何地方访问;
-
您可以定制自己的操作方式;
-
您可以通过审计日志来查看你的操作。
-
Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
-
安全的用户身份验证;
-
指定的用户只能查看指定的权限范围内的视图。
-
部署于被监控对象上;
-
支持 Linux 和 Windows ;
-
为了更好的性能和更少的内存占用,采用 C 语言编写;
-
便于移植。
-
使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
2. Zabbix部署要求
2.1 硬件资源配置参考
规模 | 平台 | 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 |
2.2 数据库管理系统
数据库 | 版本 | 备注 |
---|---|---|
MySQL | 5.0.3 - 8.0.x | 使用 MySQL 作为 Zabbix 后端数据库。需要InnoDB引擎。 MariaDB 同样支持。 |
Oracle | 10g or later | 使用 Oracle 作为 Zabbix 后端数据库。 |
PostgreSQL | 8.1 or later | 使用 PostgreSQL 作为 Zabbix 后端数据库。 建议使用 PostgreSQL 8.3 以上的版本, 以 提供更好的VACUUM性能。 |
IBM DB2 | 9.7 or later | 使用 DB2 作为 Zabbix 后端数据库。 |
SQLite | 3.3.5 or later | 只有 Zabbix proxy 支持 SQLite ,可以使用 SQLite 作为 Zabbix proxy 数据库。 |
2.3 前端
软件 | 版本 | 备注 |
---|---|---|
Apache | 1.3.12 或以上 | |
PHP | 5.4.0 或以上 | |
PHP 扩展库: | ||
gd | 2.0 or later | PHP GD 扩展库必须支持 PNG 图像(--with-png-dir)、JPEG 图像 (--with-jpeg-dir) 和 FreeType 2 (--with-freetype-dir). |
bcmath | php-bcmath (--enable-bcmath) | |
ctype | php-ctype (--enable-ctype) | |
libXML | 2.6.15 或以上 | php-xml or php5-dom,如果发布者提供独立的部署包。 |
xmlreader | php-xmlreader,如果发布者提供独立的部署包。 | |
xmlwriter | php-xmlwriter,如果发布者提供独立的部署包。 | |
session | php-session,如果发布者提供独立的部署包。 | |
sockets | php-net-socket (--enable-sockets) 。用户脚本支持所需要的组件。 | |
mbstring | php-mbstring (--enable-mbstring) | |
gettext | php-gettext (--with-gettext)。用于多语言翻译支持。 | |
ldap | php-ldap。只有在前端使用 LDAP 认证时才需要。 | |
ibm_db2 | 使用 IBM DB2 作为 Zabbix 后端数据库所需要的组件。 | |
mysqli | 使用 MySQL 作为 Zabbix 后端数据库所需要的组件。 | |
oci8 | 使用 Oracle 作为 Zabbix 后端数据库所需要的组件。 | |
pgsql | 使用 PostgreSQL 作为 Zabbix 后端数据库所需要的组件。aa |
2.4 Server需求
需求 | 需求状态 | 描述 |
---|---|---|
libpcre | 强制的 | Perl Compatible Regular Expression (PCRE) 支持需要 PCRE 库。 命名可能会因 GNU/Linux 发行版而不同,例如 'libpcre3' 或 'libpcre1'。 值得注意的是,您需要准确的 PCRE (v8.x) ;而不使用 PCRE2 (v10.x) 库。 |
libevent | 批量指标支持和 IPMI 监控是必需的。需要 1.4 版本或更高。 值得注意的是,对于 Zabbix proxy,此需求是可选的;但它对于支持 IPMI 监控是必需的。 |
|
libpthread | 支持互斥锁和读写锁所需的。 | |
zlib | 支持压缩所需的。 | |
OpenIPMI | 可选的 | 支持IPMI 所需的。 |
libssh2 | 支持 SSH 所需的。需要 1.0 版本或更高。 | |
fping | 支持 ICMP ping 监控项 所需的。 | |
libcurl | Web 监控、VMware 监控和 SMTP 认证所需的。对于 SMTP 认证,需要 7.20.0 版本或更高。同时亦是 Elasticsearch 所需的。 | |
libiksemel | 支持 Jabber 所需的。 | |
libxml2 | 支持 VMware monitoring 所需的。 | |
net-snmp | Required for 支持 SNMP 所需的。 |
3. 最小化安装CentOS7后需手动安装配置系统
3.1 查询Linux版本
cat /etc/redhat-release
3.2 关闭Selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config # 关闭Selinux(需重启生效)
sestatus # 重启完成后查看Selinux状态
3.3 关闭防火墙
systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #禁止开机启动防火墙
3.4 更新系统及源码库
yum -y update && yum -y upgrade #更新系统及源码库
4. 搭建及配置LAMP环境
4.1 使用yum安装LAMP环境
1 yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash # 安装环境 2 rpm -qa httpd php mariadb # 安装完成后检车应用版本
4.2 编辑httpd
1 vi /etc/httpd/conf/httpd.conf # 编辑httpd配置文件
1 ServerName www.zabbix.com # 修改为主机名 2 DirectoryIndex index.html index.php # 添加首页支持格式
4.3 编辑配置php,配置中国时区
1 vi /etc/php.ini # 编辑php
1 date.timezone = PRC # 配置中国时区
4.4 启动httpd和mysql
1 systemctl start httpd # 启动并加入开机自启动httpd 2 systemctl enable httpd 3 systemctl start mariadb # 启动并加入开机自启动mysqld 4 systemctl enable mariadb
1 ss -anplt | grep httpd # 查看httpd启动情况,80端口监控表示httpd已启动 2 ss -naplt | grep mysqld # 查看mysqld启动情况,3306端口监控表示mysqld已启动
4.5 创建测试页测试LAMP环境是否搭建成功
1 vi /var/www/html/index.php #创建一个测试页,并编辑
<?php
phpinfo() # 需要插入的代码
?>
1 curl http://127.0.0.1 -I # 本地测试
4.6 初始化mysql数据库
1 mysqladmin -u root password 123abc #设置数据库root密码
4.7 配置mysql数据库
1 mysql -u root -p #root用户登陆数据库 2 CREATE DATABASE zabbix character set utf8 collate utf8_bin; #创建zabbix数据库(中文编码格式) 3 GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY '123abc'; #授予zabbix用户zabbix数据库的所有权限,密码123abc 4 flush privileges; #刷新权限 5 quit #退出数据库
4.8 删除数据库空用户
1 mysql -u root -p #使用root账户登录数据库; 2 select user,host from mysql.user; #有空用户名称占用导致本地无法登录远程可登录 3 drop user ''@localhost; #删除空用户
drop user ''@zabbix;
4.9 测试zabbix用户能否登录数据库
1 vi /var/www/html/index.php #修改测试页内容,测试zabbix用户是否能够登陆数据库,这个环节很重要
<?php $link=mysql_connect('192.168.109.77','zabbix','123abc'); if($link) echo "<h1>Success!!</h1>"; #显示Success表示连接数据库成功 else echo "Fail!!"; mysql_close(); ?>
1 cat /var/www/html/index.php
5. 安装Zabbix
5.1 安装依赖包和组件
1 yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel libevent-devel.x86_64 javacc.noarch javacc-javadoc.noarch javacc-maven-plugin.noarch javacc*
5.2 安装php支持zabbix组件
1 yum install php-bcmath php-mbstring -y #安装php支持zabbix组件
5.3 安装zabbix组件
1 rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm # 自动生成yum源文件
2 yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y # 安装zabbix组件
5.4 导入数据至数据库Zabbix中
1 zcat /usr/share/doc/zabbix-server-mysql-4.0.19/create.sql.gz | mysql -uzabbix -p -h 192.168.109.155 zabbix #导入数据到数据库zabbix中(最后一个zabbix是数据库zabbix),且因为用户zabbix是%(任意主机),所以登录时需要加上当前主机ip(-h 192.168.109.155),密码是用户zabbix登陆密码123abc
PS:修改数据库密码(如果忘记数据库密码可修改)
1 vi /etc/zabbix/zabbix_server.conf #配置数据库用户及密码 2 grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf #确认数据库用户及密码
5.5 配置zabbix时区
1 vi /etc/httpd/conf.d/zabbix.conf //修改时区 2 3 将# php_value date.timezone Europe/Riga 变更成php_value date.timezone Asia/Shanghai
5.6 启动zabbix服务
1 systemctl enable zabbix-server #启动并加入开机自启动zabbix-server 2 systemctl start zabbix-server
1 systemctl start zabbix-agent #启动并加入开机自启动zabbix-agent 2 systemctl enable zabbix-agent
1 netstat -anpt | grep zabbix //监听在10051端口上,如果没监听成功,可重启zabbix-server服务试试
上述操作完成后重启服务器,再继续
6. Web界面配置Zabbix
如果以上全部操作正确无误,现在可使用Google浏览器打开
1 http://192.168.109.155/zabbix //注意这里IE浏览器打不开,本次测试使用chrome浏览器