目录
PgBouncer 是 PostgreSQL 的开源连接池工具。默认情况下,PostgreSQL 处理传入数据库连接的方式相当占用资源,为每个连接创建一个新进程。对于某些用例,这很好,但在快速创建和删除连接的情况下,效率低下。
PgBouncer 的工作原理是为每个唯一的用户和数据库对维护一个连接池。当新的传入客户端请求进入时,这些预先建立的连接用于处理请求。一旦客户端断开连接,数据库连接将返回到池中,稍后可供新的传入连接使用。这节省了服务器资源,避免了创建和初始化 TCP 连接的昂贵过程,因为每个连接都创建一次,然后由多个用户重用。
为什么使用 Telegraf 插件进行 PgBouncer 监控?
PgBouncer 的 Telegraf 插件使您可以轻松地从 PgBouncer 实例收集和存储有价值的指标,以进行长期存储和分析。Telegraf 具有 40 多个不同的输出插件,但与 InfluxDB 特别配合。通过将 PgBouncer 指标输出到 InfluxDB 云,您还可以根据用户定义的阈值设置警报和通知。
如何使用 Telegraf 插件监控 PgBouncer
设置 PgBouncer Telegraf 输入插件非常容易,只需要几行配置。唯一需要的配置值是数据库地址,可以是 PostgreSQL 连接字符串或 URL 匹配,如下所示
PostgreSQL 连接字符串
host=/run/postgresql port=6432 user=telegraf database=pgbouncer
URL 匹配
postgres://[pqgotest[:password]]@host:port[/dbname]?sslmode=[disable|verify-ca|verify-full]
以下是完整的配置文件示例设置
[[inputs.pgbouncer]] ## specify address via a url matching: ## postgres://[pqgotest[:password]]@host:port[/dbname]\ ## ?sslmode=[disable|verify-ca|verify-full] ## or a simple string: ## host=localhost port=5432 user=pqgotest password=... sslmode=... dbname=app_production ## ## All connection parameters are optional. ## address = "host=localhost user=pgbouncer sslmode=disable"
用于监控的关键 PgBouncer 指标
PgBouncer Telegraf 输入插件提供对与 PgBouncer 实例本身相关的许多不同指标、每个连接池的指标以及聚合指标的访问。使用 Telegraf,您可以选择过滤和选择要发送到输出存储的指标。以下是可用指标的完整列表
- pgbouncer
- 标签
db
server
- 字段
avg_query_count
avg_query_time
avg_wait_time
avg_xact_count
avg_xact_time
total_query_count
total_query_time
total_received
total_sent
total_wait_time
total_xact_count
total_xact_time
- 标签
- pgbouncer_pools
- 标签
db
pool_mode
server
user
- 字段
cl_active
cl_waiting
maxwait
maxwait_us
sv_active
sv_idle
sv_login
sv_tested
sv_used
- 标签