Zabbix 是由 Alexei Vladishev 创建,目前是由 Zabbix SIA 在持续开发和提供支持,Zabbix 是一种企业级的分布式开源监控解决方案。Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速相应服务器问题。Zabbix 基于存储的数据提供出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。
官网地址:https://www.zabbix.com/cn
名称 | 介绍 |
---|---|
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 |
关闭防火墙
#关闭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
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>62E*hr=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
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
从浏览器上访问Zabbix前端URL: http://ip
请确保这里的Check of pre-requisites必须全部项目OK后才能继续配置,如有提示fail,去server上检查是否安装这个包或配置是否按上述更改。
输入连接数据库所需的详细信息,Zabbix数据库必须先建立好。
请输入Zabbix服务器详情,可选的输入Zabbix服务器的名字,然而如果输入并提交了, Zabbix服务器的名字将会显示在菜单和页面的标题。
安装前总结回顾所有配置
安装完成
Zabbix前端已经安装完成! 超级用户名是 Admin, 密码 zabbix
Web界面概览
密码没有长度与复杂度要求,按照具体情况设置即可。
当我们查看图形化的时候会有一些乱码(如图)
解决方法
#将准备好的字体文件传到zabbix存放字体文件路径,并覆盖原文件内容。
cd /usr/share/zabbix/assets/fonts/
cp SIMSUN.TTC graphfont.ttf
刷新web界面即可
zabbix并没有为单独用户设置主机管理权限,所有的权限都通过组进行统一分配,当用户加入到对应的组后,将权限分配到对应的组中即可继承组权限。
填写组名
添加组权限
除了Admin超级管理员以外,还可以创建普通用户给公司其他员工使用。
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 -y install zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
...
Server=192.168.134.141 --指定zabbix server地址(谁可以监控我)
Hostname=192.168.134.142 --指定本机地址
systemctl start zabbix-agent && systemctl enable zabbix-agent
回到Zabbix server 的web界面,通过 配置(Configuration) → 主机(Hosts)→ 创建主机(Create host)以添加新的主机。
查看主机
表示主机状态尚未建立,尚未发生监控指标检查
表示主机可用,监控指标检查已成功
表示主机不可用,监控指标检查失败(将鼠标光标移动到图标上以查看错误消息)。可能是由于接口凭证不正确造成了通信问题。检查zabbix server是否正在运行,并稍后尝试刷新页面。
模版可以对监控项、触发器、图形等进行归类,当一个模版链接到一个主机后,主机会继承这个模版中的所有功能。
配置(Configuration) → 模版(Templates)创建模版(Createtemplate)
模版名称:名称自定义,不支持中文。
群组:模版必须属于一个组,可以自建,可以使用zabbix提供的组。
模板中的应用集我们可以理解为监控项的分组,可以将相同类型的监控项分配到同一个应用集内。
配置 → 模板 找到对应的模板选择 应用集 → 创建应用集
创建应用集
监控项是Zabbix中获得数据的基础,没有监控项,就没有数据。
配置 → 模板 页面查找到我们自建的模板,点击模板中的 监控项然后 创建监控项
点击 配置 → 主机 找到你的主机,然后选择 模板,选择好模板后,点击更新
点击检测→主机→最新数据查看监控的值
当监控项运行了一段时间后,可以查看可视化图表,点击监控项后的 图形(Graph)以查看图表。
配置(Configuration) → 模板(Templates)选中要导出模板的复选框,单击列表下面的 导出(Export) 按钮。
配置(Configuration) → 模板(Templates)单击右上角的 导入(Import) 按钮,选择要导入的文件,标记导入规则里要求的选项,单击 导入(Import) 按钮
zabbix具备灵活的故障告警功能,允许用户几乎为任何的监控项配置基于电子邮件、短信、企业微信、钉钉等告警通知,这样管理员就可以快速响应服务器出现的问题。
需要通过网页将邮箱的SMTP功能启动,然后新增授权码,然后获取到163邮箱SMTP服务器的地址。
前往管理(Administration) → 报警媒介类型(Media types)点击列表中的 Email 设置表单如下图:
名称:Email为报警媒介类型名称 SMTP服务器:用于发送邮件的服务器 SMTP HELO:向服务器标识用户身份 SMTP电邮:用于发送邮件的账户
触发器会根据监控项的异常状态触发报警,而不需要我们直接在Zabbix前端进行查看,这就是通知的功能。
为监控项配置触发器,前往配置(Configuration) → 主机(Hosts)找到对应主机(New host)点击旁边的触发器(Triggers),然后点击创建触发器(Create trigger)
为了建立一个报警通知
前往配置(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}
我们在定义一个外界的收件人邮箱,这个可以是实际工作中管理员的具体邮箱地址。
选择用户基本资料→ 报警媒介 添加收件人的邮箱
自定义图表提供自定义功能,如果你想更改图表样式或线条的显示方式或比较多个项目,你需要一个自定义图表。
要创建自定义图表,转到 配置→主机(或模板)单击所需主机或模板旁边的行中的 图形在图表屏幕中单击 创建图表
聚合图形的用途是可以将多个图形聚合在一个图形中展示,在 监测 → 聚合图形 可以配置、管理、查看Zabbix 聚合图形,如果要创建新的聚合图形,点击屏幕右上角的 创建聚合图形(Create screen)也可从XML文件导入现成的局和图形。
在 监测→ 拓扑图 部分,可以配置、管理、查看网络拓扑图,要配置新的拓扑图点击右上角的 创建拓扑图 按钮,也可从XML文件导入拓扑图。
zabbix仪表板是由多个小模块组成,可以有服务器信息、拓扑图、摘要、告警项、图形、时钟等模块进行组合展示,访问方式 监测 → 仪表板 这里是监控信息的一个汇总,方便你快速总览当前全局监控状态。点击编辑仪表盘可以对仪表板进行个性化添加构件
在企业集群环境中,当需要监控大量服务器时,zabbix提供的自动发现功能比手工的一台一台添加监控主机会更加的方便,自动发现可以自动扫描网络中的主机,并把满足条件的主机自动添加到监控中,并自动绑定监控模板,实现自动监控 。
自动注册(Active agent auto-registration)与自动发现相反,自动注册是Zabbix Agent端主动向Zabbix Server发送被监控的请求,这样在对大量服务器进行监控的场景下可以降低Zabbix Server端的压力。
当监控的服务器成千上万时,对于Zabbix Server的压力会很大,所以就有了分布式Zabbix Proxy代理监控来分担Zabbix Server的压力,代理服务器统一收集Agent端数据后返回给Zabbix Server。
主机名 | IP地址 |
---|---|
zbx-proxy | 代理 |
zbx-proxy-node01 | 被控主机 |
#修改主机名
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
#修改主机名
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
管理 → agent代理程序 →创建代理
添加代理后,如果出现从未 红色提示信息,是zabbix server还没识别到代理节点,可稍等片刻
接下来Zabbix Proxy添加Agent 配置→主机→创建主机 指定Agent节点信息,如下图:
绑定模板后,点击 添加。
验证:到此为止,Zabbix Proxy分布式监控已配置完成。
Web监测属于业务监测,模拟用户去访问网站,用来监测Web站点多方面的可用性,可以监控web站点的相关延迟,响应时间,下载时间等指标,从而判断网站Web服务的可用性。
通过左侧栏的 配置→主机 找到对应的主机点击 Web监测 后点击右上角的创建Web场景
填写场景名称、应用集、更新间隔、尝试次数以及客户端,这些都可以自定义 。
配置步骤
随后点击步骤,配置第一步骤,配置如下图所示,步骤名称自定义,URL填写打开Discuz论坛时的网址链接
勾选 跟随跳转(不勾选会报301错误),超时时间默认15s,要求的状态码填200(多个状态码用英文逗号隔开即可,如:200,404,500),然后点击右下角 添加 添加步骤,再次点击 添加,成功添加新的Web场景。
查看Web监测
具体图形可通过 监测→主机,可以看到我们配置了WEB监测的主机,点击Web监测1 ,稍等一分钟后可以看到有数据,说明配置无误。
zabbix自带模板里面涉及各种监控项,实际情况并不需要用到所有的,关掉无用监控项,仅监控重要的指标,最好可以自己按照需要自建监控模板。
这个调整的原则是,在满足需求的情况下,尽量将频率调低,也就是间隔调大,举个例子: 磁盘空间变化不会太剧烈,它的监控就可以时间间隔调大一些,磁盘总量改变的可能性更小了,所以间隔为一天也没关系。
有些监控主要是为了报警,历史数据并没有那么重要,详细的历史记录可将时间调小,多留一些趋势记录,趋势记录里面的数据虽然不够详细但也能作为大概的参考。
大量主机监控环境下, 由Server端去收集数据会出现严重的性能问题,例如: web操作很卡,容易出现502, 图层断裂等问题。优化方向: 1.添加proxy节点做分布式监控 2.采用被动监控方式来减轻zabbix server压力
针对数据库写多读少的表,如果使用InnoDB存储引擎,zabbix的运行效率至少要快1.5倍(与MyISAM相比),InnoDB存储引擎采用行级锁更适合写多读少的场景,但是InnoDB需要更多的CPU性能。
评论