Zabbix

Zabbix
Noah名称 介绍
Server
Zabbix server 是 Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储所
有配置信息、统计信息和操作信息的核心存储库。
数据库 所有配置信息以及 Zabbix 收集到的数据都被存储在数据库中。
Web
界面
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix
server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Proxy
Zabbix proxy 可以替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可
选部分;然而,它对于单个 Zabbix server 负载的分担是非常有益的。
Agent
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给
Zabbix server。
主机名 IP 地址 操作系统 角色 硬件环境
zabbix-server 自定义 centos7 监控主机 2Core/4GMem/50Gdisk
zabbix-agent 自定义 centos7 被控主机 2Core/4GMem/50Gdisk
zabbix
一、简介
1.zabbix 介绍
Zabbix 是由 Alexei Vladishev 创建,目前是由 Zabbix SIA 在持续开发和提供支持,Zabbix 是一种企业级的分布式开
源监控解决方案。Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知
机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速相应服务器问题。Zabbix 基于存储的数据提供
出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。
官网地址:https://www.zabbix.com/cn 2.主要的功能组件
二、二进制包安装 1.环境说明
关闭防火墙 2.配置 zabbix 的仓库 3.安装 Zabbix server,Web 前端,agent 4.下载 CentOS 的 SCL 仓库(提供 zabbix 前端所需的一些的软件包) 5.安装 Zabbix 前端软件包
6.mysql 数据库安装 #关闭 firewalld
systemctl stop firewalld && systemctl disable firewalld #关闭 selinux
setenforce 0
sed -ri ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-
1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-agent -y
yum install centos-release-scl -y #编辑配置文件 /etc/yum.repos.d/zabbix.repo
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
…
enabled=1
…
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 7.为 Zabbix server 配置数据库 8.为 Zabbix 前端配置 PHP 9.启动 Zabbix server 和 agent 进程
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
三、初始化设置 1.登录 zabbix
从浏览器上访问 Zabbix 前端 URL: http://ip
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-server #启动数据库
systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld #查看密码
grep ‘password’ /var/log/mysqld.log #修改密码
mysqladmin -uroot -p’)g>62Ehr=ET’ password ‘Admin123.’ #登录数据库执行以下代码
[root@localhost ~]#mysql -uroot -pAdmin123.
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by ‘Admin123.’;
mysql> grant all privileges on zabbix. to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit; #导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix #登录数据库执行以下代码
[root@localhost ~]#mysql -uroot -pAdmin123.
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
vim /etc/zabbix/zabbix_server.conf
DBPassword=Admin123. #修改以下参数
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 80;
server_name example.com; #添加
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
请确保这里的 Check of pre-requisites 必须全部项目 OK 后才能继续配置,如有提示 fail,去 server 上检查是否安装这
个包或配置是否按上述更改。
输入连接数据库所需的详细信息,Zabbix 数据库必须先建立好。
请输入 Zabbix 服务器详情,可选的输入 Zabbix 服务器的名字,然而如果输入并提交了, Zabbix 服务器的名字将会显示
在菜单和页面的标题。
安装前总结回顾所有配置
安装完成
Zabbix 前端已经安装完成! 超级用户名是 Admin, 密码 zabbix
Web 界面概览 2.修改界面语言 3.修改 Admin 密码
密码没有长度与复杂度要求,按照具体情况设置即可。 4.解决 Zabbix 中文乱码
当我们查看图形化的时候会有一些乱码(如图)
解决方法 #将准备好的字体文件传到 zabbix 存放字体文件路径,并覆盖原文件内容。
cd /usr/share/zabbix/assets/fonts/
cp SIMSUN.TTC graphfont.ttf
刷新 web 界面即可 5.创建组
zabbix 并没有为单独用户设置主机管理权限,所有的权限都通过组进行统一分配,当用户加入到对应的组后,将权限
分配到对应的组中即可继承组权限。
填写组名
添加组权限 6.增加用户
除了 Admin 超级管理员以外,还可以创建普通用户给公司其他员工使用。
四、被控机安装客户端 1.配置 zabbix 的仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-
1.el7.noarch.rpm
yum clean all 2.安装客户端
yum -y install zabbix-agent 3.修改 agent 配置文件,定义 zabbix server 的地址
vim /etc/zabbix/zabbix_agentd.conf
…
Server=192.168.134.141 –指定 zabbix server 地址(谁可以监控我)
Hostname=192.168.134.142 –指定本机地址 4.启动服务并设置服务开机自启
systemctl start zabbix-agent && systemctl enable zabbix-agent 5.到 zabbix-server 的 web 页面添加被控主机
回到 Zabbix server 的 web 界面,通过 配置(Configuration) → 主机(Hosts)→ 创建主机(Create host)
以添加新的主机。
查看主机
表示主机状态尚未建立,尚未发生监控指标检查
表示主机可用,监控指标检查已成功
表示主机不可用,监控指标检查失败(将鼠标光标移动到图标上以查看错误消息)。可能是由于接口凭证不正确造成
了通信问题。检查 zabbix server 是否正在运行,并稍后尝试刷新页面。
五、快速入门 1.模板
模版可以对监控项、触发器、图形等进行归类,当一个模版链接到一个主机后,主机会继承这个模版中的所有功能。
配置(Configuration) → 模版(Templates)创建模版(Createtemplate)
模版名称:名称自定义,不支持中文。
群组:模版必须属于一个组,可以自建,可以使用 zabbix 提供的组。 2.应用集
模板中的应用集我们可以理解为监控项的分组,可以将相同类型的监控项分配到同一个应用集内。
配置 → 模板 找到对应的模板选择 应用集 → 创建应用集
创建应用集 3.监控项
监控项是 Zabbix 中获得数据的基础,没有监控项,就没有数据。
配置 → 模板 页面查找到我们自建的模板,点击模板中的 监控项然后 创建监控项 4.主机绑定模板
点击 配置 → 主机 找到你的主机,然后选择 模板,选择好模板后,点击更新
点击检测 → 主机 → 最新数据查看监控的值 5.图表
当监控项运行了一段时间后,可以查看可视化图表,点击监控项后的 图形(Graph)以查看图表。 6.模板导出
配置(Configuration) → 模板(Templates)选中要导出模板的复选框,单击列表下面的 导出(Export) 按
钮。 7.模板导入
配置(Configuration) → 模板(Templates)单击右上角的 导入(Import) 按钮,选择要导入的文件,标记
导入规则里要求的选项,单击 导入(Import) 按钮
六、Zabbix 故障告警
zabbix 具备灵活的故障告警功能,允许用户几乎为任何的监控项配置基于电子邮件、短信、企业微信、钉钉等告警通
知,这样管理员就可以快速响应服务器出现的问题。
1.E-mail 报警
需要通过网页将邮箱的 SMTP 功能启动,然后新增授权码,然后获取到 163 邮箱 SMTP 服务器的地址。
前往管理(Administration) → 报警媒介类型(Media types)点击列表中的 Email 设置表单如下图:
名称:Email 为报警媒介类型名称 SMTP 服务器:用于发送邮件的服务器 SMTP HELO:向服务器标识用户身份
SMTP 电邮:用于发送邮件的账户 2.触发器
触发器会根据监控项的异常状态触发报警,而不需要我们直接在 Zabbix 前端进行查看,这就是通知的功能。
为监控项配置触发器,前往配置(Configuration) → 主机(Hosts)找到对应主机(New host)点击旁边的
触发器(Triggers),然后点击创建触发器(Create trigger) 3.动作
为了建立一个报警通知
前往配置(Configuration) → 动作(Actions),然后点击创建动作(Create action)
先配置第一个操作,点击操作内的 添加
下边是 zabbix 内置的用户自定义告警消息模板,用于指定发送告警的具体消息,将该内容复制到对应的参数内
故障告警:{EVENT.NAME}
告警主机: {HOST.NAME}
主机地址: {HOST.IP}
监控项目: {ITEM.NAME}
当前取值: {ITEM.LASTVALUE}
告警等级: {TRIGGER.SEVERITY}
告警时间: {EVENT.DATE}-{EVENT.TIME}
事件 ID: {EVENT.ID}
接下来配置告警恢复操作,点击恢复操作内的 添加
下边是 zabbix 内置的用户自定义告警消息变量,用于指定故障恢复时,发送告警的具体消息,将该内容复制到对应的
参数内
故障恢复:{EVENT.NAME}
主机地址: {HOST.IP}
告警名称: {EVENT.NAME}
持续时长: {EVENT.DURATION}
恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}
当前状态: {TRIGGER.STATUS}
当前取值: {ITEM.LASTVALUE}
事件 ID: {EVENT.ID} 4.定义收件人
我们在定义一个外界的收件人邮箱,这个可以是实际工作中管理员的具体邮箱地址。
选择用户基本资料 → 报警媒介 添加收件人的邮箱
七、zabbix 可视化 1.自定义图表
自定义图表提供自定义功能,如果你想更改图表样式或线条的显示方式或比较多个项目,你需要一个自定义图表。
要创建自定义图表,转到 配置 → 主机(或模板)单击所需主机或模板旁边的行中的 图形在图表屏幕中单击 创
建图表 2.聚合图形
聚合图形的用途是可以将多个图形聚合在一个图形中展示,在 监测 → 聚合图形 可以配置、管理、查看 Zabbix 聚合
图形,如果要创建新的聚合图形,点击屏幕右上角的 创建聚合图形(Create screen)也可从 XML 文件导入现成的局
和图形。
3.Zabbix 拓扑图
在 监测 → 拓扑图 部分,可以配置、管理、查看网络拓扑图,要配置新的拓扑图点击右上角的 创建拓扑图 按
钮,也可从 XML 文件导入拓扑图。
4.Zabbix 仪表板
zabbix 仪表板是由多个小模块组成,可以有服务器信息、拓扑图、摘要、告警项、图形、时钟等模块进行组合
展示,访问方式 监测 → 仪表板 这里是监控信息的一个汇总,方便你快速总览当前全局监控状态。点击编辑仪
表盘可以对仪表板进行个性化添加构件
八、Zabbix 监控方式
1.Zabbix 自动发现
主机名 IP 地址
zbx-proxy 代理
zbx-proxy-node01 被控主机
在企业集群环境中,当需要监控大量服务器时,zabbix 提供的自动发现功能比手工的一台一台添加监控主机会更加的
方便,自动发现可以自动扫描网络中的主机,并把满足条件的主机自动添加到监控中,并自动绑定监控模板,实现自
动监控 。
2.Zabbix 自动注册
自动注册(Active agent auto-registration)与自动发现相反,自动注册是 Zabbix Agent 端主动向 Zabbix Server 发
送被监控的请求,这样在对大量服务器进行监控的场景下可以降低 Zabbix Server 端的压力。
3.Zabbix Proxy 分布式监控
当监控的服务器成千上万时,对于 Zabbix Server 的压力会很大,所以就有了分布式 Zabbix Proxy 代理监控来分担
Zabbix Server 的压力,代理服务器统一收集 Agent 端数据后返回给 Zabbix Server。 1.部署 zbx-proxy #修改主机名
hostnamectl set-hostname zbx-proxy #配置仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-
1.el7.noarch.rpm
yum clean all #安装 zabbix proxy 软件(需要连接数据库)
yum -y install zabbix-proxy-mysql
部署数据库(用于存储 agent 指标)
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-server #启动数据库
systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld #查看密码
grep ‘password’ /var/log/mysqld.log #修改密码
mysqladmin -uroot -p’-GCows7S5li3’ password ‘Admin123.’ #登录数据库执行以下代码
[root@localhost ~]#mysql -uroot -pAdmin123.
mysql> create database zabbix_proxy;
mysql> grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by ‘Admin123.’;
mysql> quit; #导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.40/schema.sql.gz | mysql -uzabbix_proxy -
pAdmin123. zabbix_proxy
配置 zabbix proxy 连接数据库
vim /etc/zabbix/zabbix_proxy.conf
…
30 Server=192.168.134.119 –指定 zabbix server 地址
49 Hostname=zbx-proxy –指定本机名称(自定义),用于 zabbixserver 区分每一个 proxy 节点
173 DBName=zabbix_proxy –指定数据库名(与数据库创建的库名保持一致)
188 DBUser=zabbix_proxy –指定连接数据库用户名(与数据库授权用户名称保持一致)
196 DBPassword=Admin123. –指定用户密码 #启动 zabbix proxy 服务
systemctl start zabbix-proxy && systemctl enable zabbix-proxy 2.部署 zbx-proxy-node01 #修改主机名
hostnamectl set-hostname zbx-proxy-node01 #配置仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-
1.el7.noarch.rpm #安装 zabbix-agent 程序
yum -y install zabbix-agent #修改配置文件指定 zabbix proxy 地址
vim /etc/zabbix/zabbix_agentd.conf
…
119 Server=192.168.134.137 –指定 zabbix proxy 地址
171 Hostname=zbx-proxy-node01 –本机名称,用于 zabbix proxy 区分每一个 agent 节点 #启动 zabbix agent
systemctl start zabbix-agent && systemctl enable zabbix-agent
3.Zabbix server 添加代理
管理 → agent 代理程序 → 创建代理
添加代理后,如果出现从未 红色提示信息,是 zabbix server 还没识别到代理节点,可稍等片刻
接下来 Zabbix Proxy 添加 Agent 配置 → 主机 → 创建主机 指定 Agent 节点信息,如下图:
绑定模板后,点击 添加。
验证:到此为止,Zabbix Proxy 分布式监控已配置完成。
4.Zabbix_Web 监测
Web 监测属于业务监测,模拟用户去访问网站,用来监测 Web 站点多方面的可用性,可以监控 web 站点的相关延迟,
响应时间,下载时间等指标,从而判断网站 Web 服务的可用性。
通过左侧栏的 配置 → 主机 找到对应的主机点击 Web 监测 后点击右上角的创建 Web 场景
填写场景名称、应用集、更新间隔、尝试次数以及客户端,这些都可以自定义 。
配置步骤
随后点击步骤,配置第一步骤,配置如下图所示,步骤名称自定义,URL 填写打开 Discuz 论坛时的网址链接
勾选 跟随跳转(不勾选会报 301 错误),超时时间默认 15s,要求的状态码填 200(多个状态码用英文逗号隔开即
可,如:200,404,500),然后点击右下角 添加 添加步骤,再次点击 添加,成功添加新的 Web 场景。
查看 Web 监测
具体图形可通过 监测 → 主机,可以看到我们配置了 WEB 监测的主机,点击 Web 监测 1 ,稍等一分钟后可以看到
有数据,说明配置无误。
九、Zabbix 性能优化
1.Zabbix 监控项优化
zabbix 自带模板里面涉及各种监控项,实际情况并不需要用到所有的,关掉无用监控项,仅监控重要的指标,最好可
以自己按照需要自建监控模板。 2.增加监控项的取值间隔
这个调整的原则是,在满足需求的情况下,尽量将频率调低,也就是间隔调大,举个例子: 磁盘空间变化不会太剧
烈,它的监控就可以时间间隔调大一些,磁盘总量改变的可能性更小了,所以间隔为一天也没关系。 3.减少历史数据保存周期
有些监控主要是为了报警,历史数据并没有那么重要,详细的历史记录可将时间调小,多留一些趋势记录,趋势记录
里面的数据虽然不够详细但也能作为大概的参考。 4.调整监控模式
大量主机监控环境下, 由 Server 端去收集数据会出现严重的性能问题,例如: web 操作很卡,容易出现 502, 图层
断裂等问题。优化方向: 1.添加 proxy 节点做分布式监控 2.采用被动监控方式来减轻 zabbix server 压力
5.zabbix 数据库优化
针对数据库写多读少的表,如果使用 InnoDB 存储引擎,zabbix 的运行效率至少要快 1.5 倍(与 MyISAM 相比),
InnoDB 存储引擎采用行级锁更适合写多读少的场景,但是 InnoDB 需要更多的 CPU 性能。






