DnStream - 可视化运维实践
1 背景
1.1 业务痛点
GaussDB数据库数据节点(以下简称dn)之间会因不同的查询计划、sql、线程等等出现频繁的数据交互,在dn上就会承载大量以自身为基准、对端节点为目的d数据流(以下简称stream),当业务量比较集中时或者业务负载较大时,某组dn或多组dn上的数据流就可能会阻塞。用户或运维人员在定位处理该问题时,需要从上亿条数据中获取需要的信息,时效性以及便利性体验不佳。
1.2 解决方案
在运维平台新增功能将dn之间的stream相关进行记录入库并展示top流量,方便运维人员实时查看规避解决问题、合理实施资源调配。
2 DnStream数据流监控
2.1 方案设计
从整体DMS服务上来看,属于指标新增,需要从用户数据库中去拿到节点名称、对端节点名称、查询id以及查询计划等数据,dms-agent采集数据上报dms-collection入库dms数据库,dms-monitoring从dms数据库中查询数据进行聚合,最终在service-cm监控页面进行数据展示,达到溯源的目的,数据流情况如下图所示
图1 数据流向图
2.2 方案细则
整体方案属于指标新增,增加stream监控以及溯源
dms-agent:
采集用户数据库指标数据进行聚合上报dms-collection,部分指标数据如下所示:
图2 指标数据
dms-collection:
接收dms-agent上报的数据写入dms数据库。
dms-monitoring:
根据前台参数查询dms数据库,接收service-cm请求返回相应数据。
console:
屏蔽掉dms监控设置和存储设置项。
service-cm:
调用dms-monitoring接口进行数据获取并展示。
2.3 数据库设计以及数据处理
数据库设计
DROP TABLE IF EXISTS dms_mtc_dn_stream CASCADE;
CREATE TABLE dms_mtc_dn_stream
(
ctime bigint not null, -- 采集时间
virtual_cluster_id int not null, -- 集群虚拟id
host_id int4 not null, -- 主机id
node_name varchar(128), -- 节点名称
remote_name varchar(128), -- 连接对端节点名称
query_id bigint,-- 通信流对应debug_query_id编号
stream int4, -- 数据流个数
primary key(ctime, virtual_cluster_id, host_id, node_name, remote_name, query_id)
);
GRANT SELECT,INSERT,UPDATE,DELETE ON dms_mtc_dn_stream TO omm;
数据处理
INSERT INTO dms_mtc_dn_stream (ctime, virtual_cluster_id, host_id, node_name, remote_name, query_id, stream) VALUES (#{stream.ctime}, #{stream.virtualClusterId}, #{stream.hostId}, #{stream.nodeName}, #{stream.remoteName}, #{stream.queryId}, #{stream.stream});
数据聚合查询
SELECT ctime, node_name, remote_name, query_id, stream FROM dms_mtc_dn_stream where virtual_cluster_id = (select virtual_cluster_id from dms_meta_cluster where cluster_id = #{clusterId}) and ctime <= #{ctime} and ctime > #{ctime - 30000} order by stream desc;
SELECT ctime, node_name, remote_name, stream FROM dms_mtc_dn_stream where virtual_cluster_id = (select virtual_cluster_id from dms_meta_cluster where cluster_id = #{clusterId}) and query_id = 0 and ctime <= #{ctime} and ctime > #{ctime - 30000} order by stream desc;
3 页面数据展示
3.1 数据展示
页面主要展示时间、己端以及对端dn名称、数据流个数等信息,也可以显示以query_id分组的数据流的个数,如下图所示
图3 数据流监控页面展示
想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料~
- 点赞
- 收藏
- 关注作者
评论(0)