Álvaro Hernández:如何在 StackGres 上运行 Metis

Álvaro Hernández:如何在 StackGres 上运行 Metis

💡 原文约2000字/词,阅读约需8分钟。
📝

内容提要

本文介绍了在StackGres上运行Metis的步骤,包括安装Kubernetes、安装StackGres、配置StackGres集群和配置Metis。StackGres是一个全栈的Postgres平台,Metis是一个强大的数据库可观测性工具。

🔎

延伸解读

Metis 监控能力解析

Metis 作为数据库可观测性工具,能跟踪实时数据库活动,并提供模式、索引、查询、配置等方面的改进建议。它通过代理集成,可提取基础设施指标(如 CPU、内存使用)、数据库指标(如事务、缓存、临时文件)、实时查询及执行计划、配置、模式详情和索引使用情况。Metis 还能检测性能异常、环境漂移,并通知性能退化。

StackGres 集群配置要点

为满足 Metis 要求,StackGres 集群需创建专用用户和数据库,并授予必要权限。具体包括:创建 metis 用户并设置密码,授予 pg_monitor 角色,创建 metis 数据库并授权连接,以及在 metis 数据库中创建 pg_stat_statements 扩展。这些步骤通过 SGScript 自动化完成,确保 Metis 能正常监控。

部署 Metis 的关键步骤

部署 Metis 时,需在 Metis 界面选择 Postgres,配置连接字符串。连接字符串格式为 postgresql://metis:admin123@cluster.stackgres.svc.cluster.local:5432/metis?sslmode=disable,其中服务名可通过 kubectl get svc -n stackgres 获取。然后使用 Helm 安装 Metis 图表,指定命名空间和 API 密钥,并设置连接字符串。部署后可通过 kubectl get pods 验证。

监控实时数据库活动

部署完成后,可在 Metis 中监控实时数据库活动。通过执行 SQL 命令创建表、插入数据并运行查询,Metis 的 Table Sizes 和 Top Queries 等组件会显示相关活动。Metis 能捕获数据库实时活动,并基于此提供改进建议,帮助优化性能。

❓

Q&A

StackGres 是什么?它有什么主要特点?

StackGres 是一个全栈的 Postgres 平台,完全开源,可以在任何云或本地运行 Postgres 即服务。它是一个 Kubernetes Operator,允许在几秒钟内创建生产就绪的 Postgres 集群,无需高级 Postgres 专业知识。它提供内置 Web 控制台或高级 Kubernetes CRD 用于 CLI 和 GitOps,支持高可用性(通过 Patroni)、复制、连接池、自动备份、监控和集中日志。它还支持超过 150 个 Postgres 扩展,以及 Babelfish、Citus、Timescale、Supabase 和 FerretDB 等集成。

Metis 是什么?它有哪些功能?

Metis 是一个强大的数据库可观测性工具,可以跟踪数据库和数据库服务器的所有方面。它通过一个代理与数据库服务器集成,监控正在进行的活动。Metis 以 Docker 容器形式分发,可以安装在任何支持 OCI 容器的环境中,包括 AWS ECS、Kubernetes、AKS 或 GKE。它连接数据库并提取数据库活动细节,包括基础设施指标(CPU、内存使用、打开的文件)、数据库指标(事务、缓存、临时文件)、实时查询及其执行计划、配置、模式细节、索引使用等。Metis 可以寻找异常、检测环境之间的漂移、建议可操作的性能改进,并在性能下降时通知用户。

在 StackGres 上运行 Metis 需要哪些前提条件?

需要安装 Kubernetes 集群,以及常用的命令行工具 kubectl 和 Helm。如果没有 Kubernetes 集群,可以使用 minikube 快速搭建。此外,需要安装 StackGres 并配置一个满足 Metis 要求的 StackGres 集群,包括创建特定用户、数据库和安装 pg_stat_statements 扩展。

如何安装 StackGres?

推荐使用官方 Helm 图表安装 StackGres。首先安装 Helm,然后添加 StackGres Helm 仓库:helm repo add stackgres-charts https://stackgres.io/downloads/stackgres-k8s/stackgres/helm/,接着安装 StackGres Operator:helm install --create-namespace --namespace stackgres stackgres-operator stackgres-charts/stackgres-operator。之后可以使用 kubectl 命令确认 Operator 正在运行。

如何配置 StackGres 集群以满足 Metis 的要求?

需要创建一个 SGCluster,并配置用户权限和数据库。具体步骤包括:创建一个 Kubernetes Secret 存储用户密码;创建一个 SGScript,其中包含创建用户 metis、授予 pg_monitor 权限、创建数据库 metis、授予连接权限以及在 metis 数据库中创建 pg_stat_statements 扩展的 SQL 脚本;然后创建 SGCluster,指定 Postgres 版本、实例数、持久卷大小,并引用该 SGScript。

如何部署 Metis 并连接到 StackGres 集群?

在 Metis 界面中点击 Deploy,选择 Postgres,按照指引配置用户和权限(已提前完成),然后提供连接字符串。连接字符串格式为:postgresql://metis:admin123@cluster.stackgres.svc.cluster.local:5432/metis?sslmode=disable。之后使用 Helm 部署 Metis:添加 Metis Helm 仓库,然后运行 helm install 命令,指定命名空间、API 密钥和连接字符串。部署完成后,可以通过 kubectl 验证 Pod 运行状态,并在 Metis 监控界面查看新添加的主机。

如何验证 Metis 正在监控数据库活动?

可以在数据库中创建表、插入数据并运行查询,然后在 Metis 界面中查看 Table Sizes 和 Top Queries 等小部件,确认新的查询和表信息已被捕获。例如,创建 orders 表、插入数据并执行聚合查询后,Metis 会显示表大小和查询活动。

🏷️

标签

➡️

继续阅读