第一章 Zabbix 安装与配置
1.1 Zabbix 介绍
Zabbix是一个企业级的开源监控软件,可以监控IT基础架构的可用性和应用的性能,为用户提供集中管理、分布式监控的一站式(all in one)监控解决方案,是一款真正的开源产品(True Open source)。采用GPL协议发布,不论是商业或非商业的使用没有任何限制,可以说是绝对的自由使用。不同于其他开源产品有社区版本和企业版本的区别,Zabbix软件本身提供的功能、监控设备的数量等方面没有任何限制。无论是企业或者个人使用,你都可以对源代码进行修改、定制以便适应自身需求,尤其是对企业来讲很重要的一点就是避免了厂商锁定的问题。
Zabbix最基本的目的是收集监控数据,将收集的数据统一保存到数据库中进行分析处理,利用Web前端页面可以轻松的将这些监控数据实时展示出来。通过与设定的阀值进行比较触发特定的事件并产生相应的动作,发出告警通知或执行远程命令。Zabbix 提供了多种监控方式用来监控基础架构的各个方面,不仅有专用的Agent,还支持External checks、SNMP、IPMI、JMX monitoring、SSH checks等多种方式收集监控数据,具有丰富的功能和灵活的扩展性。事实上,几乎所有你能想到的都可以在Zabbix中实现监控。
Alexei Vladishev 1998年开始创建Zabbix,2001年他发布了Zabbix的第一个版本,自从第一次发布起,Zabbix就确定了它的开发指南:
关于阈值、触发器和警报的所有规则均由 Zabbix 服务器管理。
几乎所有的配置任务都可以通过Zabbix Web前端页面完成。
使用PHP开发Zabbix Web前端页面,使用C语言开发Zabbix 服务器保证核心系统的性能。
所有的数据(包括配置和历史数据)存储在关系数据库中(将来也可以在 NoSQL 数据库中存储历史数据)。
目前Zabbix支持的稳定发行版本如下表1-1所示:
表1-1
版本 | 发布日期 | 终止支持日期 |
Zabbix 3.0 | 2016年2月16日 | 2019年2月 |
Zabbix 2.2 | 2013年11月12日 | 2017年8月 |
目前在运维监控领域越来越多的人开始关注并使用Zabbix,那为什么Zabbix会在众多开源监控软件中脱颖而出,成为最受欢迎的开源监控产品,或者说使用Zabbix监控系统的理由,可以归纳为以下几点:
只需要Linux、Apache/Nginx、PHP、MySQL/PostgreSQL,无须专用的操作系统和硬件。
安装和配置简单,提供集中统一的Web前端管理界面,易学易用。
服务器可以安装运行在大部分UNIX-like的操作系统中,包括Linux、AIX、BSD、Mac OS X和Solaris。
原生的agents支持大部分UNIX-like操作系统和Windows操作系统。
支持 SNMP(SNMPv1、SNMPv2c、SNMPv3)trapping和polling方式监控设备。
能直接监控IPMI 设备。
利用JMX(Java Management Extensions)监控Java应用。
利用VMware API可以直接监控vCenter或vSphere。
内置绘图功能,实时展示监控数据和其他可视化功能。
收集的数据持久保存到中心数据库中,便于对监控数据的二次分析。
可以很方便的使用微信、钉钉等扩展告警方式。
Zabbix API提供可编程接口,可以使用多种不同的编程语言与第三方系统的集成。得轻松、简单。
灵活强大的模板化配置,并支持模板的嵌套。
具有自动发现网络设备、自动注册主机、自动添加模板等功能,实现自动化运维。
具有丰富的扩展能力,可以轻松的自定义监控项并收集数据,几乎能监控你想得到的所有数据。
当然还有很多功能特性,例如用户及权限管理、灵活的告警条件设置及告警升级等,在这里不再一一列举,随着本书的介绍,相信你将对Zabbix有一个深入的了解。
近日完成《深入浅出 zabbix 4.0》视频教程的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.51cto.com/sd/ce000
1.2 Zabbix 组件与架构
Zabbix监控系统包含四个主要组件:Zabbixserver、Zabbix proxy、Zabbix database和Zabbix GUI。每个组件都有其自身的特点和要求:
Zabbix server:这是核心引擎,负责收集或接收来自被监控设备的数据。它是用C语言开发的,与Zabbix agents、Zabbix proxy和 Zabbix database进行通信。它是最主要的组件,管理所有的规则(包括收集监控数据、触发器、告警等等)。
Zabbix GUI:这是 Zabbix Web前端管理页面,用户通过Web前端页面可以查看Zabbixserver收集的数据,也可以对Zabbix server进行配置。它是用 PHP 开发的,使用支持 PHP程序运行的 web 服务器 (Apache或Nginx),并与 Zabbix 数据库通信。
Zabbix database: 这是 Zabbix 数据存储库。 Zabbix的后端数据库可以是 Oracle、 IBM DB2、PostgreSQL、MySQL 或 SQLite3。在这本书中,我们将使用MySQL 作为数据库。
Zabbix proxy:这是一个可选的组件,利用它来实现分布式监控架构或分担Zabbix server的负载,提高Zabbix server的性能。它的主要功能是协助 Zabbix server从被监视的主机或设备收集数据。Zabbix proxy收集的数据首先存放到本地临时数据库中,随后定时发送到 Zabbix server中,即便Zabbix server和Zabbix proxy的连接断开也不会导致数据的丢失(数据保留的时间可在proxy的配置文件中设置)。在3.0版本中原生支持Zabbix server和Zabbix proxy之间的数据加密传输(基于证书或者基于共享秘钥的加密都是支持的)。
通过图1-1可以看到,Zabbix是一个三层架构,在实现时我们需要安装以下三个服务器,即Web服务器、Database服务器和Zabbix服务器。
图1-1
如果需要监控的规模比较小(几台或几十台主机),上面提到的三个服务器可以同时安装在一个物理服务器中,这种方式的优点是安装配置简单快速,初期部署成本比较低。如下图1-2所示。
图1-2
随着监控规模的不断扩大,需要保存和处理更多的监控数据,也会有更多的运维人员访问Zabbix Web前端页面,这样势必会让Zabbixserver的处理性能下降,出现断图、Web前端页面访问慢等问题。这时我们可以将Web服务器、Database服务器和Zabbix服务器拆分,分别安装到不同的物理服务器中。这种方式中每个服务器组件使用专用的硬件资源,可以解决相应的性能问题,但是需要增加服务器硬件的投入。如下图1-3所示。
图1-3
1.3 Zabbix 数据处理流程
图1-4
在标准的Zabbix数据处理流程中,主要是通过几个不同的数据源端发送数据到Zabbix server,所有的数据都会保存到数据库中,并通过Web GUI为用户展现结果。从上图1-4中我们可以看到发送数据的主要源包括:
Zabbix agent
Zabbix sender
Other agent (如脚本或者自定义的第三方的agent)
Zabbix proxy
1.4 Zabbix部署前的一些考虑
准备部署Zabbix之前,应当根据实际的IT基础架构和业务需求,规划设计Zabbix监控部署方案,尽量避免后期使用过程中可能遇到的性能、容量等方面的问题。
1.4.1 确定Zabbix部署架构
Zabbix在大部分场景中以集中式架构部署即可满足要求,所谓集中式架构就是无论Zabbix server、Database server和Web server是否安装在同一台服务器中,所有的监控数据都是由Zabbix server收集。如果你需要监控的IT基础架构有多个分中心或分支机构,建议采用分布式架构部署,在每个分中心或分支机构增加Zabbix proxy,由Zabbix proxy收集本地的监控数据后统一传输到Zabbix server中存储和处理,实现分布式架构、集中监控的方案。
1.4.2 评估服务器硬件资源
服务器只要有128MB内存和256MB磁盘空间就能够正常运行Zabbix,但在实际环境中部署时需要根据监控需求加以调整。
下表1-2为官方列举的服务器硬件配置:
表1-2
类型 | 系统平台 | CPU/内存 | 数据库 | 硬盘 | 被监控主机 |
小型 | CentOS | 虚拟机 | MySQL InnoDB | SATA | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | SATA | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | MySQL InnoDB 或 PostgreSQL | RAID 10 SAS或SSD | >1000 |
超大型 | RedHat Enterprise Linux | 8CPU cores/16GB | MySQL InnoDB 或 PostgreSQL | RAID 10 SAS或SSD | >10000 |
服务器的硬件配置和被监控主机的数量、监控指标的数量以及触发器的设置和数量等都有很密切的关系,数量越大意味着Zabbix需要更高的处理器性能,特别是数据库不仅需要大量的处理器资源,还需要更多的内存。
当收集监控数据的间隔时间设置的比较小时,会提高数据的刷新速率,同时也会对数据库带来更密集的读写操作,因此在被监控主机数量和监控指标的数量很大时,建议配置SSD硬盘,避免磁盘I/O和数据库的性能成为瓶颈。
1.4.3 数据库的选择
Zabbix虽然支持Oracle、PostgreSQL、IBM DB2、MySQL和SQLite数据库,但在生产环境中建议使用MySQL数据库,理由是Zabbix的开发后端数据库使用的就是MySQL数据库,使用MySQL数据库应该能够获得Zabbix最好的性能。除非你的环境中只能使用Oracle数据库,否则不建议使用,Zabbix使用Oracle可能会有一些性能方面的问题。IBM DB2数据库目前处于试验阶段,不建议使用。在Zabbix proxy中使用SQLite 3作为数据库是没有任何问题的,但是在Zabbix server中不能使用SQLite 3,Zabbix v2.4以上的版本中server和web前端对数据库的并发访问可能会造成数据库的损坏。
MySQL数据库目前有两个衍生版:Percona 和MariaDB,在生成环境中建议的选择顺序为Perconaà MariaDB à Oracle MySQL。
1.4.4 磁盘容量的计算
影响Zabbix占用磁盘空间大小的因素主要有以下几个:
监控项总数。
监控项的平均刷新率。
数据保留天数。
数据库中新增一条数据占用的磁盘空间。不同的数据库中这个值会有所不同,在MySQL数据库中,新增一条数值(numeric)类型的历史或趋势数据记录一般占用大约90个字节(bytes),文本(text)或日志(log)类型的记录大约占用 500个 字节(bytes)。新增一条事件记录一般占用大约170个字节(bytes)。
占用磁盘空间的容量可以用下面的公式计算:
磁盘总容量= 配置数据 + 历史数据+ 趋势数据 + 事件数据
其中:
配置数据:Zabbix中所有相关的配置数据都保存在数据库中,大约占10MB的磁盘空间。
历史数据:历史记录通常会保留一段时间,比如说30天,1年,可根据你的需要设置。当新增一条记录时占用相应的磁盘空间可以用下面的公式计算:
历史数据保留天数* 24 * 3600 *(监控项总数/平均刷新率)* 90 bytes
趋势数据:Zabbix每过1小时会便会对所有的监控项进行max/min/avg/count的统计并将结果保存到数据库的趋势表(trends)中,当新增一条记录时占用相应的磁盘空间可以用下面的公式计算:
趋势数据保留天数* 监控项总数 * 24 * 90bytes
事件数据:每天Zabbix中生成的事件很难估计一个比较准确的数量,我们可以假设Zabbix每秒钟生成一个事件,新增记录占用磁盘的空间可以用下面的公式计算:
事件数据保留天数* 24 * 3600 * 170 bytes
下面通过例子来看看磁盘容量的计算过程:
假设有3000个监控项,每60秒钟刷新一次。
首先我们要计算出每秒钟需要处理的监控项数量,即监控项总数/平均刷新率,3000 / 60 = 50,这个值的意思是Zabbix每秒钟会在数据库中新增50条记录。
再分别计算出历史数据、趋势数据和事件数据占用的磁盘空间。
假设每个监控项的历史数据保留30天,历史数据占用的磁盘空间容量为:历史数据保留天数* 24 * 3600 *(监控项总数/平均刷新率)* 90 bytes,即(30 * 24 *3600)* 50 * 90,计算得出需要11.7 GB磁盘空间。
假设每个监控项的趋势数据保留5年,趋势数据占用的磁盘空间容量为:趋势数据保留天数* 监控项总数 * 24 * 90bytes,即(5 * 24 * 365)* 3000 * 90,计算得出需要11.8 GB磁盘空间。
假设每个事件保留3年,事件数据占用的磁盘空间容量为:事件数据保留天数* 24 * 3600 * 170 bytes,即 3 * 365 * 24 * 3600 * 170,计算得出需要16GB磁盘空间。
数据库表分区
Zabbix中对过期的历史、趋势等数据的管理,提供了Housekeeper功能,通过Housekeeping可以自动删除过期的数据。监控规模较小,数据不是很多的情况下,使用Housekeeper不会有什么问题。当监控的规模上去后,数据库的存储容量也会快速增长,这时候如果使用Housekeeping自动删除大量过期的数据,将需要更多的时间来完成删除任务。在删除过期数据的同时又要满足新数据入库和各种数据查询的操作,很容易出现数据库的性能问题,例如操作Web前端页面时出现卡顿,新数据不能正常入库等。
为了解决这个问题,我们通常采用的办法是对history、history_uint、trends、trends_uint等数据表进行表分区,如下图1-5所示。
图1-5
表分区会带来如下好处:
大大改善单表的查询性能。
分区会减少索引的大小。
大规模删除可以通过删除分区表完成,比执行SQL删除命令更快。
查询需要大范围的访问分区时,使用顺序扫描的方法比使用索引效率更高。
因此,根据实际环境,如果监控数据量比较大,那么建议你在安装前考虑数据库表分区,早分比晚分好。
1.5安装Zabbix
在本书中使用的环境是:
OS:CentOS 7.2 (SElinux需设置为disable)
Web server:Apache
Database server:mariadb
Zabbix server:version 3.0.1
Zabbix的安装和其他软件一样,可以有两种方法安装:基于包管理器安装和基于源码编译安装。
基于包管理器安装的好处:
轻松的安装和升级
自动解决所有的依赖关系
基于源码编译安装的好处:
只需要编译自己需要的特性
完全控制升级过程
可以静态编译agent,在不同的linux平台使用统一版本的agent
在一个大的IT基础架构中会有不同版本的Linux、Unix或Windows系统,如果我们使用Zabbix发布的agent,会造成使用的agent版本不一致的情况,而不同版本的agent定义的配置文件的存储位置可能不一样,这样在运维中无法实现标准化的统一管理,给运维带来压力。通过--enable-static 选项进行编译,为我们提供了标准化的方法,在不同的系统中轻松部署相同版本的agent。
下面我们开始安装和配置Zabbix server、Zabbix agent和Zabbix proxy。为了学习、测试Zabbix,我们也可以在虚拟机中安装,在实际的生产环境中不建议使用虚拟机。
1.5.1安装Zabbix server
安装Zabbix源
# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
安装MySQL server和Zabbix server
# yuminstall mariadb-server mariadb zabbix-server-mysql zabbix-web-mysql
#systemctl enable mariadb
#systemctl start mariadb.service
# /usr/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT ISRECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASEREAD EACH STEP CAREFULLY!
In order to log into MySQL to secure it,we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, thepassword will be blank,
so you should just press enter here.
Enter current password for root (enter fornone):
OK, successfully used password, movingon...
Setting the root password ensures thatnobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] y
New password: (此处设置数据库root用户密码,本书例子中设置为zabbix)
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
...Success!
By default, a MySQL installation has ananonymous user, allowing anyone
to log into MySQL without having to have auser account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
...Success!
Normally, root should only be allowed to connectfrom 'localhost'. This
ensures that someone cannot guess at theroot password from the network.
Disallow root login remotely? [Y/n] y
...Success!
By default, MySQL comes with a databasenamed 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a productionenvironment.
Remove test database and access to it?[Y/n] y
-Dropping test database...
...Success!
-Removing privileges on test database...
...Success!
Reloading the privilege tables will ensurethat all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
...Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
创建Zabbix数据库
#mysql -u root -p
MariaDB [(none)]> create database zabbixcharacter set utf8 collate utf8_bin;
MariaDB [(none)]> use zabbix;
MariaDB [(none)]> grant all privilegeson zabbix.* to zabbix@'%' identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
# cd/usr/share/doc/zabbix-server-mysql-3.0.0
# zcatcreate.sql.gz | mysql -uroot -pzabbix zabbix
在zabbix数据库中创建表,命令中 -uroot 是数据库的root用户,-pzabbix 是数据库root用户的密码zabbix,。
修改Zabbix server的配置文件
# vi/etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix (此处为你设置的密码,本书例子中设置为zabbix)
允许并启动Zabbix服务器
#systemctl enable zabbix-server
# systemctl start zabbix-server
检查Zabbix服务器是否正常启动
# cat /var/log/zabbix/zabbix_server.log
2924:20160302:155929.675 Starting ZabbixServer. Zabbix 3.0.1 (revision 58734).
2924:20160302:155929.675 ****** Enabledfeatures ******
2924:20160302:155929.675 SNMPmonitoring: YES
2924:20160302:155929.675 IPMImonitoring: YES
2924:20160302:155929.675 Web monitoring: YES
2924:20160302:155929.675 VMwaremonitoring: YES
2924:20160302:155929.676 SMTPauthentication: YES
2924:20160302:155929.676 Jabbernotifications: YES
2924:20160302:155929.676 Ez Textingnotifications: YES
2924:20160302:155929.676 ODBC: YES
2924:20160302:155929.676 SSH2 support: YES
2924:20160302:155929.676 IPv6 support: YES
2924:20160302:155929.676 TLS support: YES
2924:20160302:155929.676******************************
2924:20160302:155929.676 using configurationfile: /etc/zabbix/zabbix_server.conf
2924:20160302:155929.694 current databaseversion (mandatory/optional): 03000000/03000000
2924:20160302:155929.694 required mandatoryversion: 03000000
2924:20160302:155929.698 server #0 started[main process]
2929:20160302:155929.698 server #1 started[configuration syncer #1]
2930:20160302:155929.698 server #2 started[db watchdog #1]
2932:20160302:155929.699 server #3 started[poller #1]
2952:20160302:155929.704 server #23 started[history syncer #4]
2944:20160302:155929.704 server #15 started[alerter #1]
2946:20160302:155929.704 server #17 started[timer #1]
2934:20160302:155929.704 server #5 started[poller #3]
2935:20160302:155929.710 server #6 started[poller #4]
2938:20160302:155929.715 server #9 started[trapper #1]
2940:20160302:155929.717 server #11 started[trapper #3]
2936:20160302:155929.720 server #7 started[poller #5]
2949:20160302:155929.729 server #20 started[history syncer #1]
2950:20160302:155929.729 server #21 started[history syncer #2]
2942:20160302:155929.730 server #13 started[trapper #5]
2937:20160302:155929.731 server #8 started[unreachable poller #1]
2954:20160302:155929.731 server #25 started[proxy poller #1]
2933:20160302:155929.733 server #4 started[poller #2]
2939:20160302:155929.741 server #10 started[trapper #2]
2941:20160302:155929.747 server #12 started[trapper #4]
2943:20160302:155929.749 server #14 started[icmp pinger #1]
2945:20160302:155929.749 server #16 started[housekeeper #1]
2947:20160302:155929.749 server #18 started[http poller #1]
2951:20160302:155929.749 server #22 started[history syncer #3]
2955:20160302:155929.749 server #26 started[self-monitoring #1]
2953:20160302:155929.749 server #24 started[escalator #1]
2948:20160302:155929.752 server #19 started[discoverer #1]
当你看到上面的信息时表明zabbix安装、启动成功。
3019:20160302:160415.128 [Z3001] connectionto database 'zsabbix' failed: [1044] Access denied for user'zabbix'@'localhost' to database 'zsabbix'
3019:20160302:160415.128 Cannot connect tothe database. Exiting...
如果你看到上面的信息,说明Zabbix服务器没有正常启动,请检查配置文件/etc/zabbix/zabbix_server.conf中DBHost、DBName 、DBUser和 DBPassword参数是否正确设置:
设置防火墙
# firewall-cmd--permanent --add-port=10051/tcp
#firewall-cmd --reload
检查10051 和10050端口在 /etc/service中是否注册:
# grep1005 /etc/services
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
现在我们已经安装和配置好了Zabbix服务器及MySQL数据库,可以根据需要对Zabbix server进行优化配置。准备对配置文件进行修改时,我们可以复制一份正在使用的配置文件并进行修改,完成后可以使用–c参数用新的配置文件启动Zabbix服务器,检查配置文件中参数配置的正确性。
# /sbin/zabbix_server –c <config file>
其中<config file>是修改后的配置文件。
1.5.2安装Zabbix agent
Zabbix agent是一个很小的程序,大概有320KB的大小,在所有Zabbix 服务器中都会安装agent,以便我们监控Zabbix服务器本地的资源。需要监控其他服务器时,我们只需要安装agent就可以。
在Zabbix服务器中安装agent时,服务器中已经安装了Zabbix源,所以直接通过yum命令安装即可。在其他服务器中安装agent之前,请按照前面介绍的方法安装设置Zabbix源。
安装agent
#yum install zabbix-agent
设置防火墙
# firewall-cmd --permanent --add-port=10050/tcp
# firewall-cmd –reload
修改agent配置文件
# vi/etc/zabbix/zabbix_agentd.conf
Server=< zabbix server的IP地址> # 被动模式下需要设置,从哪个服务器连接agent
ServerActive=<zabbixserver的IP地址> # 主动模式下需要设置,向哪个服务器发生数据
Hostname=<被监控主机的名称> # 主动模式下必须设置,被动模式不需要
关于Zabbix agent主动模式和被动模式的设置请参考第三章内容。
多个Zabbix服务器可以同时和一个agent连接,获得该agent端的监控数据,设置时每个IP地址间用逗号分隔。例如:Server=192.168.2.100,192.168.10.2。
启动agent
#systemctl enable zabbix-agent
#systemctl start zabbix-agent
检查agent是否正常启动
# cat/var/log/zabbix/zabbix_agentd.log
6489:20160303:112252.464 Starting Zabbix Agent [zabbixsrv]. Zabbix 3.0.1(revision 58734).
6489:20160303:112252.464 **** Enabled features ****
6489:20160303:112252.464 IPv6 support: YES
6489:20160303:112252.464 TLS support: YES
6489:20160303:112252.464 **************************
6489:20160303:112252.464 using configuration file:/etc/zabbix/zabbix_agentd.conf
6489:20160303:112252.464 agent #0 started [main process]
6490:20160303:112252.465 agent #1 started [collector]
6491:20160303:112252.465 agent #2 started [listener #1]
6492:20160303:112252.465 agent #3 started [listener #2]
6493:20160303:112252.467 agent #4 started [listener #3]
如果你看到上面的信息说明Zabbix agent启动成功。如果在日志中看到下面的信息:
2155:20150907:220219.494 no active checks on server[192.168.0.116:10051]: host [Zabbix server] not monitored
不用担心,这是因为没有设置ServerActive这个参数,当anget安装成功后,该参数默认设置为127.0.0.1,如果你使用主动模式,需要把ServerActive设置成Zabbix server的地址,同时设置参数Hostname(agent安装成功后默认设置为Zabbix server)。如果你确定不使用主动模式,可以在配置文件中该参数前加#号注释掉。建议配置anget时,将Server、ServerActive和Hostname参数同时配置好。
修改Zabbix agent的配置文件后,记着一定要重启agent服务,否则修改的参数不会生效。
1.5.3安装Zabbix Web GUI
我们已经在Zabbix服务器中安装设置了Zabbix源,直接通过yum命令安装即可。在其他服务器中安装web页面之前,请按照前面介绍的方法先安装设置Zabbix源。
安装Web GUI组件
#yum install zabbix-web zabbix-web-mysql
设置php的配置
# vi/etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
设置防火墙
#firewall-cmd --permanent --add-service=http
# firewall-cmd –reload
设置httpd服务
#systemctl enable httpd
#systemctl start httpd
现在我们已经完成了web前端系统的安装,你可以通过reboot命令重新引导服务器,系统重启后检查日志看看所有的组件是否正常启动。
接下来我们在web 浏览器输入http://192.168.0.22/zabbix进入web页面(192.168.0.22换成你自己的服务器地址),你看到了吗?Zabbix 3.0的欢迎页面出现了,这时候是不是很开心啊。如下图1-5所示。
图 1-6
点击页面右下角的Next step按钮进入php配置检查页面,在这里Zabbix将检查php的配置,通常Zabbix会提供相关配置的文件,我们唯一要做的就是设置timezone,如果某些参数有问题,你可以通过检查Zabbix的配置文件解决。如下图1-7所示。
图 1-7
确认所有php项目都显示为OK时点击Next step进入数据库配置页面,在这个页面我们需要填写数据库的连接信息(在安装数据库时我们已经设置),填写相关信息后就可以进行下一步操作。如下图1-8所示。
图 1-8
点击Next step进入Zabbix服务器配置页面,在Zabbix server details页面中,需要填写Zabbixserver的主机名或IP地址,以及端口号,一般这个信息会自动填写,如果没有你可以自己添加。Name是可选的,如果你愿意也可以设置。如下图1-9所示。
图 1-9
点击Next step进入配置信息预览页面,在这个页面显示前几个步骤设置的信息,你可以再检查一下是否正确。如下图1-10所示。
图 1-10
点击Next step,出现安装页面,页面中提示你Zabbix前端已经成功安装,并在目录/etc/zabbix/web/中创建了配置文件zabbix.conf.php。如下图1-11所示。
图 1-11
在上图1-11中点击Finish按钮,完成Zabbix web的配置安装。
在Web前端的登录页面中,我们输入Zabbix默认的用户名和密码,用户名:Admin,密码:zabbix ,这里一定要注意用户名的大小写。如下图1-12所示。
图 1-12
输入正确的用户名和密码后,点击Sign in 按钮登录系统,或者点击signin guest链接已Guest用户的身份登录系统。登录后的Web页面如下图1-13所示。
图 1-13
设置web中文页面
1、编辑locales.inc.php文件启用简体中文。修改zh_CN的'display' => true,在v3.0.3版本后Zabbix默认设置zh_CN为true。
# vi /usr/share/zabbix/include/locales.inc.php
'zh_CN' => ['name' => _('Chinese(zh_CN)'), 'display' => false],
2、在Zabbix web页面中点击Admin 图标。如下图1-14所示。
图 1-14
3、在 Language 中选择Chinese(zh_CN),点击Update按钮保存。如下图1-15所示。
图 1-15
3、刷新web页面,我们就可以看到中文了,但是在图形页面里中文显示不出来,这是因为字体的原因。如下图1-16所示。
图 1-16
4、拷贝中文字体如 simkai.ttf 到/usr/share/fonts/
# ll /usr/share/fonts
total 11520
total 11516
drwxr-xr-x 2 root root 4096 Mar 2 15:26 dejavu
-rw-r--r—1 root root 11785184 Mar 3 12:53 simkai.ttf
5、给Zabbix web页面添加字体
# ll /usr/share/zabbix/fonts
total 0
lrwxrwxrwx 1 root root 33 Mar 3 12:56 graphfont.ttf ->/etc/alternatives/zabbix-web-font
# alternatives --install/usr/share/zabbix/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/simkai.ttf100
# alternatives --display zabbix-web-font
zabbix-web-font - status is manual.
linkcurrently points to /usr/share/fonts/dejavu/DejaVuSans.ttf
/usr/share/fonts/dejavu/DejaVuSans.ttf -priority 10
/usr/share/fonts/simkai.ttf - priority 100
Current `best' version is /usr/share/fonts/simkai.ttf.(当前字体是simkai.ttf)
如果当前字体不是simkai.ttf,可执行命令设置。
# alternatives --config zabbix-web-font
There are 2 programs which provide'zabbix-web-font'.
Selection Command
-----------------------------------------------
+1 /usr/share/fonts/dejavu/DejaVuSans.ttf
* 2 /usr/share/fonts/simkai.ttf
Enter to keep the current selection[+], ortype selection number: 2 (此处选择simkai.ttf)
6、刷新web 页面,中文正常显示,如下图1-17所示。
图 1-17
1.5.5源码编译安装
1、 从Zabbix官网下载Zabbix源码包并保存到/usr/src目录中,解压缩源码包。
# tar -zxvf zabbix-3.0.1.tar.gz
# cd /usr/src/zabbix-3.0.1
2、 我们需要安装 Apache,MySQL,PHP 和一些其他的库。
# yum install httpd mariadb-server php php-mysql php-bcmath php-mbstring php-gdphp-xml
3、 配置数据库。
# systemctl enable mariadb
# systemctl start mariadb.service
# /usr/bin/mysql_secure_installation
# mysql -u root –p<密码>
MariaDB [(none)]> create database zabbix character set utf8collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%'identified by 'zabbix';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
# /usr/src/zabbix-3.0.1/database/mysql
# mysql -uzabbix -p<密码> zabbix < schema.sql
# mysql -uzabbix -p<密码> zabbix < p_w_picpaths.sql
# mysql -uzabbix -p<密码> zabbix < data.sql
4、 创建zabbix用户和组:
# groupadd zabbix
# useradd -g zabbix zabbix
5、 为了能顺利的编译 ,我们需要额外安装一些包,你可能需要添加EPEL 源:
# yum install gcc mysql-devellibxml2-devel net-snmp-devel
curl-devel unixODBC-develOpenIPMI-devel libssh2-devel iksemel-devel openldap-devel
查看支持的配置选项:
# ./configure --help
根据需要选择配置选项:
# ./configure --enable-server--with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2--with-openipmi --with-unixodbc --with-ssh2 --with-ldap --with-jabber --with-mbedtls
当正确完成配置后,你可以看到make install 的提示信息,如果遇到错误会提示哪个库有问题。
编译安装:
# make install
完成编译安装后标准的配置文件在/usr/local/etc/中,Zabbix server文件在/usr/local/sbin/ 中。你可以通过 --prefix 参数指定安装的位置,例如:--prefix=/,使用 / 代替 /usr/local ,编译的文件将安装到 /sbin、/lib、/etc 等。
6、 定义zabbix-server服务。
# cd /usr/lib/systemd/system/
# vi zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
# systemctl enable zabbix-server
# systemctl start zabbix-server
接下来我们安装Zabbix web页面:
# mkdir /var/www/html/zabbix
# cd /usr/src/zabbix-3.0.1/frontends/php/
# cp -a . /var/www/html/zabbix
# chown -R --no-dereference apache:apache /var/www/html/zabbix
# vi /etc/httpd/conf.d/zabbix.conf
<Directory "/var/www/html/zabbix">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Shanghai
</Directory>
# systemctl enable httpd
# systemctl start httpd
在Web 浏览器中输入http://服务器ip地址/zabbix,在web页面中完成相关配置。
以上提到的编译安装的方法也适用于agent和proxy。
编译安装agent时,使用Zabbix server相同的源码包,只需要配置--enable-agent选项,例如:
# ./configure --enable-agent
编译安装proxy时,使用Zabbix server相同的源码包,只需要配置--enable-proxy选项,例如:
# ./configure --enable-proxy
当你使用其他数据库产品时,可以使用配置选项--with-oracle、--with-postgresql或着--with-ibm-db2。
本文出自 http://ustogether.blog.51cto.com/8236854/1921034,如需转载请与作者联系。
转载于:https://blog.51cto.com/ustogether/1921034