使用grafana快速搭建DRDS秒级监控

Grafana(https://github.com/grafana/grafana)是一个开源并支持多种metrics存储源的监控工具,DRDS(https://www.aliyun.com/product/drds)是阿里云商用的分布式数据库中间件,虽然有蛮多限制,但是底下基于MySQL,并且分库分表是比较成熟的方案,比较适合前台落数据业务使用,DRDS 的`show full stats`指令提供了秒级监控,所以马上想到用grafana来快速搭建一个针对DRDS的秒级监控。

废话不多说,开始步骤,注意:本文不考虑安全因素,如果生产使用,请设置好账号密码,以及权限,云上请注意设置ip白名单或者进VPC。

1. 官网下载页https://grafana.com/grafana/download?platform=mac ,因为我用mac,并且DRDS可以免费申请公网域名,所以可以直接本机搭建,当然你有ecs,下载对应操作系统版本也ok

2. 使用homebrew安装grafana完毕后,`brew services start grafana`启动服务,可以确认下进程是否存在,如果不做任何配置,默认浏览地址是:127.0.0.1:3000

3. 先可以使用mysql作为监控数据存储源,使用homebrew安装MySQL,安装完毕后`mysql.server start`, 使用root登陆创建账号密码和权限(5.7需要先`xxx/mysqld_safe --skip-grant-tables & `启动,然后无密码登陆后,修改mysql.user里面root密码,再登陆创建业务账号和密码)

4. mysql使用刚创建账号创建database, 再创建表,按照grafana官方文档,Time类型监控,如果是MySQL数据源必须要有3个字段,分别是datetime类型,double类型,varchar类型,分别表示时间,值,监控类型。比如我创建的表:

 
CREATE TABLE `show_full_stats` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `my_time_sec` datetime DEFAULT NULL,
  `my_value` double DEFAULT NULL,
  `my_metric` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


5. 写一个python脚本,主要目的访问DRDS,通过`show full stats`(https://help.aliyun.com/document_detail/52139.html)拿到指标,并且按照指标名称,值(注意需要数值),当前时间为一条记录写入刚创建的监控数据存储中,可以无限循环,每隔一秒执行一次。这样数据就有了。

6. 登陆本地启动的grafana,点击Data Sources标签,添加一个MySQL数据源,比如叫localdb,连接串(需要带port)、数据库名、用户名密码都填上。save&test

7. 点击Dashboards, 创建一个Dashboard, 默认会带有一个pannel,图形是Graph,默认显示图形的数据都是假的, 单击选择编辑,选择Metrics标签页,Data Source选择localdb, 然后填写Query,按照官方文档,类似以下sql,其中字段名必须取到grafana认识的别名,$__timeFilter 变量可以通过当前页右上方进行过滤选择,where条件可以添加对监控项的选择。Query配置好之后,可以Query Inspector下看看SQL是否合法。

SELECT
  UNIX_TIMESTAMP(my_time_sec) as time_sec,
  my_value as value,
  my_metric as metric
FROM show_full_stats
WHERE $__timeFilter(my_time_sec)
ORDER BY my_time_sec ASC


8. 可能这个时候你还看不到图线出现,怎么回事呢?一般是因为时间范围选择不对,点击当前页面右上角,选择 Last xx minutes 一般就可以了。

9. 配置一秒刷新怎么办呢?也是点击当前页面右上角 Time Range 选项,选择相应时间间隔,默认是5秒一刷,如果感觉精度不够。可以在页面上方类似 配置的图标>settings>Time picker 添加,比如在5s之前加一个1s, 然后回到Time Range选项选择1秒时间间隔,apply 即可隔一秒刷新。

10.这样一个基础的监控就添加完毕,最后放一个基本效果图



后续:dashboard页面的pannel配置是可以添加多个,并且自由布局,并且类型不止graph, 所以可以组成比较丰富的监控页。而告警是和监控搭配使用,grafana有比较丰富的告警对接,电话,sms, email等通用方式,甚至还有钉钉,后续尝试下。

猜你喜欢

转载自bucketli.iteye.com/blog/2397401