zabbix 监控 mysql

article/2025/11/7 23:07:58

zabbix 监控 mysql

1、监控规划

在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要对Zabbix很了解,这里只是提出监控的需求。

需求一:监控MySQL的状态,当状态发生异常,发出报警;

需求二:监控MySQL的操作,并用图表展现;

2、自定义脚本监控扩展Agent

Zabbix Server与Agent之间监控数据的采集主要是通过Zabbix Server主动向Agent询问某个Key的值,Agent会根据Key去调用相应的函数去获取这个值并返回给Server端。Zabbix 2.4.7的Agent本并没有内置MySQL的监控功能(但是Server端提供了相应的Template配置),所以我们需要使用Zabbix的User Parameters功能,为MySQL添加监控脚本。

3、授权mysql登录用户(agent端)

mysql> grant usage on *.* to zabbix@127.0.0.1 identified by '123456';mysql> flush privileges;

4、agent端配置

存活检测

利用UserParameter参数自定义Agent Key。
对于需求一 ,我们采用mysqladmin这个工具来实现,命令如下:

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping 
mysqld is alive

如果MySQL状态正常,会显示mysqld is alive,否则会提示连接不上。对于服务器端,mysqld is alive这样的句子不好理解,服务器端最好只接收1和0,1表示服务可用,0表示服务不可用。那么再改进一下这个命令,如下:

# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping |grep -c alive
1

用户名和密码放在命令中对于以后的维护不好,所以我们在/var/lib/zabbix/下创建一个包含MySQL用户名和密码的配置文件“.my.cnf”,如下:

user=zabbix
host=127.0.0.1
password='123456'

有了这个文件后的命令变更为

HOME=/var/lib/zabbix/ mysqladmin ping |grep -c alive
1

做完这一步后需要做的就是,将这个监控命令添加到Zabbix Agent中,并与一个Key对应,这样Zabbox Server就能通过这个Key获取MySQL的状态了。我们使用mysql.ping作为MySQL状态的Key。

首先在去除/etc/zabbix/zabbix_agentd.conf中

“Include=/etc/zabbix_agentd.d/” 这一行的注释符。

其次,在/etc/zabbix/zabbix_agentd.d/目录下创建userparameter_mysql.conf文件。在文件中添加如下命令:

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive

使用下面的命令测试是否正常工作。

# /usr/sbin/zabbix_agentd -t mysql.ping
mysql.ping                                    [t|1]

其他性能指标

1.添加userparameter_mysql
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf####监控mysql性能的脚本UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1#####mysql版本UserParameter=mysql.version,mysql -V
2.check_mysql.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Revision: 1.0
# -------------------------------------------------------------------------------
# Copyright:
# License: GPL# 用户名
MYSQL_USER='zabbix'# 密码
MYSQL_PWD='zabbix@123'# 主机地址/IP
MYSQL_HOST='ip'# 端口
MYSQL_PORT='3306'# 数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"# 参数是否正确
if [ $# -ne "1" ];then
echo "arg error!"
fi# 获取数据
case $1 in
Uptime)
result=`${MYSQL_CONN} status 2>/dev/null |cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status   2>/dev/null  |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status  2>/dev/null  |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status  2>/dev/null  |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status  2>/dev/null   |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status   2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status   2>/dev/null  |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status   2>/dev/null  |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status   2>/dev/null  |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status  2>/dev/null  |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status  2>/dev/null  |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status  2>/dev/null  |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;*)
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
;;
esac
3.授权:
chmod +x  /etc/zabbix/zabbix_agentd.d/check_mysql.shChown zabbix.zabbix  /etc/zabbix/zabbix_agentd.d/check_mysql.sh
4. zabbix_agent上测试:

zabbix_agentd -t mysql.ping

在这里插入图片描述

5.Zabbix_server测试

zabbix_get -s ip -P 端口 -k mysql.ping

在这里插入图片描述

5、在web端进行配置

**创建主机 **

在这里插入图片描述
在这里插入图片描述
关联模板

在这里插入图片描述

创建监控项

在这里插入图片描述

创建图形

在这里插入图片描述
查看监控图像

在这里插入图片描述

其他监控项以此配置完成

6、zabbix自带mysql监控项

version:数据库版本
key_buffer_size:myisam的索引buffer大小
sort_buffer_size:会话的排序空间(每个线程会申请一个)
join_buffer_size:这是为链接操作分配的最小缓存大小,这些连接使用普通索引扫描、范围扫描、或者连接不适用索引
max_connections:最大允许同时连接的数量
max_connect_errors:允许一个主机最多的错误链接次数,如果超过了就会拒绝之后链接(默认100)。可以使用flush hosts命令去解除拒绝
open_files_limits:操作系统允许mysql打开的文件数量,可以通过opened_tables状态确定是否需要增大table_open_cache,如果opened_tables比较大且一直还在增大说明需要增大table_open_cache
max-heap_tables_size:建立的内存表的最大大小(默认16M)这个参数和tmp_table_size一起限制内部临时表的最大值(取这两个参数的小的一个),如果超过限制,则表会变为innodb或myisam引擎,(5.7.5之前是默认是myisam,5.7.6开始是innodb,可以通过internal_tmp_disk_storage_engine参数调整)。
max_allowed_packet:一个包的最大大小
##########GET INNODB INFO
#INNODB variables
innodb_version:
innodb_buffer_pool_instances:将innodb缓冲池分为指定的多个(默认为1)
innodb_buffer_pool_size:innodb缓冲池大小、5.7.5引入了innodb_buffer_pool_chunk_size,
innodb_doublewrite:是否开启doublewrite(默认开启)
innodb_read_io_threads:IO读线程的数量
innodb_write_io_threads:IO写线程的数量
########innodb status
innodb_buffer_pool_pages_total:innodb缓冲池页的数量、大小等于innodb_buffer_pool_size/(16*1024)
innodb_buffer_pool_pages_data:innodb缓冲池中包含数据的页的数量
########## GET MYSQL HITRATE
1、查询缓存命中率
如果Qcache_hits+Com_select<>0则为 Qcache_hits/(Qcache_hits+Com_select),否则为02、线程缓存命中率
如果Connections<>0,则为1-Threads_created/Connections,否则为03、myisam键缓存命中率
如果Key_read_requests<>0,则为1-Key_reads/Key_read_requests,否则为04、myisam键缓存写命中率
如果Key_write_requests<>0,则为1-Key_writes/Key_write_requests,否则为05、键块使用率
如果Key_blocks_used+Key_blocks_unused<>0,则Key_blocks_used/(Key_blocks_used+Key_blocks_unused),否则为06、创建磁盘存储的临时表比率
如果Created_tmp_disk_tables+Created_tmp_tables<>0,则Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否则为07、连接使用率
如果max_connections<>0,则threads_connected/max_connections,否则为08、打开文件比率
如果open_files_limit<>0,则open_files/open_files_limit,否则为09、表缓存使用率
如果table_open_cache<>0,则open_tables/table_open_cache,否则为0

http://chatgpt.dhexx.cn/article/1DdPCi0g.shtml

相关文章

zabbix监控

目录 一、zabbix监控 1.1、网站可用性 2、监控什么东西 2.1、监控范畴 3、企业级监控解决方案——Zabbix 4、zabbix主要功能 5、zabbix监控范畴 6、zabbix监控组件 7、zabbix常用的监控架构平台 8、zabbix运行过程图 一、zabbix监控 1、为什么要监控 对于运维人员来说…

zabbix服务器监控

zabbix服务器监控 文章目录 zabbix服务器监控一、zabbix服务器监控概念1.服务器上安装zabbix-agent2.启动zabbix-agent服务 二、监控远程linux服务器1.将server的hosts文件复制到agent上2.agent上安装zabbix-agent3.配置agent端并启动服务4.管理界面创建监控主机 三、为zabbix …

Zabbix监控服务详解+实战

目录 一、监控体系概述 1. 为什么需要监控 2. 监控目标与流程 &#xff08;1&#xff09;监控的目标 &#xff08;2&#xff09; 监控的流程 3. 监控的对象 &#xff08;1&#xff09;CPU监控 &#xff08;2&#xff09;磁盘监控 &#xff08;3&#xff09;内存监控 …

Zabbix 监控(内容详细 供您参考)

目录 一、Zabbix简介 1.1 Zabbix概述 1.2 Zabbix 监控原理 1.3 zabbix监控部署在系统中&#xff0c;包含常见的五个程序 二、部署zabbix服务端 三、部署zabbix 客户端 在 Web 页而中添加 agent 主机 四、自定义监控内容 1.明确需要执行的linux命令 2.创建zabbix的监控…

EF框架实现增删改查

EF框架实现增删改查 1.创建数据库&#xff1a;先创建两张表&#xff0c;文章类型表以及文章详情表&#xff0c;设置主外键&#xff08;ID&#xff0c;Catelogid&#xff09; Catelog:文章类型表 字段&#xff1a;Id&#xff08;自增&#xff09;&#xff0c;Name&#xff0c…

【EF框架】EF框架的开发方法

前言 EF框架具有有三种数据持久化的方式&#xff0c;分别为Code First,Model First,Database First.看一下它们都有什么联系&#xff1f; 叙述 EF框架的三种工作方式 1.Database First是基于已存在的数据库&#xff0c;利用某些工具&#xff08;如VS提供的EF设计器&#xff09…

使用EF框架

1.创建一个控制台项目 2.创建一个EF框架 3.查询出一个表中得到所有元素 static void Main(string[] args){//创建一个EF对象var ef new DemoDatabaseEntities1();//遍历数据库Grade表中的所有元素【EF框架对象->Grade表对象->把表内所有元素转换成实体集合Li…

C#控制台EF框架增删改查

1.创建一个linq to sql 或者EF框架&#xff0c;引入自己数据库的表 2.创建一个上下文 3.添加 News是数据库中的一张表名。 创建一个对象&#xff0c;把需要添加的内容放到对象里面&#xff0c;往表中插入对象&#xff0c;提交到数据库中&#xff0c;刷新数据库 。 4. 修改 创…

EF框架你了解多少?

[EF框架的认识] EF教程视频大全 一、 EF简介 ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主&#xff0c;将数据逻辑层切分为三块&#xff0c;分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层&#xff0c;其上还有 Entity Client&#xff0c;…

EF-创建EF框架

文章目录 什么是EFEF的作用 EF 分类Model First&#xff08;模型优先&#xff09;Code First&#xff08;代码优先&#xff09; Database First&#xff08;数据优先&#xff09; 如何创建EF 安装创建 注意事项 什么是EF 实体框架&#xff08;Entity Framework&#xff09;是微…

EF框架是什么?

Entity Framework 实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术&#xff0c;是微软的一个ORM框架。 ORM是什么&#xff1f; ORM的全称是Object Relational Mapping&#xff0c;即对象关系映射。 ORM框架有很多&#xff0c;EF框架是ORM框架的其中一种&a…

EF框架学习三

实例操作&#xff1a; Database First&#xff08;数据库优先&#xff09; 1.1创建一个示例数据库。 1.2打开vs2017&#xff0c;新建项目&#xff0c;如图所示 1.3添加EF框架插件 1.4添加ADO实体数据模型 1.5选择模型类型&#xff0c;点击下一步&#xff0c;然后新建连接&…

C# EF框架使用实例

EF框架 1、新增ADO.NET实体数据模型&#xff0c;但这样会导致新增数据库连接配置 2、选择好后&#xff0c;点添加 3、下一步&#xff0c;点新建连接 在这里如果勾上将App.Config&#xff0c;会自动在配置文件&#xff08;App.config&#xff09;中新增数据库连接字符串 4、以…

EF 框架的简介、发展历史;ORM框架概念

一、EF 框架简介 EF 全称是 EntityFramework 。 Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。 如果不用ORM框架&#xff0c;我们一般…

【EF框架】聊一聊EF框架

前言 EF框架的全称EntityFramework &#xff0c;Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 叙述 ORM ORM是一种将数据从域对象存储到关系数据库&#xff08;如MS SQL Server&#xff09;的工具&#xff0c;以自动化的方…

给EF框架自动生成实体类修改名字

给EF框架自动生成实体类名字一般以T_ 开头&#xff0c;不符合我们给实体类起的名字这个时候如何进行修改呢&#xff1f; 右击2 选择属性 将属性中的实体集名称和名称改成自己想要的样子就可以啦~ 然后点击重新生成解决方案&#xff0c;我们就能修改自动生成的.cs的实体类名…

EF框架搭建

这是在vs2019版本社区版的创建流程&#xff1b; 右键项目添加新建项->选择数据&#xff0c; 这里选择第一个ADO.NET实体数据模型&#xff0c;并重命名&#xff0c;我这里命名为数据库名 基本上用的都是第一个&#xff0c;通过数据库生成实体类。 因为当前项目没有连接过&am…

EF框架如何搭建

EF出现背景 1、以前程序设计师一定要为了连接与访问数据库而去学习 SQL 指令&#xff0c;因此在信息业中有很多人都在研究如何将程序设计模型和数据库集成在一起&#xff0c;对象关系对应 (Object-Relational Mapping) 的技术就是由此而生。 2、像Hibernate或NHibernate都是这…

EF框架-SQL语句 查询与修改

机房合作当中使用到了框架首先有很多的不同之处&#xff0c;大大方便的编程的时间。 首先在查询与修改这两个点出发。 查询 这是使用SQL语句进行的查询&#xff0c;查询到的是多条信息 public List<CancelCardModel> SelectCancelRecord(string iD){using (InternetBa…

EF框架简介

EF 全称是 EntityFramework 。 Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。   ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。 二、EF实体框架整体架构&#xff1a; 架构组件&…