Pigsty v2.2 现已发布,迎来史诗级重大升级,基于 Grafana v10 彻底重制,将 PG 可观测性拔高到一个全新阶段,带来了全新的用户体验。Demo:http://demo.pigsty.cc。
此外 Pigsty v2.2 还提供了一个42节点的生产仿真环境沙箱模板,支持了 Citus 12,PG 16beta2,提供了使用KVM虚拟机的vagrant模板,为零散/墙外RPM包提供了专用的 Pigsty Yum 源,并支持了国产信创操作系统统信UOS20。
监控系统重制:视觉配色
Pigsty v2.2 中,对监控面板进行了彻底的重制,充分利用 Grafana v10 的新特性,为用户带来耳目一新的可视化体验。
最直观的变化是色彩。Pigsty v2.2 采用了全新的配色方案.以 PGSQL Overview 面板为例,新配色方案降低了饱和度,整体视觉体验比旧版本更加协调美观。
Pigsty v2.0 使用Grafana默认的高饱和配色
Pigsty v2.2:失效实例标黑,点击可直达故障现场
在 Pigsty v2.2 的监控面板中使用了 PG蓝,Nginx绿,Redis红,Python黄,Grafana橙等颜色作为基准,这套配色方案的灵感来自这篇文章:SCI,但《天气之子》~当SCI论文插图遇上新海诚天气之子配色 https://zhuanlan.zhihu.com/p/619556088 。
监控系统重制:集群导航
当然除了配色,v2.2 也在内容编排和布局上重新进行了设计。例如,使用 Stats 色块统计替代了大量表格式导航,让有问题的服务能够在首屏即可一目了然。点击异常色块即可直达故障现场。
当然,老式的导航表格可以提供更丰富的信息,也并没有移除,而是移动到了专门的 Instances / Members 分栏中去。让我们以最常用的 PGSQL Cluster 面板为例:
首屏是基于色块的图元导航,展现了集群组件存活状态与服务可用性,核心指标,负载水平与告警事件图。且提供了到集群内部资源 —— 实例,连接池,负载均衡器,服务,数据库的快速导航
PGSQL Cluster 的表格式导航
监控系统重制:实例
PGSQL Instance 展现了一个实例的详细状态,在 v2.2 中也进行了重制。最基本的设计原则就是:不是蓝/绿色的状态才需要关注。这样通过颜色视觉编码,用户可以在事故分析时快速定位一个数据库实例的故障根因。
具体的集群资源表,则是在第二栏中,以备查阅详情。配合后面的 指标栏与日志栏,完整的呈现了一个 PostgreSQL 数据库集群的核心状态。
其他的实例,主机节点,ETCD,MinIO,Redis,也都使用了类似的设计,例如 Node Instance 的首屏就是这样的。
Node Instance 的指标部分基本保持不变,但首屏概览部分进行了重制。MinIO Overview 亦然。
Etcd Overview 则使用 State Timeline 来可视化 DCS 服务的可用性状态。例如下图展现了一个模拟 etcd 故障的现场:在一个5节点的 ETCD 集群中依次关闭各个实例,集群可以容忍两个节点故障,但3个节点故障将导致 ETCD 服务整体不可用(黄色的条转为暗蓝色,代表 ETCD 服务整体不可用)。
当 DCS 出现故障时,依赖 ETCD 进行高可用的 PostgreSQL 集群默认会启用 FailSafeMode:在确认所有集群成员可达,不是自身而是DCS故障的前提下,可以避免出现主库降级的故障。而这一点,也会在 PG 的监控中体现出来
监控系统重制:服务
另一个进行重新设计的部分是 Service 与 Proxy 。Service 面板现在添加了关于服务的重要信息:SLI ,通过条状的 Statetimeline,用户可以直观的看出服务中断情况,获取服务可用性指标,并理解负载均衡器与后端真实数据库服务器的状态。
本例中,对 pg-test 集群的四个 HAProxy,分别进行了 排干,设置维护状态操作,然后关闭后端数据库服务器。只有当一个集群的全部实例都下线后, pg-test-replica 这个只读服务才会进入不可用状态。
这是 pg-test 集群 1 号 HAProxy 负载均衡器的监控面板,每一个由其承载的服务都会列于其中,展示后端服务器状态并计算 SLI。HAProxy 本身的状态与监控放置在 Node Haproxy 监控面板中。
在全局总览中,可以看到 Pigsty 中所有数据库服务的整体状态时间线与 SLI 指标。
监控系统重制:数据库统计
在 Pigsty 中,除了会对数据库服务器进行监控外,也会对数据库服务器所承载的逻辑对象 —— 数据库,表,查询,索引等逻辑。
PGSQL Databases 展示了集群层面的数据库统计指标。例如,在 pg-test 集群中有4个数据库实例,与一个数据库 test ,而这里就展示出了这4个实例数据库指标的水平对比。
用户可以进一步下钻到单个数据库实例内部的统计,也就是 PGSQL Database 面板。这个面板提供了一些关于数据库与连接池的关键指标,但最重要的是,PGSQL Database 面板提供了对数据库内最活跃醒目的表与查询的索引 —— 这是两类最为重要的库内对象。
监控系统重制:系统目录
在 Pigsty 中,除了使用 pg exporter 采集到的指标数据之外,还会使用另外一类可选的重要补充数据 —— 系统目录。这也是 PGCAT 系列 Dashboard 所做的事情。PGCAT Instance 将直接访问数据库系统目录(使用最多8条监控只读连接),获取并呈现所需的信息。
例如,您可以获取数据库当前正在运行的活动,按照各种指标对数据库中的慢查询,无用索引,全表扫描进行定位与分析。查阅数据库的角色,会话,复制情况,配置修改状态,内存使用详情,备份与持久化的具体细节。
如果说 PGCAT Instance 关注的是数据库服务器本身,那么 PGCAT Database 就更关注单个数据库内部的对象细节:例如 Schema,Table,Index,膨胀,Top SQL, Top Table,等等。
每一个 Schema,Table ,Index 都可以点击下钻,进入更详细的专用面板中。例如 PGCAT Schema,就进一步展现了一个架构模式内的对象细节。
数据库内的查询,也按照执行计划进行聚合,便于用户找到问题 SQL,快速定位慢查询问题。
监控系统重制:表与查询
在 Pigsty 中,你可以查阅一张表的方方面面。PGCAT Table 面板可以让您查看表的元数据,上面的索引,每一列的统计信息,以及相关的查询。
当然,你也可以使用 PGSQL Table 面板,从指标的维度,查阅一张表在任意历史时间段上的关键指标。点击表名即可轻松在两个视角进行切换。
相应地,你也可以获取(具有相同执行计划)的同一类 SQL 的详细信息。
在 Pigsty 中,还有许多关于特定主题的 Dashboard。限于篇幅,关于监控系统的介绍就是这些。最直观的体验方式,就是访问 Pigsty 提供的公开 Demo:http://demo.pigsty.cc ,亲自上手把玩一番。虽然这只是一个4台1C虚拟机的简陋环境,但用来展示Pigsty最基本的监控系统能力已经是足够了。
大号仿真环境
Pigsty 提供了一个基于 Vagrant 与 Virtualbox 的沙箱环境,可以跑在你的笔记本电脑/Mac上,有一个 1 节点的最小版本,和一个4节点的完整版本,用与演示与学习,而现在 v2.2 中又多了一个 42 节点的生产仿真版本沙箱。
生产沙箱的所有细节都由 prod.yml 这个五百行不到的配置文件描述,它可以轻松跑在一台普通的服务器物理机上,而拉起它过程与4节点并无二致:make prod install 即可完工。
Pigsty v2.2 提供了基于 libvirt 的 Vagrantfile 模板,您只需要调整上面配置中的机器清单,即可一键创建出所需的虚拟机来。所有东西都可以轻松跑在一台 Dell R730 48C 256G 物理机上,二手价不到三千元。当然,您依然可以使用 Pigsty Terraform 模板一键在云厂商上拉起虚拟机。
安装完成后环境如下所示,包含两节点的监控基础设施,一主一备。5节点的专用 etcd 集群,3 节点的样例 MinIO 集群提供对象存储服务存放 PG 备份,还有一个两节点的专用 HAProxy 集群,可以统一为数据库服务提供负载均衡。
在此之上,还有3套Redis数据库集群与10套规格各异的 PostgreSQL 数据库集群与,其中还包括一套开箱即用的 5 分片的 Citus 12 分布式 PostgreSQL 集群。
这个配置是中大型企业运行管理大规模数据库集群的参考样例,而您可以在单台物理服务器上用半个小时完整一键拉起。
更丝滑的构建流程
当你选择直接从互联网下载 Pigsty 所需的软件时,可能会遭遇到功夫网的烦恼。例如,默认的 Grafana / Prometheus Yum 源下载速度极慢。除此之外,还有一些零散的 RPM 包需要通过 Web URL 的方式,而不是 repotrack RPM 的方式进行下载。
在 Pigsty v2.2 中,解决了这个问题。Pigsty 提供了一个官方的 yum 源:http://get.pigsty.cc ,并配置为默认的上游源之一。所有零散的 RPM,需要翻墙的 RPM 都放置其中,可以有效加快在线安装/构建速度。
此外, Pigsty 还在 v2.2 中提供了对信创操作系统,统信 UOS 1050e uel20 的支持,满足一些特殊客户的特殊需求。Pigsty 针对这些系统重新编译了 PG相关的 RPM 包,为有需求的客户提供支持。
安装
从 v2.2 开始,Pigsty 的安装命令变为:
bash -c "$(curl -fsSL http://get.pigsty.cc/latest)"
一行命令,即可在全新机器上完整安装 Pigsty. 如果您想要尝鲜 beta 版本,将 latest 换为 beta 即可。对于没有互联网访问的特殊环境,您也可以使用以下链接下载 Pigsty,以及打包了所有软件的离线安装包:
- http://get.pigsty.cc/v2.2.0/pigsty-v2.2.0.tgz
- http://get.pigsty.cc/v2.2.0/pigsty-pkg-v2.2.0.el7.x86_64.tgz
- http://get.pigsty.cc/v2.2.0/pigsty-pkg-v2.2.0.el8.x86_64.tgz
- http://get.pigsty.cc/v2.2.0/pigsty-pkg-v2.2.0.el9.x86_64.tgz
以上,就是 Pigsty v2.2 带来的变化。更多细节,可参考 Pigsty 官方文档与 Github Release Note。