在开始以前,一些概念和定义须要咱们提早了解一下(如下内容摘自官方网站)。php
架构前端
Zabbix 由几个主要的功能组件组成,其职责以下所示。mysql
Serverlinux
Zabbix server 是Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储全部配置信息、统计信息和操做信息的核心存储库。web
Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身能够经过简单服务远程检查网络服务(如Web服务器和邮件服务器)。sql
Zabbix Server是全部配置、统计和操做数据的中央存储中心,也是 Zabbix 监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。数据库
基本的 Zabbix Server 的功能分解成为三个不一样的组件。他们是:Zabbix server、Web前端和数据库。centos
Zabbix 的全部配置信息都存储在 Server 和 Web 前端进行交互的数据库中。例如,当你经过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。而后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为何 Zabbix 前端所作的任何更改须要花费两分钟左右才能显示在最新的数据段的缘由。浏览器
数据库缓存
全部配置信息以及 Zabbix 收集到的数据都被存储在数据库中。
Web 界面
为了从任何地方和任何平台轻松访问 Zabbix ,咱们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,一般(但不必定)和 Zabbix server 运行在同一台物理机器上。
Proxy
Zabbix proxy 能够替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可选部分;然而,它对于单个 Zabbix server 负载的分担是很是有益的。
Zabbix proxy 是一个能够从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是表明 Zabbix server 工做。 全部收集的数据都在本地缓存,而后传输到 proxy 所属的 Zabbix server。
部署Zabbix proxy 是可选的,但可能很是有利于分担单个 Zabbix server 的负载。 若是只有代理采集数据,则 Zabbix server 上会减小 CPU 和磁盘 I/O 的开销。Zabbix proxy 是无需本地管理员便可集中监控远程位置、分支机构和网络的理想解决方案。Zabbix proxy 须要使用独立的数据库。
Agent
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。
Zabbix agent 收集本地的操做信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。
Zabbix agents 的极高效率缘于它能够利用本地系统调用来完成统计数据的采集。
Zabbix agent 能够运行被动检查和主动检查。
在被动检查 模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,而后 Zabbix agent 返还结果。
主动检查 处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,而后会按期发送采集到的新值给 Zabbix server。
是否执行被动或主动检查是经过选择相应的监控项类型来配置的。 Zabbix agent 处理“Zabbix agent”或“Zabbix agent(active)”类型的监控项。
数据流
首先,为了建立一个采集数据的监控项,您就必须先建立主机。其次,必须有一个监控项来建立触发器。最后,您必须有一个触发器来建立一个动做,这几个点构成了一个完整的数据流。所以,若是您想要收到 CPU load it too high on Server X 的告警,您必须首先为 Server X 建立一个主机条目,其次建立一个用于监视其 CPU 的监控项,最后建立一个触发器,用来触发 CPU is too high 这个动做,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,可是使用模板的话,其实并不复杂。也正是因为这种设计,使得 Zabbix 的配置变得更加灵活易用。
主机(host)
主机组(host group)
监控项(item)
值预处理(value preprocessing)
触发器(trigger)
事件(event)
事件标签(event tag)
事件关联(event correlation)
好比说,你能够定义触发器A告警的异常能够由触发器B解决,触发器B可能采用彻底不一样的数据采集方式。
异常(problems)
异常更新(problem update)
动做(action)
升级(escalation)
媒介(media)
通知(notification)
远程命令(remote command)
模版(template)
应用(application)
Web场景(web scenario)
前端(frontend)
Zabbix API
Zabbix server
Zabbix agent
Zabbix proxy
加密(encryption)
因为实验环境资源有限,本实验中只有一台 Zabbix Server 和一台被监控的Host,配置以下:
Zabbix Server
[root@zabbix ~]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) [root@zabbix ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+' 172.31.3.21/22 [root@zabbix ~]# zabbix_server --version zabbix_server (Zabbix) 4.0.2
Host
[root@httpd ~]# cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) [root@httpd ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+' 172.31.3.41/22 [root@httpd ~]# zabbix_agentd -V zabbix_agentd (daemon) (Zabbix) 4.0.2
Host主机的防火墙已关闭。
[root@zabbix ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
若是这一步没法正常执行,那么咱们还能够去官方仓库下载相关repo的rpm包进行安装。
[root@zabbix ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm 警告:zabbix-release-4.0-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:zabbix-release-4.0-1.el7 ################################# [100%]
[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent 已安装: zabbix-agent.x86_64 0:4.0.2-1.el7 zabbix-server-mysql.x86_64 0:4.0.2-1.el7 zabbix-web-mysql.noarch 0:4.0.2-1.el7 做为依赖被安装: OpenIPMI-libs.x86_64 0:2.0.23-2.el7 OpenIPMI-modalias.x86_64 0:2.0.23-2.el7 apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 fping.x86_64 0:3.10-1.el7 gnutls.x86_64 0:3.3.26-9.el7 httpd.x86_64 0:2.4.6-80.el7.centos httpd-tools.x86_64 0:2.4.6-80.el7.centos iksemel.x86_64 0:1.4-2.el7.centos libX11.x86_64 0:1.6.5-1.el7 libX11-common.noarch 0:1.6.5-1.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.12-1.el7 libevent.x86_64 0:2.0.21-4.el7 libjpeg-turbo.x86_64 0:1.2.90-5.el7 libpng.x86_64 2:1.5.13-7.el7_2 libtool-ltdl.x86_64 0:2.4.2-22.el7_3 libxcb.x86_64 0:1.12-1.el7 libxslt.x86_64 0:1.1.28-5.el7 libzip.x86_64 0:0.10.1-8.el7 mailcap.noarch 0:2.1.41-2.el7 net-snmp-libs.x86_64 1:5.7.2-32.el7 nettle.x86_64 0:2.7.1-8.el7 php.x86_64 0:5.4.16-45.el7 php-bcmath.x86_64 0:5.4.16-45.el7 php-cli.x86_64 0:5.4.16-45.el7 php-common.x86_64 0:5.4.16-45.el7 php-gd.x86_64 0:5.4.16-45.el7 php-ldap.x86_64 0:5.4.16-45.el7 php-mbstring.x86_64 0:5.4.16-45.el7 php-mysql.x86_64 0:5.4.16-45.el7 php-pdo.x86_64 0:5.4.16-45.el7 php-xml.x86_64 0:5.4.16-45.el7 t1lib.x86_64 0:5.1.2-14.el7 trousers.x86_64 0:0.3.14-2.el7 unixODBC.x86_64 0:2.3.1-11.el7 zabbix-web.noarch 0:4.0.2-1.el7 完毕!
在某些CentOS版本中,MySQL已经被替换为mariadb,mariadb彻底兼容MySQL,而且不存在法律风险,是MySQL良好的替代品。固然,若是要安装MySQL,那么也是没有问题的,我以前的博文有关各种MySQL的安装教程,可供参考。因为实验环境资源有限,本人把 mariadb 也安装在了与 Zabbix Server 相同的主机上。生产环境的话仍是尽可能把数据库独立处理安装与配置。
[root@zabbix ~]# yum -y install mariadb-server 已安装: mariadb-server.x86_64 1:5.5.60-1.el7_5 做为依赖被安装: mariadb.x86_64 1:5.5.60-1.el7_5 完毕! [root@zabbix ~]# systemctl start mariadb [root@zabbix ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix ~]# mysql -uroot -p MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | zabbix | +--------------------+ MariaDB [(none)]> show variables like 'character_set_database'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | character_set_database | latin1 | +------------------------+--------+ 1 row in set (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix.gysl'; MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('zabbix.gysl'); MariaDB [(none)]> quit Bye
Mariadb 安装完成以后默认无密码,在提示输入密码那一步直接按回车键便可登入。等入数据库以后,建立了数据库zabbix,授予全部的权限并设置密码。最后顺便给mariadb设置了密码。
[root@zabbix ~]# sed -i.bak '/^DBUser/a DBPassword=zabbix.gysl' /etc/zabbix/zabbix_server.conf [root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf |grep -v ^#|grep ^"\S" LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid SocketDir=/var/run/zabbix DBName=zabbix DBUser=zabbix DBPassword=zabbix.gysl SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix Enter password: [root@zabbix ~]# mysql -u zabbix -p Enter password: MariaDB [(none)]> use zabbix; MariaDB [zabbix]> show tables; 144 rows in set (0.00 sec) MariaDB [zabbix]> exit Bye
输入以前咱们设置的密码,回车键稍后便可。144张表,确认无误。
[root@zabbix ~]# sed -i.bak '/Europe\/Riga/a \\tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
[root@zabbix ~]# systemctl stop firewalld [root@zabbix ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@zabbix ~]# systemctl start httpd [root@zabbix ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@zabbix ~]# systemctl restart zabbix-server zabbix-agent [root@zabbix ~]# systemctl enable zabbix-server zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@zabbix ~]# reboot
重启以后若是无其余异常,那么 Zabbix Server 已经正常运行,等待进一步配置。
在浏览器地址栏输入:http://172.31.3.21/zabbix
(http://server_ip_or_name/zabbix)后按下回车键。
点击Next setup按钮,按照提示输入必填内容,填写完毕以后界面大体以下:
出现如下界面说明安装成功。
点击Finish便可。
输入用户名 Admin 以及密码 zabbix 以做为 Zabbix 超级用户登陆。页面右上角找到用户头像标志,把语言设置为中文。
[root@httpd ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm [root@httpd ~]# yum -y install zabbix-agent [root@httpd ~]# sed -i.bak 's/Server=127.0.0.1/Server=172.31.3.21/g' /etc/zabbix/zabbix_agentd.conf [root@httpd ~]# systemctl start zabbix-agent [root@httpd ~]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
登陆系统以后,依次点击:配置->建立主机(右上角)。依次填入或者选择以下图所示项目:
选择模板并添加:
选择完成以后,点击添加,查看:
出现如上图所示内容则表明配置成功,能够进一步探索Zabbix强大的功能了。
4.1 整体来讲,Zabbix是很是容易安装、使用的,可是在安装过程当中仍是须要注意一些细节。
4.3 Zabbix 的官方文档很详细,还提供中文版,可是也还有一些坑须要咱们去思考、总结。
4.4 若是使用二进制安装,那么进程管理帐户那是很是有必要考虑的。在官方文档中有提到,zabbix server 和 zabbix agent 在同一台主机上安装时,须要使用不通的进程管理帐户。
4.4 这篇文章主要介绍的Zabbix的安装,截图较少,须要一些使用经验。进一步的使用会在后面的文章中具体展开介绍,不足之处万望海涵。愿你们与我一块儿成长!
5.1 官方仓库
5.2 下载地址及简要安装教程
5.3 Zabbix安全最佳实践
5.4 CentOS环境下官方安装教程
5.5 最新版官方中文文档