小阿轩yx-Zabbix企业级分布式监控环境部署

小阿轩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 serverZBX192.168.10.108CentOS7.9zabbix server 6.4.8
zabbix proxyproxy192.168.10.107CentOS7.9zabbix proxy 6.4.8
zabbix agentserver01192.168.10.101CentOS7.9zabbix agent 6.4.8
zabbix agentserver01192.168.10.102CentOS7.9zabbix 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

  • http://192.168.10.108/index.php

设置语言

检查环境

  • 要求所有必要条件都是“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企业级分布式监控环境部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UML的图及其他图补充

一、UML图 1.类图 ‌类图‌是统一建模语言&#xff08;UML&#xff09;中的一种静态结构图&#xff0c;主要用于描述软件系统的静态结构。它显示了模型中的类、类的内部结构以及它们与其他类的关系。类图是面向对象建模的主要组成部分&#xff0c;用于对系统的词汇进行建模、对…

C语言:刷题日志(3)

一.猴子选大王 一群猴子要选新猴王。新猴王的选择方法是&#xff1a;让N只候选猴子围成一圈&#xff0c;从某位置起顺序编号为1~N号。从第1号开始报数&#xff0c;每轮从1报到3&#xff0c;凡报到3的猴子即退出圈子&#xff0c;接着又从紧邻的下一只猴子开始同样的报数。如此不…

打造高效实时数仓,从Hive到OceanBase的经验分享

本文作者&#xff1a;Coolmoon1202&#xff0c;大数据高级工程师&#xff0c;专注于高性能软件架构设计 我们的业务主要围绕出行领域&#xff0c;鉴于初期采用的数据仓库方案面临高延迟、低效率等挑战&#xff0c;我们踏上了探索新数仓解决方案的征途。本文分享了我们在方案筛选…

基本mysql

基础sql语句 关于数据库 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name]; [ ] 代表可选 database_name 是你想要创建的数据库的名称。CHARACTER SET 可选&#xff…

一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention

一区霜冰算法双向深度学习模型注意力机制&#xff01;RIME-BiTCN-BiGRU-Attention 目录 一区霜冰算法双向深度学习模型注意力机制&#xff01;RIME-BiTCN-BiGRU-Attention效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现RIME-BiTCN-BiGRU-Attention霜冰算法…

nlohmann::json中有中文时调用dump转string抛出异常的问题

问题描述 Winodows下C开发想使用一个json库&#xff0c;使用的nlohmann::json&#xff0c;但是遇到json中使用中文时&#xff0c;转成string&#xff0c;会抛出异常。 nlohmann::json contentJson;contentJson["chinese"] "哈哈哈";std::string test con…

K-means 算法的介绍与应用

目录 引言 K-means 算法的基本原理 表格总结&#xff1a;K-means 算法的主要步骤 K-means 算法的 MATLAB 实现 优化方法与改进 K-means 算法的应用领域 表格总结&#xff1a;K-means 算法的主要应用领域 结论 引言 K-means 算法是一种经典的基于距离的聚类算法&#xff…

气膜馆电费高吗?—轻空间

很多人关心气膜馆的电费问题&#xff0c;实际上&#xff0c;气膜馆不仅电费不高&#xff0c;还具有显著的节能优势。气膜建筑在设计上充分考虑了能耗管理&#xff0c;具备以下几大特点&#xff1a; 1. 高效保温隔热&#xff0c;减少能耗 气膜馆采用特殊材料和结构设计&#xf…

力扣100题——贪心算法

概述 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在解决问题时&#xff0c;按照某种标准在每一步都选择当前最优解&#xff08;局部最优解&#xff09;的算法。它期望通过一系列局部最优解的选择&#xff0c;最终能够得到全局最优解。 贪心算法的核心思想 贪心算…

【Colab代码调试】End-to-end reproducible AI pipelines in radiology using the cloud

文章目录 报错MessageError: Error: credential propagation was unsuccessful解决办法原理 找不到GPU解决办法 关于文件结构RTSTRUCT是什么nrrd是什么格式 !gcloud config set project $GCP_PROJECT_ID报错Access Denied: User does not have bigquery.jobs.create permission…

C# 比较对象新思路,利用反射技术打造更灵活的比较工具

前言 嘿&#xff0c;大家好&#xff01;如果你之前看过我分享的文章《C# 7个方法比较两个对象是否相等》&#xff0c;你可能会意识到对象比较在实际业务中经常出现的场景。今天&#xff0c;我想继续与大家分享一个在实际项目中遇到的问题。 有一次&#xff0c;我接手了一个别…

个人健康信息系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;健康分析师管理&#xff0c;健康手册管理&#xff0c;健康饮食管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;健康手册&#xff0c;健康饮食&…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点&#xff0c;苹果新品发布会如期举行&#xff0c;全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机&#xff0c;在第二代3nm工艺A18和A18 Pro芯片的加持下&#xff0c;iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组&#xff08;变成类似list列表的形状&#xff09;重复一个数组——np.tile 分组聚集——pandas.…

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日&#xff0c;中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话&#xff1a;悟空》正式上线&#xff0c;并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中&#xff0c;有人说他的成功在于对《西游记》为背景进行改编&#xff0c;对原著进行了分析…

数据分析与挖掘课程相关资源

这是在gitee上整的关于这门课的一个开源项目。 https://gitee.com/rainpet/python-data-analysis-and-mining-demo 头歌平台。 常见问题&#xff1a; 1、如何确认conda的版本&#xff0c;执行如下命令&#xff1a; conda list anaconda$2、实验室登陆后&#xff0c;无法上网&a…

基于Java+SpringBoot+Vue+MySQL的智能菜谱推荐管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的智能菜谱推荐管理系统【附源码文档】、…

“汉语新解” Prompt新高度,火爆的李继刚

“汉语新解” prompt 是由李继刚设计的一个用于启发人工智能模型进行创意性文本生成的指令模板。这个 prompt 的设计初衷是为了让AI能够以一种独特的方式解析和重新诠释常见的中文词汇&#xff0c;从而产生出具有深刻洞察力和幽默感的文本内容&#xff0c;仿佛是由鲁迅或林语堂…

装杯 之 Linux 指令1

hello&#xff0c;欢迎来到linux世界&#xff0c;在害没有学习linux时&#xff0c;看到别人操作&#xff0c;网课&#xff0c;真高级&#xff0c;感觉好厉害&#xff0c;就是说白了&#xff0c;看起来牛逼。ok&#xff0c;接下来&#xff0c;请大佬们进入linux之旅。 1.ls指令…

mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析

mfc140u.dll是 Microsoft Foundation Class (MFC) 库的一部分&#xff0c;通常与 Visual Studio 2015 及其后续版本相关联。如果系统中缺少 mfc140u.dll&#xff0c;可能会导致依赖该库的应用程序无法启动&#xff0c;并显示错误消息&#xff0c;如“程序无法启动&#xff0c;因…