小阿轩yx-Zabbix企业级分布式监控环境部署
前言
- "运筹帷幄之中,决胜千里之外"
- 监控在 IT 运维中占据着重要地位,按比例说占 30% 也不为过
- 在监控系统开源软件中有很多可选择的工具,但是真正符合要求的、能够真正解决业务问题的监控系统软件却凤毛麟角
监控系统的功能概述
监控
有两个内容
- 检测
- 控制
重点在第一个字眼
- 即检测、预防的意思
对应的英文单词
- Monitoring
在计算机领域可以分为5种监控类型
- 应用性能监控
- 业务交易监控
- 网络性能监控
- 操作系统监控
- 网络站点监控
上面5种类型将监控概念划分成了多个领域
通常所说的监控,都会模糊的包含以上5个细分领域
任何一个 IT 业务环境中,都会存在各种各样的硬件设备、软件应用等
按照逻辑层次可以将监控行为划分为5个层次
- 基础设施监控
- 系统层监控
- 应用层监控
- 业务监控
- 端用户体验监控
最底层基础设施监控
- 一般由运维人员负责
- 涉及到的方面比较接近硬件体系
例如
- 网络
- 交换机
- 路由器
这些设备的可靠性和稳定性直接影响到上层服务应用的稳定性,所以需要对网络流量、丢包情况、错包情况、连接数等等基础设施的核心指标进行监控
系统层监控
- 这层涉及到方面和服务紧密相关
例如
- 对 url 访问的性能
- 访问的调用数
- 访问的延迟
- 对服务提供性能进行监控
- 服务的错误率
同时对 sql 也需要进行监控,查看是否有慢 sql
- 对于 cache 来说,需要监控缓存的命中率和性能,每个服务的响应时间等等
业务监控
具体指什么?
举个例子
一个典型的交易网站,需要关注用户登录情况、注册情况、下单情况、支付情况等等
这些直接影响到实际触发的业务交易情况
- 可以提供给运营商和公司高管们需要关注的数据
- 直接以数据支撑公司在战略层面的决策和方向
端用户体验监控
一个应用程序可能通过三种方式交付到用户手上
- app
- h5
- pc端
用户通过浏览器、客户端打开连接到我们的服务
在用户端
- 用户的体验怎么样?
- 用户端性能怎么样?
- 有没有产生错误等等?
监控系统的实现原理
模块组成
大体可以分为两部分
- 数据采集部分
- 数据存储、分析告警、展示部分
这两部分构成了监控系统的基本模型
采集协议
按照支持的协议方式,监控 IT 数据采集可以分为两种
- 专用客户端采集
- 公用协议采集
监控模式
监控系统数据采集可以分为
- 被动模式
- 主动模式
被动模式
- 指的是服务器端到客户端采集数据
主动模式
- 客户端主动上报数据到服务器
一般来说
- 被动模式对监控端服务器的开销较大,适合小规模的监控环境
- 被动模式对监控端服务器的开销较小,适合大规模的监控环境
代理架构
对于大规模的监控环境
- 被监控节点较多
- 并且监控类型也很多
- 监控产生的数据和网络连接开销非常大
数据采集方式除了使用主动模式之外,还需要使用代理的架构
通过代理架构分摊服务器端的性能开销
代理架构还支持跨地域、跨网络的分布式监控
常见的代理架构
- C/S/P架构(即 Client/Proxy/Server)
监控系统的开源产品
zabbix
- 是一款出色的企业级运维监控平台
- 可用于监控从服务器、网络设备到 Web 应用程序和数据库的性能和可用性的一切
- 可以安装在 Linux、AIX、Windows、Solaris、MacOS X、FreeBSD、OpenBSD等系统上使用,具有非常良好的适配能力
Prometheus+Grafana
- 是一个开源系统监控和警报工具包
- 主要用于对基础设施的监控
包括
- 服务器(CPU、MEM等)
- 数据库(MYSQL、PostgreSQL等)
- Web服务等
几乎所有东西都可以通过 Prometheus 进行监控
Cacti
- 是一款网络流量检测图形工具
- 连接到 RRDTool,生成与网络数据相关的图标,具有非常强大的数据用户管理功能
- 可以指定每一个用户能查看树状结构、host 以及任何一张图
- 还可以与 LDAP 结合进行用户验证,同时也能自己增加模版
Nagios
- 是一个监控系统运行状态和网络信息的监控系统
- 它可以监控所指定的本地或远程主机以及服务,同时提供异常通知功能等
- 能够监控几乎所有类型的组件
- 网络协议
- 操作系统
- 系统指标
- 应用程序
- 服务
- web 服务器
- 网站
- 中间件等
Checkmk
- 是一个高度可扩展的监控工具
- 可监控服务器、网络、云资产、数据库、容器、物联网等
它有两种模式可用
- 基础版完全开源并提供免费和无限制的监控
- 企业版附带附加功能
Checkmk 具有部署快、高度自动化、配置灵活的特点。
OpenNMS
- 是一个企业级基于 Java/XML 的分布式网络和系统监控管理平台。
- 它能够显示网络中各中终端和服务器的状态和配置,为管理网络提供有效的信息。
- 它专为Linux 设计,但也支持 windows、Solaris 和OSX。
OpenNMS 可以使用 JMX、WMI、SNMP、NRPE、XML HTTP、JDBC、XML、JSON 等收集系统指标。
Netdata
- 是一款 Linux 性能实时监测工具
- 它可以为 Linux 系统、应用程序、SNMP 服务等提供实时的性能监测
- 目前在物理系统、虚拟机、容器和物联网/边缘设备上运行
特点
- 监控指标多而广
- 数据收集速度快
可以同时并发监控数万个指标,交互式可视化和富有洞察力的健康警报,可以即时诊断基础架构中的异常情况。
Zabbix 系统概述
初识 Zabbix
- 由 Alexei Vladishev 创建
- 目前由 Zabbix SIA 主导开发和支持
- 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警以实现对服务器问题做出快速反应。
- 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
- 支持轮询和 trapping
- 所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问
- 基于 Web 的前端确保可以从任何位置评估网络状态和服务器的健康状况
如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用
- 是免费的
- 是在 GPL 通用公共许可证第2版下编写和分发的。意味着它的源代码是免费分发的,可供公众使用
Zabbix 是什么?
- 是一种企业级的分布式开源监控系统的解决方案
- 是一个基于 web 界面的提供分布式系统监控,以及网络监控功能的企业级开源解决方案。
- 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。
Zabbix 的功能特性
数据采集
- 可用性及性能检测
- 支持 SNMP(trapping 及 polling)、IPMI、JMX 监控
- 自定义检测
- 自定义间隔收集数据
- 三种角色
- Server
- Proxy
- Agent
灵活的阈值定义
- 允许灵活地自定义问题阀值,在 zabbix 中称为触发器(trigger),存储在后端数据库中。
高级告警配置
- 可以自定义告警升级(escalation)、接收者及告警方式
- 告警信息可以配置,并允许使用宏(macro)变量
- 通过远程命令实行自动化动作(action)
实施绘图
- 通过内置的绘图方法实现监控数据实时绘图。
扩展的图形化显示
- 允许自定义创建多监控项视图
- 生成网络拓扑(network maps)
- 自定义的面板(screen)和 slide shows,并允许在 dashboard 页面显示
- 生成监控报告
历史数据存储
- 数据存储在数据库中;
- 历史数据可配置;
- 内置数据清理机制。
配置简单
- 一次配置,终生监控,除非调整或删除
- 允许使用模板添加监控设备
模板使用
- 模板中可以添加组监控;
- 模板允许继承。
网络自动发现
- 自动发现网络设备;
- Agent 自动注册;
- 自动发现文件系统、网卡设备、SNMP OID 等。
快速的 Web 接口
- Web 前端采用 PHP 编写;
- 访问无障碍。
Zabbix API
- 提供程序级别的访问接口,第三方程序可以很快接入。
权限系统
- 安全的权限认证;
- 用户可以限制允许维护的列表。
安全特性、Agent 易扩展
- 在监控目标上部署;
- 支持 Linux 及 Windows。
二进制守护进程
- C 语言开发,高性能,低内存消耗;
- 易移植。
具备应对复杂环境情况
- 通过 Zabbix Proxy 可以非常容易的创建远程监控。
Zabbix 角色及架构
Zabbix server
- 是 Zabbix 服务端守护进程。
- Zabbix Agentd、Zabbix Proxy 的数据最终都是提交到 Server。
- 当然,并不是所有数据都主动提交给 Zabbix Server,也有的是 Server 主动获取数据。
Zabbix Agent
- 是客户端守护进程,此进程主要用于收集客户端数据
- 例如 CPU 负载、内存、硬盘使用情况等。
Zabbix Proxy
- 是 Zabbix 代理守护进程,功能类似 Server。
不同的是
- zabbix_proxy 只是一个中转站,它需要把收集到的数据提交/被提交到 Server。
Zabbix Web
- 管理员通过 web 界面管理 zabbix 配置以及査看 zabbix 相关监控信息,通常与 zabbix server 运行在同一台主机上,也可以单独部署在独立的服务器上。
Zabbix 整体架构
实验拓扑结构
设备列表
|---------------|----------|----------------|-----------|---------------------|
| 设备 | 主机名 | IP 地址 | 系统 | 软件 |
| zabbix server | ZBX | 192.168.10.108 | CentOS7.9 | zabbix server 6.4.8 |
| zabbix proxy | proxy | 192.168.10.107 | CentOS7.9 | zabbix proxy 6.4.8 |
| zabbix agent | server01 | 192.168.10.101 | CentOS7.9 | zabbix agent 6.4.8 |
| zabbix agent | server01 | 192.168.10.102 | CentOS7.9 | zabbix agent 6.4.8 |
拓扑结构
LNMP 环境的搭建
(在 server 主机上)
修改主机名称
[root@localhost ~]# hostnamectl set-hostname ZBX
[root@localhost ~]# bash
配置 yum 仓库
下载阿里的仓库文件
[root@zbx]# rm -rf /etc/yum.repos.d/*
[root@zbx]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@zbx]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@zbx]# yum clean all
安装 php7 的仓库
[root@zbx]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
生成 mariadb10.11 的仓库文件
[root@zbx]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name=mariadb
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.11/centos/7/x86_64/
gpgcheck=0
清空 yum 缓存
[root@zbx]# yum clean all
安装 php7.4 和 nginx
[root@zbx]# yum install -y --enablerepo=remi --enablerepo=remi-php74 mod_php php-gd* php php-opcache php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-fpm php-devel php-bcmath php-ldap gcc* libxml2-devel net-snmp net-snmp-devel libevent-devel curl-devel
安装 mariadb-10.11
[root@zbx]# yum -y install mariadb-server mariadb-devel nginx
zabbix6.4.8 需要的各个平台软件的版本
- mysql 的版本要求 8.0.30-8.1.x
- mariadb 的版本要求 10.5.00-11.1.x
- nginx 的版本要求 1.20 or later
- php 的版本要求 7.4.0-8.2.x
关闭防火墙和内核机制并设置永久关闭
[root@zbx]# systemctl stop firewalld
[root@zbx]# systemctl disable firewalld
[root@zbx]# setenforce 0
[root@zbx]# vim /etc/sysconfig/selinux
#修改前
SELINUX=enforcing
#修改后
SELINUX=disabled
配置 nginx
进入 nginx 目录
[root@zbx]# cd /etc/nginx
生成 nginx 配置文件
[root@zbx nginx]# cp nginx.conf nginx.conf.bak
[root@zbx nginx]# rm -rf nginx.conf
[root@zbx nginx]# cp nginx.conf.default nginx.conf
修改 nginx 配置文件
[root@zbx nginx]# vim nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access log logs/host.access.logmain;
location /{
root /WWW ;
index index.html index.htm index.php;
}
location ~\.php${
root /WWW;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
修改以下配置
- location / {
- root /www;
- index index.html index.htm index.php;
- }
- location ~ \.php$ {
- root /www;
- include fastcgi.conf;
启动服务
[root@zbx nginx]# systemctl start nginx
[root@zbx nginx]# systemctl enable nginx
[root@zbx nginx]# systemctl start php-fpm
[root@zbx nginx]# systemctl enable php-fpm
[root@zbx nginx]# systemctl start mariadb
[root@zbx nginx]# systemctl enable mariadb
设置数据库密码
[root@zbx nginx]# mysqladmin -u root password 'pwd123'
创建一个文件
[root@zbx nginx]# mkdir /www
测试 LNMP 环境
[root@zbx nginx]# vim /www/test.php
<?php
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link) echo "恭喜你,数据库连接成功啦!!";
mysqli_close($link);
?>
修改 php.ini
[root@zbx nginx]# vim /etc/php.ini
##388 行,最长执行时间是 30 秒,数值0表示没有##执行时间的限制,你的程序需要跑多久便跑多久
max_execution_time =300
##398 行,以秒为单位设定了脚本接收输入的最大时间
max_input_time = 300
##923行
date.timezone =Asia/Shanghai
##694,服务器可以接收的最大 POST 数据大小
post_max_size = 16M
##1205,所有 bcmath 函数中十进制数字的数目
bcmath.scale =1
添加一个用户
[root@zbx nginx]# useradd -M -s /sbin/nologin zabbix
修改 php-fpm
[root@zbx nginx]# vim /etc/php-fpm.d/www.conf
user=zabbix
group=zabbix
重启服务
[root@zbx nginx]# systemctl restart php-fpm
zabbix 的安装与配置(在 server 主机上)
创建 zabbix 数据库
[root@zbx]# mysql -uroot -ppwd123
##导入数据
MariaDB [(none)]> create database zabbix character set utf8 collate utf8 bin;
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8 bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* To 'zabbix'@'localhost' identified BYzabbix';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* To 'zabbix'@'%' identified By 'zabbix';
解压 zabbix 源码包
[root@zbx]# tar zxvf zabbix-6.4.8.tar.gz
进入目录
[root@zbx]# cd zabbix-6.4.8/database/mysql/
导入 zabbix 数据
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <schema.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <images.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <data.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix_proxy <schema.sql
- 如果需要运行zabbix server,需要导入 schema.sql、images.sql、data.sql 这三个文件到zabbix数据库
- 如果需要运行zabbix agent,需要导入schema.sql 到zabbix_proxy 数据库。
zabbix 的安装与配置
进入 zabbix 目录
[root@zbx]# cdc /root/zabbix-6.4.8
源码安装 zabbix
[root@zbx zabbix-6.4.8]# ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --with-libcurl --with-libxml2 --with-net-snmp --with-unixODBC --with-zabbix-get
编译
[root@zbx zabbix-6.4.8]# make
[root@zbx zabbix-6.4.8]# make install
- --prefix=/usr/local/zabbix:指定zabbix安装路径
- --enable-server:启动server端
- --enable-agent:启动agent端
- --with-mysql:编译连接mysql 相关依赖包
- --with-libcurl:启动curl相关,对SMTP身份验证
- --with-libxml2:启动 xml 相关,提供对 XML 文档的各种操作
- --with-net-snmp:启动 snmp 相关,用于 snmp 监控设备,支持 snmp 协议
- --with-unixodbc:启动 odbc 相关用于监控数据库
- --with-zabbix-get:zabbix_get 是一种命令行的应用
- --enable-java:启动 java-agent 用于监控 java 类,需要安装 JAVA 环境
- --enable-ipv6:启用IPv6
- --with-libcurl 和 --with-libxml2 配置选项对虚拟机监控是必须的
优化命令路径
[root@zbx zabbix-6.4.8]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@zbx zabbix-6.4.8]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
切换目录找到 core
[root@zbx zabbix-6.4.8]# cd /root/zabbix-6.4.8/misc/init.d/fedora/core
拷贝文件到指定目录
[root@zbx zabbix-6.4.8]# cp zabbix_agentd /etc/init.d/
[root@zbx zabbix-6.4.8]# cp zabbix_server /etc/init.d/
切换至 init.d 目录下
[root@zbx zabbix-6.4.8]# cd /etc/init.d/
服务控制脚本的优化
[root@zbx init.d]# vim zabbix_agentd
BASEDIR=/usr/local/zabbix
[root@zbx init.d]# vim zabbix_server
BASEDIR=/usr/local/zabbix
- vim zabbix_agentd
- BASEDIR=/usr/local/zabbix
- vim zabbix_server
- BASEDIR=/usr/local/zabbix
切换目录至 /etc 下
[root@zbx init.d]# cd /usr/local/zabbix/etc
修改 zabbix 服务端参数
[root@zbx etc]# vim zabbix_server.conf
LogFile=/tmp/zabbix server.log
#单位M,47行
LogFilesize=1024
#数据库主机名 87行
DBHost=localhost
#数据库中库名 99行
DBName=zabbix
#数据库用户名 115行
DBUser=zabbix
#数据库用户密码 123行
DBPassword=zabbix
##超时时间,秒 465行
Timeout=10
#根据内存情况尽量调大 402行
Cachesize=256M
#根据内存情况尽量调大 427行
HistoryCachesize=256M
TrendcacheSize=256M
ValueCacheSize=256M
StartTrappers=30
# agent 端的数量
StartPollers=10
修改 zabbix 代理参数
[root@zbx etc]# vim zabbix_agentd.conf
##113行
Server=127.0.0.1
##167行
ServerActive=127.0.0.1
##178行
Hostname=Zabbix server
- 利用HostnameItem 可以动态获取主机的名称。
- 如果配置 HostnameItem=system.hostname 而未配置 Hostname=xxx 参数,那么在web 监控页面显示的主机的可见名称为客户端主机的主机名(即通过 hostname 命令得到的结果)
- 如果配置 Hostname=xxx而末 HostnameItem=system.hostname 参数,那么在web 监控页面显示的主机的可见名称为 xxx
- 如果未配置 HostnameItem=system.hostname 和 Hostname=xxx 这两个参数,那么在web 监控页面显示的主机的可见名称为 客户端主机的主机名(即通过 hostname 命令得到的结果)
- 如果同时配置 HostnameItem=system.hostname 和 Hostname=xxx 参数,那么在web 监控页面显示的主机的可见名称为 xxx(即以配置文件中的Hostname 定义的为准)
- 要对一大批主机进行自动配置时,这里就可以使用HostnameItem ,所有的主机都使用一个模板进行批量部署,就避免了每台主机再去单独设置hostname 的麻烦
找到 ui 并切换至该目录下
[root@zbx etc]# cd /root/zabbix-6.4.8/ui
拷贝 zabbix 网站程序到 httpd 的网站根目录下
[root@zbx ui]# cp -rf * /www
提升权限并退出
[root@zbx ui]# chown -R zabbix:zabbix /www
[root@zbx ui]# cd
添加两个服务
[root@zbx ~]# chkconfig --add zabbix_agentd
[root@zbx ~]# chkconfig --add zabbix_server
[root@zbx ~]# chkconfig zabbix_agentd on
[root@zbx ~]# chkconfig zabbix_server on
启动 zabbix
[root@zbx ~]# systemctl start zabbix_agentd
[root@zbx ~]# systemctl enable zabbix_agentd
[root@zbx ~]# systemctl start zabbix_server
[root@zbx ~]# systemctl enable zabbix_server
查看进程
[root@zbx ~]# netstat -anpt | grep zabbix
tcp 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15295/zabbix agentd
tcp 0 0.0.0.0:10051 0.0.0.0:* LISTEN 15340/zabbix server
zabbix 初始配置
登录 zabbix
设置语言
检查环境
- 要求所有必要条件都是"OK"的提示
填写数据库信息
主机名设置(保持默认即可,不用填写)
安装前信息汇总,确认无误,即可点击下一步
确认安装完成并点击完成
登录页面
- 默认账号:Admin(第一个字母大写)
- 默认密码:zabbix
登录后的界面
安装 Zabbix Agent(在 agnet 主机 server01 上)
修改主机名
[root@localhost ~]# hostnamectl set-hostname server01
[root@localhost ~]# bash
关闭防火墙、内核机制
[root@server01 ~]# systemctl stop firewalld
[root@server01 ~]# setenforce 0
用 rpm 安装软件包
[root@server01 ~]# rpm -ivh pcre2-10.23-2.el7.x86_64.rpm
[root@server01 ~]# rpm -ivh zabbix-agent-6.4.8-release2.el7.x86_64.rpm
修改 zabbix_agentd.conf 配置文件
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
##指向 Proxy 地址,也可以直接指向 server 端
Server=192.168.10.108
##指向 Proxy 地址,也可以直接指向 server 端
ServerActive=192.168.10.108
##Agent 本地名称,需要与将来在 Server 端的 Web 页面上的主机名称一致,名称自定义
Hostname=server01
启动服务
[root@server01 ~]# systemctl start zabbix-agent
[root@server01 ~]# systemctl enable zabbix-agent
- Server:被动模式,允许指定的服务器连接本机获取采集的数据
- ServerActive:此参数为主动模式需要设置的,主动提交采集数据给指定的服务器,此处可以注释掉,如果要开启主动模式,则开启
在 zabbix server 上添加主机
添加 agent 主机
- 数据采集 -- > 主机 -- > 创建主机
添加完成的状态
- 主机列表中的 Availability(可用性)列包括了每个接口的主机的可用性指标,如果定义了主机的zabbix agent 接口,可以通过 ZBX 选项了解主机的可用性。
- ZBX为灰色代表未建立主机连接,未进行数据的采集
- ZBX为绿色代表主机可用,zabbixagent检查成功
- ZBX为红色代表主机不可用,zabbix agent 检查失败
使用zabbix agent 接口,需要为主机添加 zabbix agent 的监控模板
查看图像信息
- 检测 --> 主机 --> 图像
解决图像中文乱码
- 可以直接执行(4)(5)两步
查找 zabbix 定义了字体的 php 文件
[root@zbx ~]# find / -name defines.inc.php
/root/zabbix-6.4.8/ui/include/defines.inc.php
/www/include/defines.inc.php
- /www 是本案中 zabbix 的前端位置,不同的安装者,此位置可能不同
查看 zabbix 字体文件中用的字体
[root@zbx ~]# grep "ZBX_FONTPATH" /www/include/defines.inc.php
define('ZBX_FONTPATH', realpath('assets/fonts')); //where to search for font (GD > 2.0.18)
[root@zbx ~]# grep "ZBX_FONTPATH_NAME" /www/include/defines.inc.php
define('ZBX_FONTPATH_NAME', 'DejaVuSans'); //font file name
查找 zabbix 的字体文件位置
[root@zbx ~]# find / -name DejaVuSans.ttf
/root/zabbix6.4.8/ui/assets/fonts/DejaVuSans.ttf
/usr/share/fonts/dejavu/DejaVuSans.ttf
/www/assets/fonts/DejaVuSans.ttf
在 windows 系统中找一个 ttf 或 ttc 格式的字体
- 位置在 C:\Windows\Fonts
将选择的字体文件上传到 /www/assets/fonts 目录下
-
例如此处选择 msyhl.ttc(微软雅黑)
[root@zbx ~]# cd /www/assets/fonts
链接该字体
[root@zbx fonts]# ln -snf msyhl.ttc DejaVuSans.ttf
- -s --symbolic 比较容易,有 -s 时表示创建软连接,没有 -s 时,表示创建硬链接
- -f --force 强行删除任何已存在的目标文件
- -n --no-dereference 把符号连接的目的目录视为一般文件
刷新页面观察效果
proxy 端的安装(在 proxy 主机上 107)
修改主机名
[root@localhost ~]# hostnamectl set-hostname proxy
[root@localhost ~]# bash
关闭防火墙、内核机制
[root@proxy]# systemctl stop firewalld
[root@proxy]# systemctl disable firewalld
[root@proxy]# setenforce 0
[root@proxy]# vim /etc/sysconfig/selinux
#修改前
SELINUX=enforcing
#修改后
SELINUX=disabled
设置 yum 仓库
[root@proxy]# rm -rf /etc/yum.repos.d/*
[root@proxy]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@proxy]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@proxy]# yum clean all
安装依赖包
[root@proxy]# yum -y install gcc libxml2-devel unixoDBc-devel net-snmp-devel libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel libevent libevent-devel
解压 zabbix 源码包
[root@proxy]# tar zxvf zabbix-6.4.8.tar.gz
进入目录
[root@proxy]# cd zabbix-6.4.8
安装所需配置依赖
[root@zbx zabbix-6.4.8]# ./configure --prefix=/usr/local/zabbix/ --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-unixODBC
编译
[root@zbx zabbix-6.4.8]# make
[root@zbx zabbix-6.4.8]# make install
修改配置文件
[root@zbx zabbix-6.4.8]# vim /usr/local/zabbix/etc/zabbix_proxy.conf
##13行
ProxyMode=0
##32行
Server=192.168.10.108
##42
Hostname=Zabbix_proxy
##58行
ListenPort=10051
LogFile=/tmp/zabbix_proxy.log
LogFilesize=0
PidFile=/tmp/zabbix_proxy.pid
SocketDir=/tmp
##151
DBHost=192.168.10.108
##167
DBName=zabbix_proxy
##182
DBUser=zabbix
##190行
DBPassword=zabbix
- ##13行
- ProxyMode=0
- ##32行
- Server=192.168.10.108
- ##42
- Hostname=Zabbix_proxy
- ##58行
- ListenPort=10051
- ##151
- DBHost=192.168.10.108
- ##167
- DBName=zabbix_proxy
- ##182
- DBUser=zabbix
- ##190行
- DBPassword=zabbix
添加用户
[root@zbx zabbix-6.4.8]# useradd -M -s /sbin/nologin zabbix
启动
[root@zbx zabbix-6.4.8]# /usr/local/zabbix/sbin/zaabbix_proxy
查看进程
[root@zbx zabbix-6.4.8]# netstat -anpt | grep zabbix_proxy
在 web 管理界面上添加 proxy 主机
- 管理 --> Proxy > 创建 agent 代理
- 选择主动模式(默认)
设置 agent 端 server02 主机配置文件
修改主机名
[root@localhost ~]# hostnamectl set-hostname server02
[root@localhost ~]# bash
关闭防火墙、内核机制
[root@server02]# systemctl stop firewalld
[root@server02]# systemctl disable firewalld
[root@server02]# setenforce 0
[root@server02]# vim /etc/sysconfig/selinux
#修改前
SELINUX=enforcing
#修改后
SELINUX=disabled
安装 rpm 包
[root@server02 ~]# rpm -ivh pcre2-10.23-2.el7.x86_64.rpm
[root@server02 ~]# rpm -ivh zabbix-agent-6.4.8-release2.el7.x86_64.rpm
修改配置文件
[root@server02 ~]# vim /etc/zabbix/zazbbix_agent.conf
##修改 Server 的值
Server=192.168.10.107
ServerActive=192.168.107
Hostname=server02
- 将 Server 的地址修改为 proxy 主机的主机
重启服务
[root@server02 ~]# systemctl restart zaabbix-agent
在 web 管理界面添加 proxy 代理的 agent 主机
查看 web 面板监控到的主机数据
- 如果ZBX 不会变绿,就重启proxy 进程
[root@server02]# pkill -9 zabbix_proxy
[root@server02]# /usr/local/zabbix/sbin/zabbix_proxy
[root@server02]# netstat -anpt | grep zabbix_proxy
小阿轩yx-Zabbix企业级分布式监控环境部署