专栏首页二狗的DBA之路使用Prometheus监控DBLE

使用Prometheus监控DBLE

DBLE是一款基于MyCAT改进的MySQL分库分表中间件,但是并没有一个配套的监控软件。

这里我分享下我们生产/测试环境在使用的监控方法

需要用到的软件:

Prometheus、 pushgateway、grafana、【alertmanager可选】  (应该很多公司已经在用这套组件)

下面是我采集dble数据的脚本,主要是通过9066管理端口去抓取数据,然后打点到pushgateway:

#!/bin/bash
# 说明: 通过dble管理地址,将dble的基础数据采集到的,然后发送到 pushgateway 去存储。然后可以配合grafana来做展示
# 如果系统上没有nc命令,可以执行 yum install nmap-ncat 来安装

# PUSHGATEWAY_HOST的地址
PUSHGATEWAY_HOST=' 

# DBLE管理端口的连接方式
DBLE_USER='man1'
DBLE_PASS='123456'
DBLE_HOST='127.0.0.1'
DBLE_PORT='9066'

# 标识DBLE集群中的编号(相同DBLE_CLUSTER_NAME里面的DBLE_ID要唯一。用来标识不同DBLE集群内的dble节点,便于在 pushgateway 和 grafana 里面识别出这个metrics对应的dble实例)
DBLE_CLUSTER_NAME='usercenter'
DBLE_ID=3

############## 下面是具体的采集命令  #################
# 当前dble是否已down (1为宕机 0为正常): 
mysql -u${DBLE_USER} -p${DBLE_PASS} -h ${DBLE_HOST} --port ${DBLE_PORT} 2>/dev/null -BNe "show @@version " dble_down=$?

# 当前dble前端的连接数: 
front_conn=$(mysql -u${DBLE_USER} -p${DBLE_PASS} -h ${DBLE_HOST} --port ${DBLE_PORT} 2>/dev/null -BNe "show @@connection " |grep 8066 | wc -l)

# dble和后端的总连接数:
backend_conn=$(mysql -u${DBLE_USER} -p${DBLE_PASS} -h ${DBLE_HOST} --port ${DBLE_PORT} 2>/dev/null -BNe "show @@backend " | wc -l)

# server status状态值
server_status=`mysql -u${DBLE_USER} -p${DBLE_PASS} -h ${DBLE_HOST} --port ${DBLE_PORT} 2>/dev/null -BNe "show @@server "`
# 已使用堆内存
used_mem=`echo $server_status| awk '{print $4}'`
# 总共的堆内存
total_mem=`echo $server_status| awk '{print $5}'`
# 最大可用堆内存
max_mem=`echo $server_status| awk '{print $6}'`

## 输出到 pushgateway
cat <<EOF | curl --data-binary @- ${PUSHGATEWAY_HOST}
# TYPE dble_down gauge
dble_down{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${dble_down}
# TYPE front_conn gauge
dble_front_conn{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${front_conn}
# TYPE backend_conn gauge
dble_backend_conn{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${backend_conn}
# TYPE used_mem gauge
dble_used_mem{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${used_mem}
# TYPE total_mem gauge
dble_total_mem{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${total_mem}
# TYPE max_mem gauge
dble_max_mem{cluster="${DBLE_CLUSTER_NAME}", instance="dble${DBLE_ID}"} ${max_mem}
EOF

然后,将上面这个脚本加到DBLE所在服务器的cronjob里面,每分钟采样一次

/1  * * * sh /root/scripts/stats.sh >/dev/null 2>&1

下图,是我在测试环境截的图

抓取到数据后,我们就可以在Prometheus的web界面里面写表达式计算metrics了

下图是我直接在grafana里面画的图

涉及到的表达式如下:

dble_down{cluster='usercenter',instance='dble3'}
dble_front_conn{cluster='usercenter',instance='dble3'}
dble_backend_conn{cluster='usercenter',instance='dble3'}
dble_max_mem{cluster='usercenter',instance='dble3'}
dble_used_mem{cluster='usercenter',instance='dble3'}
dble_total_mem{cluster='usercenter',instance='dble3'}

另外, 我们有多个dble实例的话,建议grafana面板上通过动态获取的方法,这样就不用画多个dashboard了。具体操作方法,可以参考我之前写的https://blog.51cto.com/lee90/2071711

除此之外, DBLE所在主机的CPU 内存 磁盘之类的基础监控,我们可以使用node_exporter来采集,也是必须采集的指标。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Prometheus监控DBLE

    DBLE是一款基于MyCAT改进的MySQL分库分表中间件,但是并没有一个配套的监控软件。

    二狗不要跑
  • 使用virtualenv构建多版本python开发环境

    virtualenv newenv    #如果只要纯净的环境,不需要安装依赖包,可以在参数后加--no-site-packages

    二狗不要跑
  • PG从库查询被终止的解决办法

    PG流复制场景下,默认配置下, 如果在PG从库执行长时间的查询,会出现查询的报错。提示

    二狗不要跑
  • 使用Prometheus监控DBLE

    DBLE是一款基于MyCAT改进的MySQL分库分表中间件,但是并没有一个配套的监控软件。

    二狗不要跑
  • 谷歌信息安全业务 Chronicle 发布首款商用产品

    从Google X中分拆出的信息安全业务、Alphabet旗下Chronicle本周发布了首款商用产品:一个名为Backstory的信息安全数据平台。利用谷歌庞...

    周俊辉
  • 手把手教你安装Navicat——靠谱的Navicat安装教程

    Navicat是一款轻量级的用于MySQL连接和管理的工具,非常好用,使用起来方便,简洁。下面讲讲其安装的过程。

    Python进阶者
  • HDU HDOJ 3400 Line belt 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3400

    owent
  • 使用Python多渠道打包apk

    易墨
  • Where和Having

    在SQL中,有一类函数能够作用于多条记录,如sum,count,max,avg等。被称为聚合函数,例如:

    悠扬前奏
  • R语言︱分布函数与概率密度+随机数产生

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! htt...

    素质

扫码关注云+社区

领取腾讯云代金券