自省 自行 自醒

5 秒上手,小而美的巡检工具

Word count: 710Reading time: 3 min
2024/04/14
loading

前言

DTC 大会昨日已经圆满结束,原本打算在 DTC 上分享《深入浅出 vacuum 内核原理》,可惜由于加班,未能赴约,不过 PostgreSQL 大会也已在骑马赶来的路上 (具体请留意中文社区官微),那就在 PostgreSQL 大会上再分享吧!

这两天在冲浪的时候,发现几个好用的小工具,其中 pg_collector 值得说道说道,5 秒快速上手,生成一份小而精悍的巡检报告。之前曾分享过另一款类似的巡检工具 pg_gather,详情戳👉🏻 一款不错的巡检工具

pg_collector

pg-collector collects database information and presents it in a consolidated HTML file

pg_collector 是纯 SQL 脚本,也就意味着你可以按需加工,并且十分简单,照猫画虎,添加自己的巡检项。目前 pg_collector 支持到了 14,不过都大差不差,安装指定版本即可

1
2
3
4
5
6
7
8
9
10
[postgres@mypg pg-collector-pg-collector-V1-for-PostgreSQL-14]$ ll
total 136
-rw-rw-r-- 1 postgres postgres 226 Jun 23 2022 CHANGELOG.md
-rw-rw-r-- 1 postgres postgres 309 Jun 23 2022 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 postgres postgres 3160 Jun 23 2022 CONTRIBUTING.md
drwxrwxr-x 2 postgres postgres 4096 Jun 23 2022 img
-rw-rw-r-- 1 postgres postgres 927 Jun 23 2022 LICENSE
-rw-rw-r-- 1 postgres postgres 105756 Jun 23 2022 pg_collector.sql
-rw-rw-r-- 1 postgres postgres 4536 Jun 23 2022 README.md
drwxrwxr-x 2 postgres postgres 4096 Jun 23 2022 sample_reports

安装之后会有一个 pg_collector.sql (此处基于 16 版本进行演示),为什么我会说 5 秒呢?没错,只需要运行一下 pg_collector.sql 即可

1
2
3
4
5
6
7
8
9
10
11
[postgres@mypg pg-collector-pg-collector-V1-for-PostgreSQL-14]$ psql
psql (16.1)
Type "help" for help.

postgres=# \i pg_collector.sql
Output format is html.
Report name and location: /tmp/pg_collector_postgres-2024-04-14_181706.html
psql:pg_collector.sql:104: ERROR: column "datlastsysoid" does not exist
LINE 1: ...ions, datconnlimit as database_connection_limit , datlastsys...
^
psql:pg_collector.sql:906: error: Did not find any settings.

此处有点不兼容,自己改造一下即可,执行完成之后,在 /tmp 目录下会生成一份 html 报告。由于巡检项较多,报告中大致包含如下内容:

  1. 数据库大小,使用情况
  2. 年龄使用
  3. 表、索引、序列使用情况:包含常规统计数据,以及膨胀,重复索引等
  4. 数据库负载
  5. vacuum/analyze,还很贴心的进行了可视化,展示清理和分析进度
  6. 流复制,复制槽
  7. 2pc
  8. 锁等待
  9. Toast Tables Mapping,这一点很方便
  10. 等待事件,等待事件将以往的”NULL”给改成了CPU,便于理解

各位可以自行体验,此处就不再赘述。

小结

pg_collector 和 pg_gather 类似,都是纯 SQL 巡检工具,包括了大多数的日常运维关心项,并且可以很容易基于其进行二次开发,pg_collector 相较于 pg_gather 的巡检项更多,pg_gather 会多一项”重要事件发现”,即告诉你巡检过程中发现的一些值得你关注的点,十分 nice 的一个小特性。

CATALOG
  1. 1. 前言
  2. 2. pg_collector
  3. 3. 小结