专栏首页腾讯云监控专栏云监控最佳实践:自定义监控云数据库MySQL指标
原创

云监控最佳实践:自定义监控云数据库MySQL指标

如何监控云数据库MySQL连接数等运行状态指标

推荐您使用 云监控-自定义监控 !

目前内测阶段免费使用,无需审核,开通服务即用。诚邀您点击 申请页面 参与内测体验!


本文介绍如何使用 Shell 命令+SDK 方式上报云数据库 MySQL 的指标至自定义监控,查看指标并配置告警。

实践背景

定期监控云数据库 MySQL 的关键指标。当这些监控指标触发您设置的告警条件时,发送短信告警。

前提条件

数据上报

步骤1:准备上报环境

安装 Python 语言 SDK:

步骤2:数据采集授权

在数据库中执行以下代码,进行云数据库中的数据采集授权:

grant select on *.* to monitor@'x.x.x.x' identified by 'monitor!@#asd';

'x.x.x.x':表示服务器 IP 地址;

*.*:表示的意思是任意数据库下的任意数据表。

步骤3:上报数据

1. 在/usr/local/bin目录下新建如下两个文件:

  • 新建 ToMonitor.py,代码如下:
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.monitor.v20180724 import monitor_client, models
import sys,json
try:
SecretId = sys.argv[1]
SecretKey = sys.argv[2]
region = sys.argv[3]
metricList = json.loads(sys.argv[4])
cred = credential.Credential(SecretId, SecretKey)
httpProfile = HttpProfile()
httpProfile.endpoint = "monitor.tencentcloudapi.com"

clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = monitor_client.MonitorClient(cred, region , clientProfile)

req = models.PutMonitorDataRequest()
paramList = []
for single in metricList:
for MetricName,metricValue in single.items():
newParams = {}
newParams["MetricName"] = MetricName
newParams["Value"] = int(metricValue)
paramList.append(newParams)
params = '{"Metrics":%s}' %json.dumps(paramList)
req.from_json_string(params)

resp = client.PutMonitorData(req)
print(resp.to_json_string())

except TencentCloudSDKException as err:
print(err)

  • 新建 MySQLStatusToMonitor.sh 文件,代码如下:
#!/bin/bash

#需要采集数据的 MySQL 地址
MYSQLHOST="1.1.1.1"
#需要采集数据的 MySQL 端口
MYSQLPORT=3306
#需要采集数据的访问用户名
MYSQLUSER="monitor"
#需要采集数据的 MySQL 访问密码
MYSQLPWD="monitor!@#asdxxxx"
#用户专属的 SecretId
SecretId="xxxxxxxxx"
#用户专属的 SecretKey
SecretKey="xxxxxxxx"
#需要上报到监控系统所属区域
region="ap-guangzhou"

function Log()
{
msg=$1
logType=$2
logFile="./MySQLStatusToMonitor.log"
echo "["`date +"%Y-%m-%d %X"`"]$msg" >> $logFile
}
MYSQLCON="/usr/bin/mysql -h$MYSQLHOST -P$MYSQLPORT -u$MYSQLUSER -p$MYSQLPWD"

#采集
NEEDEDMYSQLSTATUS=`$MYSQLCON -e "show status;"|grep -Ew "Aborted_connects|Innodb_row_lock_current_waits|Uptime"`

#记录相关参数
AbConnections=`echo "$NEEDEDMYSQLSTATUS"|awk '/Aborted_connects/{print $2}'`
InnodbRLCW=`echo "$NEEDEDMYSQLSTATUS"|awk '/Innodb_row_lock_current_waits/{print $2}'`
MYSQLUptime=`echo "$NEEDEDMYSQLSTATUS"|awk '/Uptime/{print $2}'`
Log "uploading Aborted_connects:$AbConnections,Innodb_row_lock_current_waits:$InnodbRLCW,MySQL_uptime:$MYSQLUptime."

#上报到自定义监控
/bin/python ToMonitor.py "$SecretId" "$SecretKey" "$region" '[{"AbConnections":'$AbConnections'},{"InnodbRLCW":'$InnodbRLCW'}, {"MYSQLUptime":'$MYSQLUptime'}]'

代码中:MYSQLHOST、MYSQLPORT、MYSQLUSER、MYSQLPWD、SecretId、SecretKey、Region 字段需根据您的实际情况修改

Region:地域,可查询可用 地域列表

SecretId 和 SecretKey,请前往 API 密钥管理 获取。

ToMonitor.py 和 MySQLStatusToMonitor.sh 两个 Demo 也可放到其它目录下。本文以放/usr/local/bin为例。

2. 输入 Shell 命令,即可完成监控指标数据持续上报。

chmod a+x /usr/local/bin/MySQLStatusToMonitor.sh ToMonitor.py
bash MySQLStatusToMonitor.sh
crontab -l > /tmp/cron.bak
echo "* * * * * /usr/local/bin/MySQLStatusToMonitor.sh &" >> /tmp/cron.bak
crontab /tmp/cron.bak

数据查询

数据上报完成后,可以在 指标视图 看到刚才上报的数据。

1. 配置告警和接收告警仅做一个场景举例; 2. 配置云数据库 MySQL 上报过的其它指标配置,请执行下述配置告警中的步骤2-3。

配置告警

场景:定期监控云数据库 MySQL 异常连接数,当异常连接次数大于0时发送短信告警。

1. 确认用户消息通道已验证,可在 CAM 鉴权 页面查看验证情况。

2. 进入自定义监控 指标视图 页面,在指标视图右上角【配置告警】。

3. 根据背景需求配置告警规则,更详细的配置操作可参见 配置告警策略。 如图示例为:云数据库 MySQL 异常连接数大于0时发送短信告警,持续一个统计周期(1分钟),每5分钟告警一次。

接收告警

如果云数据库 MySQL 异常连接数大于0,5分钟后将会收到短信告警,短信内容如下:

【腾讯云】云监控自定义监控指标告警触发
账号 ID:34xxxxxxxx,昵称:自定义监控
告警详情
告警内容:指标视图 | 云数据库 MySQL 异常连接数大于0
告警对象:Aborted_connects
当前数据:1
APPID:125xxxxxxx
告警策略:视图告警
触发事件:2019-12-09 22:36:00(UTC+08:00)

指标说明

指标中文名

指标英文名

单位

异常连接数

Aborted_connects

行锁等待时间

Innodb_row_lock_current_waits

MySQL 运行时间

MySQL_uptime


扫描二维码,关注腾讯云监控公众号

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • “停课不停学”— 腾讯云监控给你划知识重点

    早前针对疫情的影响情况,各地教育局纷纷发布了延迟开学的通知。为了让广大学子们在家也能线上学习,腾讯课堂助力“停课不停学”,推出了“老师极速版”,全方位帮助学校、...

    腾讯云监控团队
  • 云监控最佳实践:自定义监控网络层指标

    目前内测阶段免费使用,无需审核,开通服务即用。诚邀您点击 申请页面 参与内测体验!

    腾讯云监控团队
  • 腾讯会议幕后的 Metric 监控

    前几天在CCTV播出的《新闻联播》——“众志成城保供应 企业在行动”,对腾讯在疫情期间向全国用户免费开放300人不限时的会议功能进行了报道:

    腾讯云监控团队
  • 【MySQL 5.7.17】从主从复制到Group Replication

    时值双十二之际,MySQL官方献上了大礼,Group Replication(后文简称GR)终于正式宣布GA,组合在MySQL 5.7.17版本内部发布出来。 ...

    数据和云
  • 神仙级MySQL调优及架构笔记,今年见过最全的MySQL笔记,没有之一

    MySQL 作为一款轻量级数据库被越来越多的企业使用,特别是 MySQL 的 innoDB 的存储引擎和 8.0 版本发布以来更是有了较大的提升。现在免费分享给...

    用户5546570
  • mysql 模拟四

    1.如果一个MySQL的版本号没有后缀,表示该版本已经在很多地方运行一段时间了,而且没有非平台特定的错误报告。我们通常称之为___稳定__版。 

    week
  • 小白学MySQL要多久?我整理了10多个问题的答案

    首先啰嗦下学习MySQL的一些背景:MySQL作为目前最为活跃热门的开源数据库之一,以低成本和简易操作的组合方案在互联网企业中被广泛采用而大放异彩。在炙手可热的...

    jeanron100
  • 纲举目张:打通MySQL架构和业务的任督二脉

    目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式。从数据库的业务需求、架构设计、运营维护、再到扩容迁移,不同的MySQL架构...

    技术zhai
  • 几种常用的 MySQL 图形化管理工具

    来源 | blog.csdn.net/veloi/article/details/81386904

    用户2769421
  • All In One|沃趣QFusion v2.0.0 MySQL私有云平台重磅发布

    沃趣科技QFusion v2.0.0 MySQL私有云平台重磅发布,产品不仅具备之前QFusion v1.0.0版本的企业级特性,在此基础之上重构整个IaaS和...

    沃趣科技

扫码关注云+社区

领取腾讯云代金券