跟我学:基于Prometheus+Grafana的PolarDB-X监控体系

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 本文整理阿里云数据库技术专家吴迪,在PolarDB-X动手实践系列的分享。

跟我学:基于Prometheus+GrafanaPolarDB-X监控体系

摘要:本文整理阿里云数据库技术专家吴迪,在PolarDB-X动手实践系列的分享。

本篇内容主要分为四个部分:

1.    动手实践系列介绍

2.    环境准备

3.    原理介绍

4.    演示内容

 

一、动手实践系列介绍

image.png

PolarDB-X采用Shared-nothing与存储分离计算架构进行设计,系统由4个核心组件组成。PolarDB-X社区版围绕开源PolarDB-X,对应商业2.0版本。


PolarDB-X社区版主要面向应用开发者、架构师、DBA等。

image.png

PolarDB-X是一款基于云架构理念,同时支持在线事务处理与在线分析处理,融合型分布式数据库产品。专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈难题,助力企业加速完成业务数字化转型。

 

二、环境准备

image.png

在搭建环境之前,用户需要确定系统是CentOS 78macOSUbuntu18以上;Windows 10以上。相关配置需要大于等于8C32G。搭建环境需要的软件有:Docker&K8SPolarDB-X 2.1.0

image.png

PolarDB-X采用Shared-nothing与存储计算分离架构进行设计,系统由4个核心组件组成。主要包括:计算节点、存储节点、元数据服务以及日志节点。


计算节点是系统的入口,采用无状态设计,包括SQL解析器、优化器、执行器等模块。


存储节点负责数据的持久化,基于多数派Paxos协议提供数据高可靠、强一致保障,同时通过MVCC维护分布式事务可见性。


元数据服务负责维护全局强一致的Table/Schema,Statistics等系统Meta信息,维护账号、权限等安全信息,同时提供全局授时服务(即TSO)。


日志节点提供完全兼容MySQL Binlog格式和协议的增量订阅能力,提供兼容MySQL Replication协议的主从复制能力。

 

三、原理介绍

image.png

如何对PolarDB-X进行运维管理呢?K8S是不二选择。阿里在K8S集群构建了相应的扩展,提供了PolarDB-X OperatorOperatorPolarDB-XK8S集群,进行相应的创建以及生命周期的管理。


与此同时,Operator提供了弹性伸缩、高可用以及监控审计等运维能力。监控能力便是在K8S之上,基于开源的PrometheusKubernetes进行打造。与此同时,Operator的代码也在Github进行开源。

 

四、演示内容

image.png

首先,安装PolarDB-X MonitorPolarDB-X通过PrometheusGrafana来监控PolarDB-X集群。PolarDB-X Monitor集成了kube-promethus组件栈,通过安装PolarDB-X Monitor即可一键部署监控所需的资源和组件。大家可以在Github页面上找到详细的监控文档。

image.png

首先,准备运行中的K8s集群,安装PolarDB-X Operator 1.2.0及以上的版本。

然后,安装Helm包。创建一个名为polardbx-monitor的命名空间。安装PolarDB-X Monitor CRD。用户也可以通过PolarDB-XHelm Chart仓库进行安装。

image.png

PrometheusGrafana都采用默认配置,便于快速体验。如果部署在生产集群,用户可以参考定制PolarDB-X Monitor配置。


如果用户在minikube上,安装PolarDB-X Monitor。可能会因为资源不够导致组件无法创建,可以参考配置PrometheusGrafana规格调整组件的规格

PolarDB-X Monitor安装完成后,会在K8s集群的polardbx-monitor命名空间下,创建prometheusgrafana等组件,以此来监控K8s内的PolarDB-X,通过如下命令检查相关组件是否正常,确认所有的pod都处于Running状态。

image.png

完成上述操作后,开启PolarDB-X监控。PolarDB-X集群的监控采集功能,默认是关闭的。用户需要为监控的PolarDB-XCluster创建PolarDB-XMonitor对象,然后进行开启。


其中,spec.clusterName的意思是:需要开启监控的PolarDB-X集群名称;spec.monitorInterval的意思是:监控数据采集频率,一般默认30s

spec.scrapeTimeout的意思是:监控数据采集的超时时间,一般默认10s

image.png

接下来,开始访问Grafana Dashboard。用户在默认情况下,执行相关命令,将Grafana端口转发到本地。然后,在浏览器中输入:http://localhost:3000,即可访问PolarDB-X Dashboard。其中,默认的用户名和密码都是admin

image.png

gms,给出了gms节点的CPU、内存使用情况,网络指标。在cn节点,除了基本的节点资源利用率,还展示了历史资源利用率。所有信息通过表格,展示节点的资源利用率。监控图表展示历史监控曲线。

image.png

由于Grafana的配置存储在ConfigMap中,用户在Grafana中修改的密码或者新增的Dashboard不会被持久化,一旦Grafana Pod重建,这部分配置会丢失,所以请注意提前保存。


如果用户的K8s集群,支持LoadBalancer,用户可以为GrafanaService配置LoadBalancer进行访问。


如果用户的K8s集群内有多个PolarDB-X Cluster,可以通过Grafana页面上面的下拉框切换NamespacePolarDB-X Cluster


上图中的QPS指标分成逻辑QPS和物理QPS。逻辑QPS代表,cn节点收到的应用服务器发来的逻辑请求,它产生了所有的QPS。物理QPS将用户应用侧服务器,转换的逻辑SQL进行相应的分布式计算和路由。然后,转换成对应的物理SQL,下发到每个dn产生的QPS


如果一个业务系统的逻辑QPS和物理QPS基本接近。说明业务场景,偏向点查点写。基本只涉及单分片的查询或写入。这是比较好的表现。

image.png

上图是Prometheus的架构图。Prometheus Server主要负责数据采集和存储,提供PromQL查询语言的支持。


Prometheus Server包含了三个组件,Retrieval获取监控数据;TSDB是时间序列数据库,可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。HTTP Server为告警和出图提供查询接口。


其中,TSDB的大部分时间都是顺序写入操作,很少涉及修改数据;TSDB的删除操作都是删除一段时间的数据,而不涉及到删除无规律数据;TSDB的读操作一般都是升序或者降序

image.png

左图是所有采集的监控指标,主要有GMS,DN,DN,CDC,Node。每个指标都包含了exporter。除此之外,PolarDB-X监控架构采集CPU、内存等信息。


Prometheus Cluster通过K8S自带的Prometheus Operator进行管理,它能部署和管理k8sPrometheus的集群。PolarDB-X monitor通知Prometheus需要监控的对象,然后及时采集每个PolarDB-X集群的监控指标。

image.png

接下来,演示PolarDB-X监控,服务发现的部分。首先扩容CN,然后检查Prometheus target的状态,最后通过Grafana查看新增的CN监控。

image.png

访问Prometheus,在浏览器中输入:http://localhost:9090,即可访问到Prometheus页面。如果K8s集群支持LoadBalancer,可以为PrometheusService配置LoadBalancer进行访问。

image.png

接下来,简单介绍一下监控指标,然后手动计算QPS。对于Prometheus而言,它的监控指标的格式都是<metric name>{<label name>=<label value>,.….}

上图的监控指标,意思是CN pod收到的所有SQL请求,其总数是一个累计值。

polardbx_stats_request_count是请求总数;polardbx_name是实例名称;polardbx_rolepod角色,主要有cn,dn,cdc,gmsschema是逻辑库名;Podpod的名称。

image.png

接下来,在Prometheus页面查看监控指标。点击Prometheus,回到查询页面。每个指标都有对应的值,本质上要计算累计值的变化趋势,对应的是QPS情况。

image.png

查询pxc-demo实例sysbench库的请求总量,输入:

polardbx_stats_request_count_total{polardbx_name="pxc-demo",schema="sysbench"}

查询pxc-demo实例sysbench库的QPS,输入:

Irate(polardbx_stats_request_count_total{polardbx_name="pxc-demo",schema="sysbench"}[1m])

其中,rate是计算区间向量v在时间窗口内平均增长速率。Irate是通过区间向量中最后两个样本数据来计算区间向量的增长速率,更好的灵敏度。

image.png

查询pxc-demo实例的QPS,输入:

sum(irate(polardbx_stats_request_count_total{polardbx_name="pxc-demo"}[1m]))

查询pxc-demo实例每个CN节点的QPS,输入:

sum(irate(polardbx_stats_request_count_total{polardbx_name="pxc-demo"}[1m]))by(pod)

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
编解码 Prometheus 运维
Prometheus 的监控方法论
【1月更文挑战第24天】
|
4月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
3月前
|
Prometheus 监控 Kubernetes
如何用 Prometheus Operator 监控 K8s 集群外服务?
如何用 Prometheus Operator 监控 K8s 集群外服务?
|
4月前
|
Prometheus Cloud Native Java
微服务框架(二十三)Prometheus + Grafana 安装、配置及使用
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Prometheus + Grafana 安装、配置及使用 本系列文章中所使用的框架版本为Spring ...
|
3月前
|
Prometheus 监控 Kubernetes
Prometheus Operator 与 kube-prometheus 之二 - 如何监控 1.23+ kubeadm 集群
Prometheus Operator 与 kube-prometheus 之二 - 如何监控 1.23+ kubeadm 集群
|
13天前
|
Prometheus 监控 Cloud Native
使用Prometheus配置监控与报警
通过以上步骤,你可以使用Prometheus和Alertmanager实现监控和报警配置,以确保系统在出现性能问题或故障时能够及时通知相关人员。欢迎关注威哥爱编程,一起学习成长。
|
18天前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana+NodeExporter 打造一款出色的监控系统,帅呆了!
Prometheus+Grafana+NodeExporter 打造一款出色的监控系统,帅呆了!
58 2
|
2月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
26 2
|
3月前
|
存储 Prometheus Cloud Native
Grafana 系列 - 统一展示 -2-Prometheus 数据源
Grafana 系列 - 统一展示 -2-Prometheus 数据源
|
3月前
|
JSON Prometheus Cloud Native
Grafana 系列 - 统一展示 -3-Prometheus 仪表板
Grafana 系列 - 统一展示 -3-Prometheus 仪表板

相关产品

  • 云原生数据库 PolarDB