首页 > 数据库 >监控自建MySQL慢查询日志并上报到企业微信集群

监控自建MySQL慢查询日志并上报到企业微信集群

时间:2023-04-25 23:08:36浏览次数:42  
标签:LOG sql 微信 execule MySQL FILE time 日志 line

shell脚本如下

#!/bin/bash

# 设置企业微信机器人webhook地址和机器人名称
WEBHOOK_URL="你的WEBHOOK_URL"
BOT_NAME="MySQL Slow Log Bot"

# 设置慢日志文件路径和记录已发送行数的文件路径
LOG_FILE="/data/mysql/mysql-slow-log.log"
SENT_LINE_FILE="/tmp/mysql-slow-log.sent"
#LOG_FILE="/data/mysql/b.log"
#SENT_LINE_FILE="/tmp/test.sent"

# 获取上次已发送的行数
if [ -f $SENT_LINE_FILE ]; then
    LAST_SENT_LINE=`cat $SENT_LINE_FILE`
else
    LAST_SENT_LINE=0
    touch ${SENT_LINE_FILE}
fi

# 获取当前日志文件的总行数和新增行数
TOTAL_LINES=`wc -l $LOG_FILE | awk '{print $1}'`
let "NEW_LINES = ${TOTAL_LINES} - ${LAST_SENT_LINE}"


# 如果没有新增行,则不需要发送消息
if [ $NEW_LINES -eq 0 ]; then
    exit 0
fi

# Filter slow log content
for time_chuo_line in `cat -n ${LOG_FILE} | tail -${NEW_LINES} | grep '# Time' | awk '{print $1}'`;do 

let "user_host_line=$time_chuo_line + 1"
let "select_response_time_line=$time_chuo_line + 2"
let "select_start_time_line=$time_chuo_line + 3"
let "execule_sql_line=$time_chuo_line + 4"

time_chuo=`sed -n ${time_chuo_line}p ${LOG_FILE}`
user_host=`sed -n ${user_host_line}p ${LOG_FILE}`
elect_response_time=`sed -n ${select_response_time_line}p ${LOG_FILE}`
select_start_time=`sed -n ${select_start_time_line}p ${LOG_FILE}`
execule_sql=`sed -n ${execule_sql_line}p ${LOG_FILE}`

i=1
   while true
   do
     if [[ "${execule_sql: -1}" == ";" ]]; then
        break
     else
        #echo "###############"
        let "execule_sql_line=$execule_sql_line + ${i}"
        execule_sql_new=`sed -n ${execule_sql_line}p ${LOG_FILE}`
        execule_sql="${execule_sql}\n${execule_sql_new}"
     fi
       #sleep 2
     #echo -e $execule_sql
   done

curl "${WEBHOOK_URL}" \
-H 'Content-Type: application/json' \
-d "
{
  \"msgtype\": \"text\",
  \"text\": {
    \"content\": \"测试服务器慢查询日志统计:
- 日志的时间戳: ${time_chuo}
- 用户与主机: ${user_host}
- 查询响应时间: ${elect_response_time}
- 查询开始的时间::${select_start_time}
- 执行的SQL语句::${execule_sql}\"
  }
}"

done

echo ${TOTAL_LINES} > ${SENT_LINE_FILE}

报警内容如下

监控自建MySQL慢查询日志并上报到企业微信集群_慢查询

这是MySQL的查询日志输出,它包含了一个SELECT语句的信息。每个字段表示以下内容:

  • Time: 查询的时间戳。
  • User@Host: 用户名和主机地址。
  • Id: 连接线程Id。
  • Query_time: 查询执行时间,以秒为单位。在这个例子中,查询执行时间是 1.352601 秒。
  • Lock_time: 在查询期间锁定资源的时间,以秒为单位。在这个例子中,锁定时间是 0.000143 秒。
  • Rows_sent: 返回结果集的行数。在这个例子中,返回结果集的行数是 2533 行。
  • Rows_examined: 扫描表时检查的行数。在这个例子中,检查的行数是 2663 行。
  • SET timestamp=1682432102;:SQL语句中的一个特殊注释,用于指示查询开始的时间戳。
  • 最后是sql语句

标签:LOG,sql,微信,execule,MySQL,FILE,time,日志,line
From: https://blog.51cto.com/yht1990/6225507

相关文章

  • mysql基础 -- 单表练习
    droptableifexistsemp;createtableemp(empnoint,enamevarchar(50),jobvarchar(50),mgrint,hiredatedate,saldecimal(7,2),commdecimal(7,2),deptnoint)engine=innodbdefaultcharset=utf8;INSERTINTOempVALUES(7369,'SMITH','CL......
  • 微信小程序开发
    微信小程序开发者文档:https://developers.weixin.qq.com/miniprogram/dev/component/微信小程序教学视频:https://www.bilibili.com/video/BV1nE41117BQ?p=5&vd_source=77a6f5c488d692a1675c7305a3e29604 1.微信开发者工具介绍: 模拟器底部:可查看页面跳转传递参数添加编译......
  • Android 开发中打印日志
    在Android开发过程中,我们常常需要打印堆栈来定位问题或者调试问题,这里记录一下相关的方法。1.MTK平台1.1preloader 1.2LK 2.高通平台2.1sbl 2.2xbl 2.3abl  3.kernel  4.native层4.1打印堆栈 Android.bpcc_binary{name:"print_s......
  • 【IT老齐014】阿里Canal实现MySQL异构数据同步
    【IT老齐014】阿里Canal实现MySQL异构数据同步场景商户在后台系统添加数据,消费者需要在前台获取数据。这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据。原始做法:团队A在java代码中新增mysql数据时,调用团队B的接口新增es商品数据。缺点:协......
  • WordCountTopology 执行日志分析
    1,代码packagestorm.starter;importbacktype.storm.Config;importbacktype.storm.LocalCluster;importbacktype.storm.StormSubmitter;importbacktype.storm.task.ShellBolt;importbacktype.storm.topology.BasicOutputCollector;importbacktype.storm.topology.I......
  • 微信客户端登陆
    界面:<Windowx:Class="WpfApp1.weixin"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • 2.mysql binlog的三种格式及区别
    好文:https://www.cnblogs.com/syw20170419/p/16443105.html 1、三种格式:row、statement、mixed2、区别:row格式文件比较大,statement比较小,row格式保存的是一行一行的数据,statement保存的是sql语句,mixed格式介于二者之间,statement容易丢数据,row格式则不会3、statement容易丢......
  • 微信小程序 swiper scroll 应用
    swiper演示视图wxml<!--中部上游信息--><swiperclass="swiper"autoplaycircularprevious-margin="20rpx"next-margin="60rpx"><swiper-itemwx:for="{{upstreamList}}"wx:key="id"><......
  • MySQL 备忘清单_开发速查表分享
    MySQL备忘清单MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、......
  • windows mysql binlog 日志内容查看
    打开mysqlbinlog.exe所在目录的命令行,执行mysqlbinlog.exe--base64-output=decode-rows-v"D:\mysql-8.0.27-winx64\data\binlog.000111">mysqlbin.logD:\mysql-8.0.27-winx64\data\binlog.000111 本机binlog文件路径名mysqlbin.log 导出到当前下的文件名 ......