MySQL监控告警及可视化:Zabbix+Percona PMP实现(Part I)

news2025/2/27 8:30:21

MySQL监控告警及可视化:Zabbix+Percona PMP实现(Part I)

  • 准备工作
  • Zabbix Server安装
  • Zabbix Server配置
    • conf文件配置
    • 系统服务配置
    • Web服务配置
  • Zabbix Agent安装
  • Zabbix Agent配置
    • conf文件配置
    • 系统服务配置

准备工作

🐬软件下载

  • Zabbix下载:https://www.zabbix.com/download_sources#60LTS

服务器清单如下:

服务器IP配置OS版本服务器角色
172.16.175.x4c8gCentOS 7.7MySQL Server
172.16.175.y4c8gCentOS 7.7Zabbix Server

需要提前在MySQL Server和Zabbix Server两台服务器上安装MySQL服务。其中Zabbix Server服务器上的MySQL作用是作为后端数据库存储Zabbix监控数据。


Zabbix主要有以下几个功能组件:

  • Zabbix Server:负责接收监控数据并触发告警,以及将监控数据持久化到后端数据库中。
  • Zabbix Agent:部署在被监控设备上的客户端,负责采集监控数据并发送到Zabbix服务端。
  • Zabbix Proxy:在监控数据量较大时,可以作为Zabbix Server的代理接收监控数据并进行预处理,以减轻服务端的压力。
  • Web前端:用于维护被监控设备的信息、查看监控数据、配置告警等。
  • 后端数据库:负责存储监控数据和被监控设备信息。支持Oracle、MySQL、SQLite3、PostgreSQL。

Zabbix Server安装

# 解压安装包
[root@zabsever opt]# tar xvf zabbix-6.0.17.tar.gz
[root@zabsever opt]# ln -s zabbix-6.0.17 zabbix

# 创建系统用户
[root@zabsever opt]# groupadd --system zabbix
[root@zabsever opt]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin zabbix

创建后端数据库用户:

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix_admin'@'%' identified with mysql_native_password by 'zabbixnubi8';
mysql> grant all privileges on `zabbix`.* to 'zabbix_admin'@'%' with grant option;

🐍注意:这里zabbix数据库的字符集一定要跟上面一样,不能改成utf8mb4,否则后面在配置Web界面时会报数据库连接错误、以及不支持的字符集和排序规则错误。

初始化数据:

[root@zabsever opt]# cd /opt/zabbix/database/mysql
[root@zabsever mysql]# mysql -h127.0.0.1 -uzabbix_admin -pzabbixnubi8 zabbix < schema.sql 
[root@zabsever mysql]# mysql -h127.0.0.1 -uzabbix_admin -pzabbixnubi8 zabbix < images.sql 
[root@zabsever mysql]# mysql -h127.0.0.1 -uzabbix_admin -pzabbixnubi8 zabbix < data.sql

编译安装Zabbix Server:

# 安装依赖包
[root@zabsever zabbix]# yum install gcc mysql-devel libevent-devel libcurl-devel libxml2-devel net-snmp-devel -y

# 安装Zabbix Server到/usr/local/zabbix目录下
[root@zabsever zabbix]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent \
--with-mysql=/mysql/mysql-8.0/bin/mysql_config --enable-ipv6 --with-net-snmp \
--with-libcurl --with-libxml2
[root@zabsever zabbix]# make install | tee /tmp/zabbix_install_`date +%F_%H_%M`.log

编译安装成功后的目录结构应该如下所示:

[root@zabsever zabbix]# tree /usr/local/zabbix/
/usr/local/zabbix/
├── bin
│   ├── zabbix_get
│   ├── zabbix_js
│   └── zabbix_sender
├── etc
│   ├── zabbix_agentd.conf
│   ├── zabbix_agentd.conf.d
│   ├── zabbix_server.conf
│   └── zabbix_server.conf.d
├── lib
│   └── modules
├── sbin
│   ├── zabbix_agentd
│   └── zabbix_server
└── share
    ├── man
    │   ├── man1
    │   │   ├── zabbix_get.1
    │   │   └── zabbix_sender.1
    │   └── man8
    │       ├── zabbix_agentd.8
    │       └── zabbix_server.8
    └── zabbix
        ├── alertscripts
        └── externalscripts

14 directories, 11 files

其中,make install 过程中的常见报错及解决办法如下:

  1. gcc编译器for循环代码报错

报错信息:

parse.c: In function ‘eval_get_last_function_token’:
parse.c:391:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
  for(int i = ctx->ops.values_num - 1; i >= 0; i --)
  ^
parse.c:391:2: note: use option -std=c99 or -std=gnu99 to compile your code
make[3]: *** [parse.o] Error 1

解决办法是在configure前配置-std=gnu99,然后重新编译安装:

[root@zabsever zabbix]# export CFLAGS="-std=gnu99"
[root@zabsever zabbix]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent \
--with-mysql=/mysql/mysql-8.0/bin/mysql_config --enable-ipv6 --with-net-snmp \
--with-libcurl --with-libxml2
[root@zabsever zabbix]# make install | tee /tmp/zabbix_install_`date +%F_%H_%M`.log
  1. 找不到libcrypto和libssl模块

报错信息:

/usr/bin/ld: warning: libcrypto.so.1.1, needed by /mysql/mysql-8.0/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libssl.so.1.1, needed by /mysql/mysql-8.0/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)
/mysql/mysql-8.0/lib/libmysqlclient.so: undefined reference to `SSL_SESSION_free@OPENSSL_1_1_0'
...
collect2: error: ld returned 1 exit status
make[3]: *** [zabbix_server] Error 1
make: *** [install-recursive] Error 1

解决办法是建立对应的软链接,然后重新编译安装:

# 找到模块文件位置
[root@zabsever zabbix]# find / -name libcrypto.so.1.1
/mysql/mysql-8.0/lib/private/libcrypto.so.1.1
[root@zabsever zabbix]# find / -name libssl.so.1.1
/mysql/mysql-8.0/lib/private/libssl.so.1.1

# 建立软链接
[root@zabsever zabbix]# ln -s /mysql/mysql-8.0/lib/private/libcrypto.so.1.1 /usr/lib64
[root@zabsever zabbix]# ln -s /mysql/mysql-8.0/lib/private/libssl.so.1.1 /usr/lib64
# 重新configure ... && make install

Zabbix Server配置

conf文件配置

修改zabbix_server.conf中的后端数据库连接配置:

[root@zabsever zabbix]# cd /usr/local/zabbix/
[root@zabsever zabbix]# cat etc/zabbix_server.conf | grep -Ev '^$|^#' 
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix_admin
DBPassword=zabbixnubi8
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

修改zabbix_agentd.conf中的数据库连接配置:

[root@zabsever zabbix]# cat etc/zabbix_agentd.conf | grep -Ev '^$|^#' 
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

这里的配置是因为Zabbix Server本身所在服务器的监控数据也需要Zabbix Agent来采集。

系统服务配置

修改Zabbix安装包解压目录下的系统服务配置文件后,拷贝至/etc/init.d目录下。

配置zabbix server系统服务:

# 添加ZABBIX_BIN和CONFIG_FILE
[root@zabsever zabbix]# vi /opt/zabbix/misc/init.d/fedora/core5/zabbix_server
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONFIG_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONFIG_FILE
        ...

# 拷贝到init.d目录下
[root@zabsever zabbix]# cp /opt/zabbix/misc/init.d/fedora/core5/zabbix_server /etc/init.d/

配置zabbix agent系统服务:

[root@zabsever zabbix]# vi /opt/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONFIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONFIG_FILE
        ...

# 拷贝到init.d目录下
[root@zabsever zabbix]# cp /opt/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ 

启动zabbix server和zabbix agentd服务:

# 启动服务
#service zabbix_server start
#service zabbix_agentd start
systemctl start zabbix_server
systemctl start zabbix_agentd

# 配置开机自启
systemctl enable zabbix_server
systemctl enable zabbix_agentd

启动zabbix系统服务时的常见错误以及解决办法如下:

  1. 找不到libmysqlcliient模块

报错信息:

May 01 20:32:01 zabsever zabbix_server[2636]: Starting Zabbix Server: /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.21: cann...r directory
May 01 20:32:01 zabsever zabbix_server[2636]: [FAILED]
May 01 20:32:01 zabsever systemd[1]: zabbix_server.service: control process exited, code=exited status=1

解决办法是创建对应的软链接后再启动服务:

[root@zabsever zabbix]# find / -name libmysqlclient.so.21
/mysql/mysql-8.0/lib/libmysqlclient.so.21

[root@zabsever zabbix]# ln -s /mysql/mysql-8.0/lib/libmysqlclient.so.21 /usr/lib64

Web服务配置

为了能够使用Web图形化界面管理和查看监控,还需要安装Web服务器组件。Web服务器通常可以使用httpd或者Nginx。Zabbix前端是用PHP语言写的,因此还需要安装PHP。

由于CentOS 7的YUM源中只有PHP 5,而Zabbix从5.0版本开始要求PHP版本不低于7.2,因此需要配置额外的源。

# 安装第三方源
[root@zabsever zabbix]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@zabsever zabbix]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装httpd和PHP语言:

[root@zabsever zabbix]# yum install httpd -y
[root@zabsever zabbix]# yum install php72w-cli php72w-common php72w-gd \
php72w-ldap php72w-mbstring php72w-mysqlnd \
php72w-xml php72w-bcmath mod_php72w -y

将Zabbix源码中的php文件拷贝到httpd的根目录下:

[root@zabsever zabbix]# mkdir -p /var/www/html/zabbix
[root@zabsever zabbix]# cp -r /opt/zabbix/ui/* /var/www/html/zabbix/
[root@zabsever zabbix]# chown -R apache:apache /var/www/html/

修改PHP的配置文件:

# 修改以下参数
[root@zabsever zabbix]# vi /etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai

启动Web服务器并设置开机自启:

systemctl start httpd
systemctl enable httpd

通过访问http://{ZABBIX_SERVER_IP}/zabbix来配置Zabbix Server的Web前端页面。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置完成后,既可以登录Web管理页面。默认管理员用户及登录口令为Admin/zabbix
在这里插入图片描述
在这里插入图片描述

如果有报错,记得检查日志:

[root@zabsever ~]# tail -f /tmp/zabbix_server.log

Zabbix Agent安装

在被监控端服务器上安装Zabbix Agent。

创建zabbix用户:

[root@mysqldb ~]# groupadd --system zabbix
[root@mysqldb ~]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin zabbix

编译安装zabbix agent:

# 解压安装包
[root@mysqldb opt]# tar xvf zabbix-6.0.17.tar.gz
[root@mysqldb opt]# ln -s zabbix-6.0.17 zabbix

# 安装依赖包
[root@mysqldb opt]# yum install gcc pcre-devel -y

# 编译安装
[root@mysqldb opt]# cd zabbix
[root@mysqldb zabbix]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@mysqldb zabbix]# make install

编译安装成功后的目录结构如下:

[root@mysqldb zabbix]# tree /usr/local/zabbix
/usr/local/zabbix
├── bin
│   ├── zabbix_get
│   └── zabbix_sender
├── etc
│   ├── zabbix_agentd.conf
│   └── zabbix_agentd.conf.d
├── lib
│   └── modules
├── sbin
│   └── zabbix_agentd
└── share
    └── man
        ├── man1
        │   ├── zabbix_get.1
        │   └── zabbix_sender.1
        └── man8
            └── zabbix_agentd.8

10 directories, 7 files

Zabbix Agent配置

conf文件配置

配置文件zabbix_agentd.conf有如下几个重要参数:

  • Server:被动模式下Zabbix Server的地址。被动模式即Pull模式,是Zabbix Agent的默认工作模式。
  • ServerActive:主动模式下Zabbix Server的地址。主动模式即Push模式,Zabbix Agent会主动把采集到的监控数据发送给Server.
  • Hostname:主机名,可以是IP地址。要求在Zabbix Server监控的所有主机内具有唯一标识性。Hostname只适用于主动模式。

参照如下配置即可:

[root@mysqldb zabbix]# cat etc/zabbix_agentd.conf | grep -Ev '^$|^#'
LogFile=/tmp/zabbix_agentd.log
Server=172.16.175.y
ServerActive=127.0.0.1
Hostname=mysqlhost

系统服务配置

配置zabbix agent系统服务:

[root@mysqldb zabbix]# vi /opt/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONFIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONFIG_FILE
        ...

# 拷贝到init.d目录下
[root@mysqldb zabbix]# cp /opt/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ 

启动zabbix agentd服务:

#service zabbix_agentd start
systemctl start zabbix_agentd
systemctl enable zabbix_agentd

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

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

相关文章

ChatGPT提示词工程(五):Transforming转换

目录 一、说明二、安装环境三、转换&#xff08;Transforming&#xff09;1. 翻译 Translation2. 语气转换 Tone Transformation3. 格式转换 Format Conversion4. 拼写或语法检查 Spellcheck/Grammar check 一、说明 这是吴恩达 《ChatGPT Prompt Engineering for Developers》…

kubernetes安全框架RBAC

目录 一、Kubernetes 安全概述 二、鉴权、授权和准入控制 2.1 鉴权(Authentication) 2.2 授权(Authorization) 2.3 准入控制 三、基于角色的权限访问控制&#xff1a; RBAC 四、案例&#xff1a;为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控…

YOLOv5 txt标签转图像标签(多个标签)

Python YOLOv5 txt标签转图像标签&#xff08;多个标签 txt的数据如图所示1.读原始图像以及对应的txt文件2.获得原始图像的大小3.生成一张大小相同&#xff0c;黑色背景的图片4.读取txt文件&#xff0c;循环的增加标签5.获得不规则图形&#xff08;标签&#xff09;6.完整代码7…

Linux运维:makefile

一.makefile 1.makefile介绍 Makefile 是一种用于自动化构建的文件&#xff0c;它描述了一个软件项目的编译规则和依赖关系&#xff0c;并提供了一些工具来自动执行这些规则。 Makefile 的主要作用如下&#xff1a; 自动化编译&#xff1a;通过 Makefile&#xff0c;可以定…

使用 nvcc 的时候出现“helper_cuda.h”: No such file or directory错误该怎么办(其他xxx.h也是同样的解决方法)

今天在命令行中使用nvcc的时候&#xff0c;出现了“helper_cuda.h”: No such file or directory错误。这个错误信息表示&#xff1a;在编译的时候&#xff0c;找不到helper_cuda.h头文件&#xff08;其他xxx.h如果也找不到&#xff0c;那么下面的解释和解决方法也通用&#xf…

Java流式操作——Collectors工具类

文章目录 方法实践说明一、前提条件Person类Data类 二、操作maxBy&#xff1a;获取流中最大元素&#xff1b;minBy&#xff1a;获取流中最小元素joining:合并&#xff0c;将流中的元素&#xff0c;以字符串的形式拼接起来summingInt:把流中的元素映射成int类型的元素&#xff0…

springboot第14集:MyBatis-CRUD讲解

注意点&#xff1a;增、删、改操作需要提交事务&#xff01; 为了规范操作&#xff0c;在SQL的配置文件中&#xff0c;我们尽量将Parameter参数和resultType都写上&#xff01; 编写Mapper接口类 import com.da.pojo.User; import java.util.List; public interface UserMapper…

4.1 指令系统的发展与性能要求

学习目标&#xff1a; 指令系统的发展与性能要求的学习目标&#xff1a; 理解指令系统的发展历程&#xff0c;包括CISC、RISC、VLIW等架构的特点、优缺点以及应用领域&#xff1b;掌握指令系统的性能要求&#xff0c;包括指令集的多样性、可编程性、并行性、效率、可靠性等&a…

ChatGPT学习-如何向ChatGPT提问

​ 最近在学习chatGPT,怎么样的提问是一个好的提问。通过网上找资料肯定不是最好的方法&#xff0c;我想起一句话&#xff0c;“不识庐山真面目&#xff0c;只缘身在此山中”。最好的老师就是chatGPT&#xff01; 下面先展示下提问成果&#xff0c;我通过xmind生成了思维导图 一…

为什么越来越多的企业选择云计算

目录 一、前言 二、云计算的基础概念 2.1 云计算的定义 2.2 云计算的发展历程 2.3 云计算的基本架构 三、 企业采用云计算的优势 四、 行业应用案例 五、未来发展与挑战 六、总结 随着数字化转型的加速&#xff0c;越来越多的企业开始选择云计算作为信息技术应用的基础…

Linux 用户管理与文件权限

Linux 是一个多用户系统&#xff0c;它允许多个用户同时登陆主机&#xff0c;并为他们分配不同的资源和工作环境进行使用。当然&#xff0c;不同的用户都有文件的私有需求&#xff0c;所以设置不同用户文件的权限管理十分重要。 01 用户与用户组 Linux 中一般将文件访问权限的…

【matplotlib】可视化解决方案——如何正确设置图例

概述 matplotlib 中的图例&#xff08;Legend&#xff09;可以帮助我们展示每个数据对应的名称&#xff0c;让图像阅读者更好的认识到图像的数据结构以及绘图者想表达的意思。matplotlib 可以为每一个可见绘图对象&#xff08;Artist&#xff09;添加图例&#xff0c;官方建议…

windows10系统如何实现telnet内网穿透

在windows10系统环境中&#xff0c;我们常用的内网穿透方案是远程桌面内网穿透技术方案&#xff0c;存在的弊端是它属于视窗类操作工具。网上很多教人开启windows10的telnet服务的帖子&#xff0c;凡是通过系统设置进入启用或关闭windows应用后勾选telnet客户端这种方式&#x…

ChatGPT实现服务器体验沙箱

服务器体验沙箱 IT 人员在学习一门新技术时&#xff0c;第一个入门门槛通常都是"如何在本地安装并成功运行"。因此&#xff0c;很多技术的官网都会通过沙箱技术&#xff0c;提供在线试用的 playground 或者按步模拟的 tour。让爱好者先在线尝试效果是否满足预期&…

如何评估现代处理器的性能——以ARM Cortex-A53为例

如何评估现代处理器的性能——以ARM Cortex-A53为例 1 有哪些通用评价指标&#xff1f; 现代处理器内核的性能可以从以下几个方面进行评估&#xff1a; 时钟速度&#xff08;Clock Speed&#xff09;&#xff1a;它是CPU内部时钟发生器的频率&#xff0c;以赫兹&#xff08;…

IDEA2022版教程下()

8.快捷键的使用 8.1 常用快捷键 见《 尚硅谷_宋红康_IntelliJ IDEA 常用快捷键一览表.md 》 8.2 查看快捷键 1、已知快捷键操作名&#xff0c;未知快捷键 2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键 8.4 使用其它平台快捷键 苹果电脑或者是用惯Eclips…

改进YOLOv5: | 涨点神器 | 即插即用| ICLR 2022!Intel提出ODConv:即插即用的动态卷积

OMNI-DIMENSIONAL DYNAMIC CONVOLUTION ODConv实验核心代码ODConv代码yaml文件运行:论文链接: https://openreview.net/forum?id=DmpCfq6Mg39 本文介绍了一篇动态卷积的工作:ODConv,其通过并行策略采用多维注意力机制沿核空间的四个维度学习互补性注意力。作为一种“即插…

Java8流式操作——中间操作

文章目录 什么是中间操作&#xff1f;方法实践说明一、前提条件Person类Data类 二、操作filter:过滤distinct:去重&#xff08;去除集合中重复的元素&#xff09;sorted:排序①、sorted():无参构造②、sorted(Compartor compartor)&#xff1a;有参构造 skip:跳过。从前往后数&…

【Python入门篇】Python开发环境的搭建——安装和配置PyCharm工具

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

闲谈【Stable-Diffusion WEBUI】的插件:绘图过程动画输出

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;过程动画输出&#xff08;Steps Animation&#xff09;&#xff08;1.1&#xff09;使用&#xff08;1.2&#xff09;成果 &#xff08;零&#xff09;前言 本篇主要提到WEBUI的过程动画输出插件&#xff0c…