# 关于本书

LLMS 索引： [llms.txt](/llms.txt)

---

<span id="mon-chapter-star-4" class="pdf-anchor"></span><span id="pdf-page-10" class="pdf-anchor"></span>

我写这本书，是为了通过易于理解的真实示例，解释 PostgreSQL 监控在实践中是如何工作的。PostgreSQL 官方文档中关于内置观察和监控工具的内容通常写得比较简略，因此本书的目标是通过每位数据库管理员都能理解的示例，解释其中的各种细节。

<span id="mon-section-star-5" class="pdf-anchor"></span>

## 谁应该读这本书？ {#mon-p10-h253}

本书面向数据库管理员、系统管理员、可靠性工程师，以及所有对 PostgreSQL 管理感兴趣的人。本书试图涵盖监控主题的所有细节。博客中有许多相关文章，但大多数只会深入讨论其中的某个方面。本书全面介绍 PostgreSQL 监控，帮助读者了解数据库管理系统内置的大量工具。几乎所有监控的目标，都是发现异常、预防事故并预测系统未来的行为。借助监控，我们可以更好地理解系统的工作方式，然后通过调整配置和优化工作负载来提高性能。因此，任何关注性能优化的人都一定能从本书中获得有用信息，不仅能得出自己的结论，还可能为所管理系统的改动制定计划，并取得有价值的结果。

<span id="mon-section-star-6" class="pdf-anchor"></span>

## 本书的组织方式 {#mon-p10-h523}

本书由九章组成。

- 第 1 章概括介绍数据库管理系统的*活动统计信息*是什么、为什么它如此重要，以及它为什么是 PostgreSQL 监控的基础。这是一章介绍理论基础的入门章节。

- 第 2 章讨论描述数据库管理系统内部进程和事件的统计信息，这些进程和事件由工作负载执行以及服务客户端所触发。

- 第 3 章详细讨论客户端会话，并分析应用程序产生的工作负载。

<span id="pdf-page-11" class="pdf-anchor"></span>

- 第 4 章从数据库管理系统对象及其相关事件的交互角度介绍活动统计信息。

- 第 5 章讨论共享内存与输入/输出，即数据在不同子系统之间移动的过程。

- 第 6 章讨论预写式日志及其相关统计信息。

- 第 7 章讨论复制、使用复制时可能遇到的问题，以及跟踪复制状态的工具。

- 第 8 章讨论数据库清理过程，每个 PostgreSQL 管理员都曾接触过这个过程。

- 第 9 章介绍跟踪长时间运行操作进度的工具，这些操作在数据库管理系统运维过程中需要定期执行。

读完本书，读者将清楚了解 PostgreSQL 监控、数据库管理系统中可用于监控的工具，以及如何最有效地使用这些工具。本书还将帮助读者了解如何查找和解决 PostgreSQL 运维相关的问题。

<span id="mon-section-star-7" class="pdf-anchor"></span>

## 本书面向的读者 {#mon-p11-h366}

本书面向具备高于入门水平知识的读者。为了控制篇幅，书中省略了某些次要内容的详细说明，希望读者已经熟悉这些内容，或者能够通过搜索引擎或 ChatGPT 找到答案。假定读者具备以下知识或技能：

- 了解数据库管理系统的基本结构，例如，大致知道 ACID 缩写中的每个字母代表什么，并且知道事务与查询的区别；

- 掌握 SQL 语言的基本用法，能够不查阅文档编写带有条件、连接或子查询的简单 SELECT 查询；能够阅读并理解“别人写的”查询；

- 具备 PostgreSQL 方面的基础知识，并大致了解这一数据库管理系统的主要组件，例如缓冲区缓存（shared buffers）、预写式日志、复制等；如果读者读过 [The Internals of PostgreSQL](<http://www.interdb.jp/pg/index.html>) 一书，那就更好了；

- 对 Prometheus 监控系统[^mon-11-1]有一定了解，知道什么是指标和标签[^mon-11-2]；

<span id="pdf-page-12" class="pdf-anchor"></span>

- 至少掌握编写 PromQL/MetricsQL 查询的基本技能[^mon-12-1]，因为本书除了 SQL 查询外，还会使用 PromQL 和 MetricsQL 查询示例；

- 掌握 Grafana 的基本使用方法；最好能够基于 PromQL/MetricsQL 查询创建简单的图表面板，并能够编辑图例、度量单位、显示参数、颜色等；

- 掌握 Linux 操作系统的基本使用技能，例如在终端中工作、安装软件包和运行程序；

- 掌握 Docker 和 Docker Compose 工具的基本使用技能；最好能够启动和停止容器、连接容器并检查其状态。

<span id="mon-section-star-8" class="pdf-anchor"></span>

## 代码示例 {#mon-p12-h285}

书中经常给出 SQL 和 PromQL/MetricsQL 语言的查询示例，有时也会给出需要在 shell 或 psql 客户端中执行的命令。为了把查询示例与普通文本区分开，查询使用`等宽字体`，命令使用**粗体**排版。配置参数名称使用*斜体*排版。

<span id="mon-section-star-9" class="pdf-anchor"></span>

## 还有疑问？ {#mon-p12-h450}

你可以在下面的资料中寻找答案：

- 关于 PostgreSQL 内置监控工具的俄文官方文档主页：[www.postgrespro.ru/docs/postgresql/current/monitoring](<https://www.postgrespro.ru/docs/postgresql/current/monitoring>)。

- 关于 PostgreSQL 内置监控工具的英文官方文档主页：[www.postgresql.org/docs/current/monitoring.html](<https://www.postgresql.org/docs/current/monitoring.html>)。

- 关于 PostgreSQL 各种监控工具的官方 Wiki 页面：[wiki.postgresql.org/wiki/Monitoring](<https://wiki.postgresql.org/wiki/Monitoring>)。

<span id="pdf-page-13" class="pdf-anchor"></span><span id="mon-section-star-10" class="pdf-anchor"></span>

## 反馈与建议 {#mon-p13-h76}

我很乐意听到读者的反馈。请告诉我你对本书的看法，哪些内容让你喜欢，哪些内容也许不尽如人意。反馈对我很重要，也会帮助我准备本书的更新。你可以在 [github.com/lesovsky/postgresql-monitoring-book/issues](<https://github.com/lesovsky/postgresql-monitoring-book/issues>) 提交反馈或建议。发现错别字、需要修正不准确之处等情况时，也可以使用同一地址。

<span id="mon-section-star-11" class="pdf-anchor"></span>

## 侵犯版权 {#mon-p13-h224}

互联网盗版（无论有意还是无意）仍然是一个紧迫的问题。如果你发现本书被非法发布，请把相关互联网资源的链接发给我，以便我联系其所有者。你可以在 [github.com/lesovsky/postgresql-monitoring-book/issues](<https://github.com/lesovsky/postgresql-monitoring-book/issues>) 留下可疑材料的链接。

[^mon-11-1]: [prometheus.io/docs/introduction/overview](<https://prometheus.io/docs/introduction/overview>)
[^mon-11-2]: [prometheus.io/docs/concepts/data\_model](<https://prometheus.io/docs/concepts/data_model>)
[^mon-12-1]: [prometheus.io/docs/prometheus/latest/querying/basics](<https://prometheus.io/docs/prometheus/latest/querying/basics>)
