在开始之前,一些观点和定义须要我们提前理解一下(以下内容摘自官方网站)。

1.1 几个观点

架构

zabbixphp安装配置Zabbix最佳实践一Zabbix Server 的安装与设置装备摆设 Node.js

Zabbix 由几个紧张的功能组件组成,其职责如下所示。

server

Zabbix server 是Zabbix agent 向其报告可用性、系统完全性信息和统计信息的核心组件。
是存储所有配置信息、统计信息和操作信息的核心存储库。

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 前端所做的任何变动须要花费两分钟旁边才能显示在最新的数据段的缘故原由。

数据库

所有配置信息以及 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 的配置变得更加灵巧易用。

1.2 一些定义

主机(host)

· 你想要监控的联网设备,有IP/DNS。

主机组(host group)

· 主机的逻辑组;可能包含主机和模板。
一个主机组里的主机和模板之间并没有任何直接的关联。
常日在给不同用户组的主机分配权限时候利用主机组。

监控项(item)

· 你想要吸收的主机的特天命据,一个度量/指标数据。

值预处理(value preprocessing)

· 转化/预处理吸收到的指标数据 存入数据库之前。

触发器(trigger)

· 一个被用于定义问题阈值和\公众评估\公众监控项吸收到的数据的逻辑表达式。
当吸收到的数据高于阈值时,触发器从\"大众OK\公众变成\"大众Problem\"大众状态。
当吸收到的数据低于阈值时,触发器保留/返回\公众OK\公众的状态。

事宜(event)

· 一次发生的须要把稳的事情,例如触发器状态改变、创造/监控代理自动注册。

事宜标签(event tag)

· 提前设置的事宜标记可以被用于事宜关联,权限细化设置等。

事宜关联(event correlation)

· 自动灵巧的、精确的关联问题和解决方案。

比如说,你可以定义触发器A告警的非常可以由触发器B办理,触发器B可能采取完备不同的数据采集办法。

非常(problems)

· 一个处在\"大众非常\"大众状态的触发器。

非常更新(problem update)

· Zabbix供应的问题管理选项,例如添加评论、确认非常、改变问题级别或者手动关闭等。

动作(action)

· 预先定义的应对事宜的操作。
一个动作由操作(例如发出关照)和条件(什么韶光进行操作)组成。

升级(escalation)

· 一个在动作内实行操作的自定义办法; 发送关照/实行远程命令的顺序安排。

媒介(media)

· 发送告警关照的办法,传送路子。

关照(notification)

· 关于事宜的信心,将通过选设定的媒介路子发送给用户。

远程命令(remote command)

· 一个预定义好的,知足特定条件的情形下,可以在被监控主机上自动实行的命令。

模版(template)

· 一组可以被运用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,运用,LLD,Web场景)的凑集。
模版的运用使得主机上的监控任务支配快捷方便;也可以使监控任务的批量修正更加大略。
模版是直接关联到每台单独的主机上。

运用(application)

· 一组监控项组成的逻辑分组。

Web场景(web scenario)

· 检讨网站可浏览性的一个或多个HTTP要求。

前端(frontend)

· Zabbix供应的web界面。

Zabbix API

· Zabbix API许可用户利用JSON RPC协议来创建、更新和获取Zabbix工具(如主机、监控项、图形和其他)信息或者实行任何其他的自定义的任务。

Zabbix server

· Zabbix监控的核心程序,紧张功能是与Zabbix proxies和Agents进行交互、触发器打算、发送告警关照;并将数据集中保存等。

Zabbix agent

· 支配在监控工具上的,能够主动监控本地资源和运用的程序。

Zabbix proxy

· 一个帮助Zabbix Server网络数据,分担Zabbix Server的负载的程序。

加密(encryption)

· 支持Zabbix组建之间的加密通讯(server, proxy, agent, zabbix_sender 和 zabbix_get 程序) 利用TLS(Transport Layer Security )协议。

二.环境

由于实验环境资源有限,本实验中只有一台 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主机的防火墙已关闭。

三.安装与配置过程

3.1 Zabbix Server 的安装与配置

3.1.1 安装仓库配置包

[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%]

3.1.2 安装 zabbix-server-mysql、zabbix-web-mysql 及zabbix-agent

[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

完毕!

3.1.3 安装mariadb(MySQL)

在某些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.

3.1.3 创建干系数据库并设置

[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设置了密码。

3.1.4 修正干系配置

[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

3.1.5 数据初始化

[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张表,确认无误。

3.1.6 修正时区

[root@zabbix ~]# sed -i.bak '/Europe\/Riga/a \tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf

3.1.7 完成末了设置并重启做事器

[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 已经正常运行,等待进一步配置。

3.2 配置 Zabbix Web

3.2.1 初始化Web设置

在浏览器地址栏输入:(http://server_ip_or_name/zabbix)后按下回车键。
点击Next setup按钮,按照提示输入必填内容,填写完毕之后界面大致如下:

涌现以下界面解释安装成功。

点击Finish即可。

3.2.2 登录并大略设置

输入用户名 Admin 以及密码 zabbix 以作为 Zabbix 超级用户登录。
页面右上角找到用户头像标志,把措辞设置为中文。

3.3 在Host主机上安装agent程序并设置

[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.

3.4 添加第一台被监控主机

登录系统之后,依次点击:配置->创建主机(右上角)。
依次填入或者选择如下图所示项目:

选择模板并添加:

选择完成之后,点击添加,查看:

涌现如上图所示内容则代表配置成功,可以进一步探索Zabbix强大的功能了。

四.总结

4.1 总体来说,Zabbix是非常随意马虎安装、利用的,但是在安装过程中还是须要把稳一些细节。

4.3 Zabbix 的官方文档很详细,还供应中文版,但是也还有一些坑须要我们去思考、总结。

4.4 如果利用二进制安装,那么进程管理账户那是非常有必要考虑的。
在官方文档中有提到,zabbix server 和 zabbix agent 在同一台主机上安装时,须要利用不通的进程管理账户。

4.4 这篇文章紧张先容的Zabbix的安装,截图较少,须要一些利用履历。
进一步的利用会在后面的文章中详细展开先容,不敷之处万望海涵。
愿大家与我一起发展!

五.干系资料

敬请参阅本人同名CSDN博客及GitHub。