Sentinel一体化监控解决方案 CrateDB+Grafana

Sentinel一体化监控解决方案

Sentinel是什么?

Sentinel是阿里巴巴在今年7月下旬开源的限流组件,该组件能依照动态配置的规则对服务进行限流熔断和降级操作。sentinel-dashboard作为该组件的核心控制台目前具有实时监控、规则配置、应用服务器列表查看等功能。

使用过程中遇到的问题

  • dashboard实时监控仅能查看5分钟内的metric数据
  • 图表显示有那么一点点问题
  • 监控数据分散,无法和公司其他监控数据统一

解决问题的办法

以上提出的3个问题,处理的办法无非就是数据落地统一监控
思路:首先我们要将之前缓存在内存中的metric数据进行持久化, 然后在Grafana上绑定数据源,制作对应的监控图表。
使用到的工具

工具名称作用
CrateDBNO SQL数据库
Druid数据库连接池
Grafana监控数据UI展示

动手实践

接下来我会一步步介绍如何将metric数据进行持久化并在Grafana上进行展示

第一步:新建表

新建metric分区表,为什么建分区表而不是普通表?因为监控数据体量很大,而且很多天以前的数据没用了就要删掉,如果不建分区表,删除数据的时候想死的心都有。

CREATE TABLE IF NOT EXISTS "doc"."metric" ( 
"app" STRING, 
"blocked_qps" LONG, 
"count" LONG, 
"day" TIMESTAMP GENERATED ALWAYS AS date_trunc('day', '+08:00', "timestamp"), 
"exception" LONG, 
"gmt_create" TIMESTAMP, 
"gmt_modified" TIMESTAMP, 
"id" LONG, 
"passed_qps" LONG, 
"resource" STRING, 
"resource_code" LONG, 
"rt" DOUBLE, 
"success_qps" LONG, 
"timestamp" TIMESTAMP 
) 
CLUSTERED INTO 6 SHARDS 
PARTITIONED BY ("day")

表建好以后在CrateDB Admin上看到的大概就是这样的
这里写图片描述

第二步:持久化数据

在我自己的GitHub分支上,已经完成了数据持久化的代码。当时这个代码是基于mysql实现的,修改成CrateDB实现也是非常简单的,只需要做好如下几点:
1. 将mysql的JDBC驱动包换成CrateDB的JDBC驱动包,具体操作包下载地址请见CrateDB官网
2. 将mysql的驱动类改为CrateDB的驱动类
3. 将mysql的url地址改为你CrateDB的地址
4. 去掉MetricRepository.xml文件中的useGeneratedKeys="true" keyProperty="id"因为CrateDB不支持自增主键

第三步:在Grafana上制图

这里不会详细讲Grafana如何制作图表,新手请见官网快速入门

注意:配置CrateDB数据源需要事先安装好Crate插件。

Grafana有模板的概念,只要配置了模板,然后动态传入参数即可快速生成多个使用相同模板的不同指标数据的图表。

首先添加模板
这里写图片描述
这里写图片描述
然后配置SQL执行查询,即时可看到效果
这里写图片描述
这里写图片描述
配置好以后使用模板功能查看多个接口的流控指标监控
这里写图片描述

遗留问题

  • sentinel-dashboard目前每隔一秒从所有的客户端同步一次数据, 集群庞大的情况下效率很低且不稳定
  • sentinel-dashboard收集到数据以后直接插入数据库没有缓冲,存在安全隐患

改进点

  • sentinel客户端间隔固定时间自动推送metric数据到sentinel-server(分布式部署)
  • sentinel-server将数据缓冲到kafka等消息中间件中
  • sentinel-server将数据从kafka中取出然后进行持久化
  • dashboard移除metric相关feature只做规则配置和分发相关工作
  • 或者直接将dashboard规则配置分发功能移植到公司内部配置管理系统中,形成统一管理

最后

本文仅展示了基于JDBC协议的存储方案,其实还有很多存储方案可以选择,例如Elasticsearch, influxDB,Prometheus等。实现的思路都是将数据落地,然后结合grafana进行展示,只是具体的实现细节有些许差异而已。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值