mysql常见监控项

 1、MySQL服务运行状态

约定所有MySQL服务都必须以ip1(内网ip)来绑定,每个机器只有一个ip1,可以有多个端口,即多个MySQL Server。采集程序读取ip端口信息文件来判断server是否存在。

sockParam=`ps aux | grep -P "mysqld.*--port=${port}" | grep -oP " --socket.*\.sock"`  # 空则获取不到该服务器端口mysql socket配置,请检查mysql配置是否正确
MYSQL="/usr/local/mysql/bin/mysql -hlocalhost --port=${port} ${sockParam} -u${user} -p${password} "
MYSQL_ADMIN="/usr/local/mysql/bin/mysqladmin -hlocalhost --port=${port} ${sockParam} -u${user} -p${password} "
curStatus=`${MYSQL} -e"show global status"`  # 空则是获取不到该服务器mysql状态,请检查mysql是否正常运行
if [ -z "${curStatus}" ]
then
    portExists=0
else
    echo "${curStatus}" >> ${curFile}
    portExists=1

  2、连接数

${MYSQL_ADMIN} processlist -v | wc -l

  3、线程数

grep 'Threads_connected' ${curFile} | awk '{print $2}'

  4、慢查询数

grep 'Slow_queries' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的慢查询次数。上次数据保存在last.cache。

  5、打开表数

grep 'Open_tables' ${curFile} | awk -F ' ' '{print $2}'

  6、每秒执行select数

grep 'Com_select' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。  

  7、每秒执行delete数

grep 'Com_delete' ${curFile} | grep -v 'multi' | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。

  8、每秒执行insert数

grep 'Com_insert' ${curFile} | grep -v 'select' | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。

  9、每秒执行update数

grep 'Com_update' ${curFile} | grep -v 'multi' | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。

  10、每秒钟执行replace数

grep 'Com_replace' ${curFile} | grep -v 'select' | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。 

  11、每秒钟执行的 Innodb_rows_deleted

grep 'Innodb_rows_deleted' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。  

  12、每秒钟执行的 Innodb_rows_inserted

grep 'Innodb_rows_inserted' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。  

  13、每秒钟执行的 Innodb_rows_read

grep 'Innodb_rows_read' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。

  14、每秒钟执行的 Innodb_rows_updated

grep 'Innodb_rows_updated' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量。上次数据保存在last.cache。

  15、每秒钟执行的 innodb rows total

expr ${innodbRowsDeletedPS} + ${innodbRowsInsertedPS} + ${innodbRowsReadPS} + ${innodbRowsUpdatedPS}

等于前面四个Innodb_rows_*执行次数的总和

  16、每秒处理命令数 qps

expr ${mysqlSelectNumPS} + ${mysqlInsertNumPS} + ${mysqlUpdateNumPS} + ${mysqlDeleteNumPS} + ${mysqlReplaceNumPS}

等于前面五个mysql命令Com_*的数量总和

  17、每秒接收字节数 KByte/s

grep 'Bytes_received' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量,除以1024得到单位KByte/s。上次数据保存在last.cache。

  18、每秒发送字节数

grep 'Bytes_sent' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值除以时间差,等于最近1分钟的执行数量,除以1024得到单位KByte/s。上次数据保存在last.cache。

  19、可立即获得锁的次数

grep 'Table_locks_immediate' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的可立即获得锁数量。上次数据保存在last.cache。

  20、不可立即获得锁的次数

grep 'Table_locks_waited' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的不可立即获得锁数量。上次数据保存在last.cache。

  21、一行锁定需等待时间

grep 'Innodb_row_lock_waits' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的一行锁定需等待时间。上次数据保存在last.cache。

  22、 当前脏页数

grep 'Innodb_buffer_pool_pages_dirty' ${curFile} | awk -F ' ' '{print $2}'

  23、要求清空的缓冲池页数

grep 'Innodb_buffer_pool_pages_flushed' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的要求清空的缓冲池页数。上次数据保存在last.cache。

  24、Innodb 写入日志字节数 KByte

grep 'Innodb_os_log_written' ${curFile} | awk -F ' ' '{print $2}'

需要计算两次的慢查询次数得到差值,等于最近1分钟的写入日志字节数,除以1024得到KByte。上次数据保存在last.cache。

  25、占用内存大小 MByte

pid=`ps aux | grep 'mysqld' | grep -Ev 'safe|grep' | awk '{print $2}' `
mem=`cat /proc/${pid}/status | grep 'VmRSS' | awk '{print $2}'`
mysqlMem=`echo "scale=2;${mem} / 1024" | bc`

除以1024得到MByte

  26、handler socket每秒处理数

curHsTableLock=`grep 'Hs_table_lock' ${curFile} | awk '{print $2}'`
preHsTableLock=`grep 'Hs_table_lock' ${preFile} | awk '{print $2}'`
if [ -n "${curHsTableLock}" ]
then
    hsQPS=`echo "scale=0;(${curHsTableLock} - ${preHsTableLock}) / ${intervalTime}" | bc`
else
    hsQPS=0
fi

  27、主从同步和状态

#主从信息
#是否为从服务器
slave_running=`grep 'Slave_running' ${curFile} | awk '{print $2}'`
if [ "${slave_running}A" = "ONA" ]
then
    slaveRunning=1
    slaveStatus=`${MYSQL} -e'show slave status\G'`
    echo "${slaveStatus}" > ${slaveFile}
    
    slaveIoRunning=`grep 'Slave_IO_Running' ${slaveFile} | awk -F ':' '{print $2}'`
    slaveSqlRunning=`grep 'Slave_SQL_Running' ${slaveFile} | awk -F ':' '{print $2}'`

    if [ "${slaveIoRunning}A" == "NoA" -o "${slaveSqlRunning}A" == "NoA" ]
    then
        slaveRunning=3
    fi
    
    secondsBehindMaster=`grep 'Seconds_Behind_Master' ${slaveFile} | awk -F ':' '{print $2}'`
    if [ "${secondsBehindMaster}A" = "NULLA" ]
    then
        secondsBehindMaster=8888  # 表示主从不同步
    fi

    #是从库时 获取主库ip
    master=`grep 'Master_Host' ${slaveFile} | awk -F ':' '{print $2}'`
    masterPort=`grep 'Master_Port' ${slaveFile} | awk -F ':' '{print $2}'`
else
    master=""
    masterPort=""
    slaveRunning=0
    secondsBehindMaster=10000  # 不用检测
fi

注:Seconds_Behind_Master,该值作为判断主从延时的指标,那么它又是怎么得到这个值的呢,同时,它为什么又受到很多人 的质疑?

Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread复制好的 event的timestamp(简写为ts)进行比较,而得到的这么一个差值。我们都知道的relay-log和主库的bin-log里面的内容完全一样,在记录sql语句的同时会被记录上当时的ts,所以比较参考的值来自于binlog,其实主从没有必要与NTP进行同步,也就是说无需保证主从时钟的 一致。你也会发现,其实比较真正是发生在io_thread与sql_thread之间,而io_thread才真正与主库有关联,于是,问题就出来了, 当主库I/O负载很大或是网络阻塞,io_thread不能及时复制binlog(没有中断,也在复制),而sql_thread一直都能跟上 io_thread的脚本,这时Seconds_Behind_Master的值是0,也就是我们认为的无延时,但是,实际上不是,你懂得。这也就是为什 么大家要批判用这个参数来监控数据库是否发生延时不准的原因,但是这个值并不是总是不准,如果当io_thread与master网络很好的情况下,那么 该值也是很有价值的。

之前,提到 Seconds_Behind_Master这个参数会有负值出现,我们已经知道该值是io_thread的最近跟新的ts与sql_thread执行到 的ts差值,前者始终是大于后者的,唯一的肯能就是某个event的ts发生了错误,比之前的小了,那么当这种情况发生时,负值出现就成为可能。

  28、检测采集Agent心跳情况

转载于:https://www.cnblogs.com/cyt1153/p/6608069.html

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

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

相关文章

2005年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天距离2024年的AMC8美国数学竞赛举办已不足一个月了,赶紧利用周末的时间刷刷真题,查漏补缺吧!如果您有任何关于AMC8比赛的任何问题都可以问我,关于题目的解析也可以交流。 今天我们来看看2005年AMC8竞赛的五道典型考题。欢迎您查…

WPF效果第一百九十三篇之登录实现

前面一直在玩耍ListBox(最爱),大周末的就适合在家吹着风扇撸着代码;今天来分享一个很简单实用的登录,来看看最终实现的效果:1、关于软件启动后焦点实现:<Style TargetType"Border"><Style.Triggers><DataTrigger Binding"{Binding IsEmptyAccoun…

IDEA中安装并使用JRebel热部署插件

文章目录 作者简介引言导航热门专栏推荐概述安装JRebel注册JRebel配置JRebel最后小结导航热门专栏推荐作者简介 作者名&#xff1a;编程界明世隐 简介&#xff1a;CSDN博客专家&#xff0c;从事软件开发多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是从零开始一步步…

UWP: 实现 UWP 应用自启动

原文:UWP: 实现 UWP 应用自启动在上一篇文章中&#xff0c;我们实现了使用命令行来启动 UWP 应用&#xff0c;在这一篇文章中&#xff0c;我们会实现 UWP 应用自启用的实现&#xff0c;也即开机后或用户登陆后&#xff0c;应用自己启动。这些特性原来都是 Win32 程序所具备的&a…

选择 GCD 还是 NSTimer ?

我们常常会延迟某件任务的执行&#xff0c;或者让某件任务周期性的执行。然后也会在某些时候需要取消掉之前延迟执行的任务。 延迟操作的方案一般有三种&#xff1a; 1.NSObject的方法&#xff1a; 2.使用NSTimer的方法&#xff1a; 3.使用GCD的方法&#xff1a; 一般情况下&am…

完美解决Idea unable to access git 错误

在命令行执行 如下命令即可 git config --global --unset http.proxy git config --global --unset https.proxy

Web框架 性能评测 -- C# 的性能 和 Rust、C++并驾齐驱

自从2021年2月第20轮公布的测试以后&#xff0c;一年半后 的2022年7月19日 发布了 TechEmpower 21轮测试报告&#xff1a;Round 21 results - TechEmpower Framework Benchmarks。Techempower benchmark是包含范围最广泛的web框架性能测试&#xff0c;覆盖了比较典型的使用场景…

CF449 C. Jzzhu and Apples

1 /*2 http://codeforces.com/problemset/problem/449/C3 cf 449 C. Jzzhu and Apples4 数论素数贪心5 */6 #include <cstdio>7 #include <algorithm>8 using namespace std;9 const int Nmax100005; 10 int is_prime[Nmax]; 11 int book[Nmax]; 12 int cnt[Nmax];…

【GlobalMapper精品教程】027:路径剖面和和视线工具的使用

文章目录 一、路径剖面简介二、创建剖面图1. 加载DEM2. 创建剖面图3. 计算填挖方3. 保存剖面图一、路径剖面简介 路径剖面视线工具允许您使用加载的高程数据集沿用户指定的路径获取垂直剖面。 要定义生成3D路径剖面所遵循的路径,只需单击鼠标左键选择路径的点,然后石键单击…

QT中VideoProbe的简介和实现

一、遇到问题在Android机上使用QT进行图像处理程序设计的时候&#xff0c;遇到的一个比较明显的问题就是图片采集的问题----摄像头获得是实时的视频&#xff0c;如果我们想从中动态地截获图片&#xff0c;并且转换成Mat的格式&#xff0c;那么仅仅是静态的imagecapturee就无法完…

bzoj2751[HAOI2012]容易题(easy)

bzoj2751[HAOI2012]容易题(easy) 题意&#xff1a; 已知一个数列A对于所有的A[i]都是1~n的自然数&#xff0c;一些A[i]不能取一些值&#xff0c;求出所有可能的数列的积的和 mod 1000000007的值。 题解&#xff1a; 题目中的n≤109实际上是109……首先推个方程s[l,r]s[l,k]*s[k…

WinForm(二):WinFrom中Main函数的入参和出参

基本上有独立进程的应用&#xff0c;都是以Main函数作为入口&#xff0c;开始运行的。在C#中&#xff0c;Main函数可以无参无返回值&#xff0c;当然也可以是有string[]参数和int返返回值的。WinFrom也满足这个规则。那么Main作为一个进程的开始函数&#xff0c;那么是谁传这些…

linux内存回收机制

无论计算机上有多少内存都是不够的&#xff0c;因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式&#xff1a;如果一个很少使用的页的后备存储器是一个块设备&#xff08;例如文件映射&#xff09;&a…

编译源码 JAVA out of memory

转载于:https://www.cnblogs.com/dyufei/p/6612032.html

安卓 Input Events(输入事件)

在安卓中&#xff0c;有不止一种方法从你的应用截取用户交互事件。在你的用户界面中考虑事件&#xff0c;途径就是从用户界面中的一个指定的view对象中捕获事件。该view提供了这样做的方法。 在你用来组成你布局的不同的view类中&#xff0c;你或许注意到了一些公共的回调方法似…

【GlobalMapper精品教程】029:栅格重分类案例详解

重分类就是对原有栅格像元值重新分类从而得到一组新值并输出。重分类工具有多种方法将像元值重新分类或更改为替代值,Globalmapper提供了栅格重分类的功能。 文章目录 一、栅格重分类简介二、栅格重分类案例【参考阅读】:ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Re…

Mybatis 和 JPA 用哪个好? 优缺点 ?

本文不会下关于 Mybatis 和 JPA 两个持久层框架哪个更好这样的结论。只是摆事实&#xff0c;讲道理&#xff0c;所以&#xff0c;请各位看官勿喷。 一、事件起因 关于 Mybatis 和 JPA 孰优孰劣的问题&#xff0c;争论已经很多年了。一直也没有结论&#xff0c;毕竟每个人的喜…

SkiaSharp 之 WPF 自绘 五环弹动球(案例版)

此案例基于拖曳和弹动球两个技术功能实现&#xff0c;如有不懂的可以参考之前的相关文章&#xff0c;属于递进式教程。五环弹动球好吧&#xff0c;名字是我起的&#xff0c;其实&#xff0c;你可以任意个球进行联动弹动&#xff0c;效果还是很不错的&#xff0c;有很多前端都是…

【GlobalMapper精品教程】032:浏览地理照片及航线信息(航测应用)

本文讲述globalmapper软件在无人机航测了内业处理中的应用之:浏览地理照片及航线信息、相机参数、元数据编辑器。 文章目录 1. 航线信息浏览2. 地理图像浏览2.1 数字化工具2.2 要素信息工具2.3 属性表3. 照片原数据编辑1. 航线信息浏览 打开globalmapper软件,加载无人机航测…