主动检查 处理过程将相对复杂。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
完毕!
Zabbix-proxy在此并未进行安装,后期涉及到会进行配置安装。
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年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
arget.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@zabbix ~]# reboot
重启之后如果无其他异常,那么 Zabbix Server 已经正常运行,等待进一步配置。
### 3.2 配置 Zabbix Web
[外链图片转存中...(img-i8OYSzpp-1719242534842)]
[外链图片转存中...(img-DcSihPpW-1719242534843)]
[外链图片转存中...(img-yVJ54zdE-1719242534843)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**