标签:app 版本 频率 rest repr ash usr 按钮 数据流
一.概述在开始之前,一些概念和定义需要我们提前了解一下(以下内容摘自官方网站)。
架构
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 的配置变得更加灵活易用。
主机(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 最新版官方中文文档
Zabbix最佳实践一:Zabbix Server 的安装与配置
标签:app 版本 频率 rest repr ash usr 按钮 数据流
原文地址:http://blog.51cto.com/3842834/2327262