目录
一、监控系统概述
1.1 监控的重要性
1.2 监控类型
1.3 监控层次划分
二、监控系统的实现原理
2.1 模块组成
2.2 采集协议
2.3 监控模式
2.4 代理架构
三、监控系统的开源产品
四、Zabbix 系统概述
4.1 初识 zabbix
4.2 Zabbix 的功能特性
4.3 Zabbix 角色及架构
五、部署流程
5.1 资源清单
5.2 基础环境配置
5.3 部署 zabbix server
5.4 zabbix 页面配置
5.5 部署 proxy
5.6 部署 Agent
六、扩展:解决图像字体显示问题
在 IT 运维中,监控占据着 30% 左右的重要比例。构建一个真正可用的监控告警系统对 IT 运维工程师而言是一项艰巨的任务,它能帮助运维人员及时发现并解决问题,保障 IT 系统的稳定运行。
在计算机领域,监控可分为 5 种类型:
按照逻辑层次划分,监控行为可分为 5 个层次:
一个监控系统大体由两部分组成:
监控 IT 数据采集按照支持的协议方式可分为:
监控系统数据采集的工作模式有两种:
对于大规模监控环境,除使用主动模式外,还需使用代理架构(C/S/P 架构,即 Client/Proxy/Server),以分摊服务器端的性能开销,且支持跨地域、跨网络的分布式监控。
Zabbix 是企业级的分布式开源监控系统解决方案,基于 Web 界面,可监控网络众多参数以及服务器、虚拟机等的健康和完整性。由 AlexeiVladishev 创建,目前由 ZabbixSIA 主导开发和支持。支持轮询和 trapping,其报告、统计数据和配置参数可通过 Web 前端访问,免费且基于 GPL 通用公共许可证第 2 版分发。
操作系统 | 配置 | 主机名 | IP | 角色 |
---|---|---|---|---|
openEuler 24.03 | 2C4G | zabbix | 192.168.207.137 | Zabbix 服务端 |
openEuler 24.03 | 2C4G | proxy | 192.168.207.138 | Zabbix proxy |
openEuler 24.03 | 2C4G | server01 | 192.168.207.139 | 被监控节点 |
openEuler 24.03 | 2C4G | server02 | 192.168.207.140 | 被监控节点 |
[root@localhost~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
[root@localhost ~]#setenforce0
[root@localhost ~]#timedatectl set-timezone Asia/Shanghai
[root@localhost~]#chronyc sources -v
[root@localhost ~]#hostnamectl set-hostname zabbix
[root@localhost~]#hostnamectl set-hostname proxy
[root@localhost~]#hostnamectl set-hostname server01
[root@localhost~]#hostnamectl set-hostname server02
[root@zabbix~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]#dnf clean all
[root@zabbix ~]#dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
[root@zabbix ~]#dnf -y install mysql-server-8.0.41 mysql
[root@zabbix ~]#dnf -y install https://w.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
备注: zabbix6.4.8 需要的各个平台软件的版本如下: mysql 的版本要求 8.0.30-8.1.X;mariadb 的版本要求 10.5.00-11.1.X;nginx 的版本要求 1.20or Later;php 的版本要求 7.4.0-8.2.X
[root@zabbix ~]#systemctl enable mysqld --now
[root@zabbix ~]# mysql -uroot
#执行以下SQL语句
ALTER USER 'root'@'localhost' IDENTIFED BY '123456';
FLUSH PRIVILEGES;
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
create user zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
grant all privileges on zabbix_proxy.* to zabbix@'%';
set global log_bin_trust_function_creators=1;
quit;
[root@zabbix ~]#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
[root@zabbix ~]##mysql -uroot -p
mysql>set global log_bin_trust_function_creators= 0;
mysql>quit;
/etc/zabbix/zabbix_server.conf
文件,大约在 129 行左右,取消注释修改密码:DBPassword=zabbix
/etc/nginx/conf.d/zabbix.conf
文件,注意取消注释:listen 8080;
server_name
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
[root@proxy~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@zabbix ~]#dnf clean all
[root@proxy ~]#dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
[root@proxy~]#dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
#zabbix server节点执行
[root@zabbix ~]##mysql -uroot -p
mysql> set global log_bin_trust_function_creators =1;
mysql> quit;
#proxy节点执行,IP地址修改为zabbix server的IP
root@proxy /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h 192.168.207.137
#zabbix server节点执行
[root@zabbix ~]# mysql -uroot -p
mysql>set global log_bin_trust_function_creators= 0;
mysql> quit;
/etc/zabbix/zabbix_proxy.conf
文件:Server=192.168.207.137
Hostname=Zabbix proxy
DBHost=192.168.207.137
DBPassword=zabbix
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
2.web 页面添加 proxy:
管理 -->Proxy > 创建 agent 代理,选择主动式(默认)。
[root@server01~]#rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
[root@server01~]#dnf clean all
[root@server01 ~]#dnf -y install zabbix-agent
/etc/zabbix/zabbix_agentd.conf
文件:Server=192.168.207.137
ServerActive=192.168.207.137
Hostname=server01
systemctl start zabbix-agent
systemctl enable zabbix-agent
[root@zabbix ~]#find / -name defines.inc.php
/usr/share/zabbix/include/defines.inc.php
[root@zabbix~]#grep "ZBX_FONTPATH" /usr/share/zabbix/include/defines.inc.php
define('ZBX_FONTPATH', realpath
('assets/fonts'));//where to search for font(GD>2.0.18)
[root@zabbix ~]#grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME','graphfont');//fontfile name
3. 查找zabbix的字体文件位置
[root@zabbix ~]#find / -name graphfont.ttf
/usr/share/zabbix/assets/fonts/graphfont.ttf
#上传msyh1.ttc文件到/usr/share/zabbix/assets/fonts目录
[root@zabbix ~]#cd /usr/share/zabbix/assets/fonts
[root@zabbix fonts]#ls
graphfont.ttf msyh1.ttc
[root@zabbix fonts]#ln -snf msyh1.ttc graphfont.ttf
备注:
- -s--symbolic 表示创建软连接,没有 - s 时表示创建硬链接
- -f--force 强行删除任何已存在的目标文件
- -n--no-dereference 把符号连接的目的目录视为一般文件
完成上述操作后,刷新页面即可观察字体显示效果。