目录
一、监控
1、概念
2、作用
3、创建监控框架
老牌监控框架
新款王牌监控框架
二、zabbix简介
1、概述
2、核心功能
三、主要组件及运行原理
1、主要组件
Zabbix Server
Zabbix Agent
Zabbix Proxy
Zabbix Web 界面
数据库
其他
2、监控架构原理图
原理图
编辑高可用
四、安装和配置
1、准备工作
2、安装zabbix下载源
3、安装Zabbix服务器、代理
4、安装Zabbix前端软件包
编辑 5、安装 Zabbix Web 界面和 Apache 配置的软件包
6、安装zabbix依赖数据库
7、添加数据库用户,以及 zabbix 所需的数据库信息
8、导入数据库文件,配置密码
9、配置时区,启动服务
五、测试及解决中文乱码
1、测试
2、 解决Web页面中文乱码问题
3、查看自身监控
一、监控
1、概念
运维监控是指对计算机系统运行状态的实时监视和控制,以确保其安全性、稳定性和高效性。
2、作用
1,对系统不间断实时监控
2,实时反馈系统当前状态
3,保证服务可靠性安全性
4,保证业务持续稳定运行
3、创建监控框架
老牌监控框架
Cacti
Cacti是一款基于PHP、MySQL开发的网络流量监测图形分析工具。主要监控网络设备,如路由器,交换机。
Nagios
Nagios是一款开源的IT基础设施监控软件,主要功能是监控系统、网络和基础设施的运行状态,提供实时的警报和通知
Smokeping
Smokeping是一款开源的网络监控工具,它主要用于实时监控网络的延迟和丢包率,并通过图形化界面展示监测结果。
Ganglia
Ganglia是一款开源的分布式监控系统,专为各种规模的集群、数据中心和云环境设计。其主要功能包括收集并聚合来自集群中各个节点的数据,在统一的界面中展示这些数据,以实时了解系统的性能和健康状况。大数据监控框架,监控hadoop之类的。
2012年及之前使用,现在几乎已经被淘汰!
新款王牌监控框架
Open-Falcon
监控Open-Falcon是一款由小米公司开发的开源监控系统,专为大规模分布式系统设计,提供高效、灵活且可扩展的监控解决方案。市场占有率不高。
Prometheus
Prometheus是一款开源的系统监控和警报工具套件,它通过收集指标数据并提供一个强大的查询语言(PromQL)来监控应用程序和系统。主要功能包括实时监控系统健康状态、收集并分析度量数据、支持多种数据存储后端、提供灵活的警报系统以及可视化展示监控数据等。Prometheus能够高效地处理大规模数据集,并广泛用于云计算、容器化环境(如Kubernetes)以及微服务架构中。
Zabbix
监控Zabbix是一款开源的分布式监控系统,主要用于实时监控和管理网络设备、服务器、应用程序等IT资源。
二、zabbix简介
官网:https://www.zabbix.com/
1、概述
zabbix是基于web界面的开源监控平台,帮助我们实时检查设备的状态,比如服务器、网络设备等。
当设备出现问题时,它会及时通知我们,让我们可以采取措施来解决。
它支持自定义配置和自定义告警,并且可以实现邮件、短信等方式的告警。
2、核心功能
数据采集:Zabbix Agent方式会定期收集设备的各种指标数据,如CPU使用率、内存占用、网络流量等。这些数据会被Zabbix Server主动获取。
触发检测告警:Zabbix会根据事先设定的阈值和触发条件对采集到的数据进行检测。如果某个指标超过了阈值或满足了触发条件,Zabbix会触发一个告警,并根据设置的通知方式通知相关人员。
数据存储:Zabbix将采集到的数据存储在数据库中。
数据展示:Zabbix提供了丰富的可视化功能,可以将采集到的数据转化成各种图表和报表,帮助用户直观地了解设备的运行状态和趋势。
三、主要组件及运行原理
1、主要组件
Zabbix Server
功能描述
Zabbix Server 是 Zabbix 监控系统的核心组件,负责接收来自客户端(Agent)或其他监控源的监控数据特点
数据处理中心:负责数据的接收、处理和存储。
告警触发:根据预设规则触发告警,并通过多种方式通知相关人员。
配置管理:管理所有监控配置,包括主机、模板、监控项、触发器等,确保整个监控系统的正常运作
Zabbix Agent
功能描述
Zabbix Agent 是部署在被监控设备上的轻量级软件组件,负责采集被监控设备的各种指标数据(如CPU使用率、内存占用、磁盘空间等)并发送给 Zabbix Server。Zabbix Agent 支持主动模式和被动模式两种数据采集方式,以适应不同的监控需求和网络环境。
特点
数据采集:能够采集丰富的系统指标和应用程序数据。
多种采集模式:支持主动和被动两种数据采集模式。
安全通讯:支持TLS/SSL加密通信,确保数据传输的安全性。
版本说明:
Zabbix Agent 目前有两个版本:Zabbix Agent(C语言开发,支持多种主流平台)和 Zabbix Agent 2(Go语言开发,性能更优,支持更高的并发和易于扩展,目前主要支持Linux和Windows平台)。
Zabbix Proxy
功能描述
Zabbix Proxy 是可选组件,用于在分布式监控环境中代替 Zabbix Server 接收监控数据并进行预处理。Proxy 减少了数据传输的距离和 Server 的处理压力,提高了监控系统的效率和可扩展性。预处理后的数据会批量发送给 Zabbix Server 进行进一步处理。
特点
数据收集与预处理:从下属的 Agents 或其他监控源收集数据并进行预处理。
数据缓存与转发:在本地缓存数据,并周期性或按需将数据转发给 Zabbix Server。
负载均衡与配置同步:多个 Proxy 可以实现负载均衡,并自动从 Zabbix Server 接收配置更新。
Zabbix Web 界面
功能描述
Zabbix Web 界面是 Zabbix 监控系统的图形用户界面(GUI(Graphical User Interface))。
特点
图形化界面:提供直观易用的操作界面。
配置管理:用户可以通过 Web 界面修改监控配置。
监控数据展示:展示实时和历史监控数据,支持多种图表和报表形式。
数据库
功能描述
数据库用于存储被监控设备的配置信息和监控数据。Zabbix 支持多种数据库类型,如 MySQL、Oracle、PostgreSQL、SQLite 等,用户可以根据实际需求选择合适的数据库系统。
特点
数据存储:持久化存储监控数据和配置信息。
高可用性:支持多种数据库系统,确保数据的安全性和可靠性。
性能优化:通过优化数据库配置和查询语句,提高监控系统的整体性能。
其他
Zabbix Agent确实支持主动和被动两种数据采集模式。
这两种模式在数据收集的方式和效率上有所不同,适用于不同的监控场景和需求。
被动模式(Passive Mode)
Zabbix Server 消耗自身资源主动的要数据 agent被动的给,站在agent角度,叫被动模式。
工作原理
在被动模式下,Zabbix Agent会监听一个特定的端口(默认是10050),等待Zabbix Server的指令来收集数据。Zabbix Server会周期性地向Agent发送请求,Agent在收到请求后,会收集相应的监控数据并返回给Server。
特点
默认模式:Zabbix默认采用被动模式进行数据收集。
依赖Server:数据收集依赖于Server的指令,Server需要主动向Agent发起请求。
适用于小规模监控:在监控的主机数量不多时,被动模式可以很好地工作。
可能存在的问题:当被监控的主机数量达到一定规模时,Server需要处理大量的请求,可能会导致性能瓶颈。
主动模式(Active Mode)
Zabbix Server 不会消耗自身资源主动的要数据 agent主动的把采集的数据给server,站在agent角度,叫主动模式。
工作原理
在主动模式下,Zabbix Agent会主动收集监控数据,并通过TCP协议将数据发送到Zabbix Server的特定端口(默认是10051)。这种方式下,Agent不再等待Server的请求,而是主动将数据推送给Server。
特点
减轻Server压力:由于Agent主动发送数据,可以减轻Zabbix Server的负担,特别是在监控大量主机时。
实时性:数据可以更快地到达Server,提高了监控的实时性。
适用于大规模监控:在监控大量主机时,主动模式可以更有效地利用网络资源,减少延迟。
配置相对复杂:与被动模式相比,主动模式需要更多的配置工作,包括设置Agent的ServerActive参数等
2、监控架构原理图
原理图
① zabbix agent 部署在监控目标主机上,负责收集系统和服务的各种指标数据,如 CPU 使用率、内存使用情况、网络流量等,并将这些数据发送到 zabbix server
② zabbix server 接收来自 zabbix agent 的数据,并进行数据分析、存储和处理;对接收到的数据进行分析,并在必要时触发告警通知相关用户或用户组
③ zabbix server 将处理后的数据存储在数据库中,以便长期存档和后续分析
④ zabbix web 是用户界面,通过该界面用户可以查看已存储的监控数据、配置监控项、创建报表以及管理告警等
高可用
四、安装和配置
1、准备工作
#关闭防火墙并设置开机不启动
#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#设置防火墙开机禁用
systemctl disable firewalld
关闭SELinux
vim /etc/sysconfig/selinux
vim /etc/selinux/config一定要关闭,要不后面启动zabbix会报权限不足错误!
2、安装zabbix下载源
#安装yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#更换zabbix.repo为阿里源(和官网不同,提高效率)
cat /etc/yum.repos.d/zabbix.repo
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
cat /etc/yum.repos.d/zabbix.repo
#清空缓存
yum clean all && yum makecache
3、安装Zabbix服务器、代理
yum install zabbix-server-mysql zabbix-agent -y
zabbix-server-mysql:这是Zabbix服务器的MySQL版本的软件包,安装了Zabbix服务器组件,以便Zabbix监控系统能够运行并通过MySQL保存数据。
zabbix-agent: 这是Zabbix代理软件包,安装了Zabbix代理组件,用于在被监控设备上主动提供监控数据给Zabbix服务器
4、安装Zabbix前端软件包
安装SCL(前提)
yum install centos-release-scl -y
安装 SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
编辑/etc/yum.repos.d/zabbix.repo文件并启用zabbix前端存储库:
vim /etc/yum.repos.d/zabbix.repo
5、安装 Zabbix Web 界面和 Apache 配置的软件包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
zabbix-web-mysql-scl:这个软件包提供了 Zabbix 的 Web 界面部分,并且使用了 MySQL 数据库作为后端存储
zabbix-apache-conf-scl:这个软件包提供了与 Apache 服务器相关的 Zabbix 配置文件,用于与 Apache 服务器协同工作
安装报错解决
和前面的错误一样,还是因为 SCL源在2024年6月30日停止维护了。需要更换yum源
备份原来文件:
copy /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo.bak
copy /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.bak
vim /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
再次安装成功,成功!!!
6、安装zabbix依赖数据库
安装 MariaDB 数据库服务器及其相关组件:
yum install -y mariadb-server mariadb
MariaDB是一个开源的关系型数据库管理系统(RDBMS),它是MySQL的一个分支,由MySQL的原始开发者之一Michael Widenius领导的团队创建。MariaDB旨在保持向后兼容性,并提供一个替代MySQL的选择,尤其是在Oracle收购Sun Microsystems(MySQL的母公司)之后,为了应对可能的闭源化和商业策略变化,开源社区开始寻求独立的解决方案。
启用并立即启动MariaDB数据库服务器:
systemctl enable --now mariadb
初始化数据库,并设置密码:
mysql_secure_installation
原始密码是空,直接回车 (我这是设置密码为:123456)
7、添加数据库用户,以及 zabbix 所需的数据库信息
mysql -uroot -p123456 回车
#新建数据库zabbix 新建用户zabbix密码zabbix 把zabbix数据库中的表的所有权限都给zabbix用户
create database zabbix character set utf8 collate utf8_bin;
show databases;
select user,host from mysql.user;
create user zabbix@localhost identified by 'zabbix';
select user,host from mysql.user;
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
quit;
8、导入数据库文件,配置密码
查看sql文件位置:
rpm -ql zabbix-server-mysql
mysql -uroot -p123456
show databases;
use zabbix;
show tables;
没有任何表
导入:
将 Zabbix 监控系统所需的数据库结构导入到名为 zabbix 的数据库中
zcat /usr/share/doc/zabbix-server-mysql-5.0.43/create.sql.gz| mysql -uzabbix -pzabbix zabbix
然后重复上面的操作,登录数据库,查看即可
配置密码
vim /etc/zabbix/zabbix_server.conf
注意:配置的密码一定是创建的用户和密码对应
9、配置时区,启动服务
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
启动服务:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
设置开机自动启动:
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
rh-php72-php-fpm:这是PHP-FPM(FastCGI Process Manager)的服务名称。在这个特定的情景中,rh-php72-php-fpm表示Red Hat 软件集合(Software Collections Library)中包含的 PHP 版本 7.2 的 PHP-FPM 服务
五、测试及解决中文乱码
1、测试
浏览器输入:http://192.168.37.191/zabbix 回车
确认信息:
登录(用户名是Admin(大写A),密码是zabbix ):切换中文:
如果出现错误,请查看日志:
cat /var/log/zabbix/zabbix_server.log
tail -F /var/log/zabbix/zabbix_server.log
2、 解决Web页面中文乱码问题
yum install -y wqy-microhei-fonts
wqy-microhei-fonts 是一种中文字体包。这种字体在Linux系统中广泛使用,特别是对于那些需要显示中文内容的场景。
cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
-f =force 强制覆盖原来文件 选择是
重启zabbix-server。就可以了
service zabbix-server restart