search
场景和视图 视图模板 PostgreSQL 监控视图

PostgreSQL 监控视图

简介

展示 PostgreSQL 的监控指标

前提条件

配置

打开 DataKit 采集源配置文件夹(默认路径为 DataKit 安装目录的 conf.d 文件夹),找到 postgresql 文件夹,打开里面的 postgresql.conf

其中,通过 postgresql 连接字符串指定地址: host=localhost user=pqotest password=... sslmode=... dbname=app_production

或通过url匹配: postgres://[pqgotest[:password]]@localhost[/dbname]\?sslmode=[disable|verify-ca|verify-full]

所有连接参数都是可选的。如果没有 dbname 参数,驱动程序将默认使用与用户名相同的数据库。此 dbname 仅用于实例化以及服务器的连接,并不限制我们尝试获取其指标的数据库。

可使用ignored_databases = ["postgres", "template0", "template1"]可显式忽略的数据库列表。如果未指定,则收集所有数据库的指标。不能与databases一起使用。

可使用databases = ["app_production", "testing"]获取指定的数据库的指标。如果未指定,则收集所有数据库的指标。不能与ignored_databases一起使用。

配置好后,重启 DataKit 即可生效。

举例:

[[inputs.postgresql]]
  address = "host=10.0.0.120 user=test01 port=5432 password=test01 sslmode=disabledbname=test01"
  interval = "300s"
  [inputs.postgresql.tags]
    instance_name='DBA团队自建PostgreSQL实例'
    project='SuperCloud'

概览

PG01

指标

小类 field type 单位 Alias
缓冲耗时 blk_read_time float 毫秒 数据库中花费在读取文件的时间,这个值很高说明内存较小,需要频繁从磁盘读入数据文件
缓冲耗时 blk_write_time float 毫秒 数据库中花费在写数据文件的时间,pg中脏页一般写入page cache,如果这个值较高,则说明cache较小,操作系统的cache需要更积极的写入
缓冲 blks_hit int 从shared buffer命中块数
缓冲 blks_read int 总磁盘物理读的块数,这里的read可能是从 cache中读取,如果很高需要结合blk_read_time看是否真的存在从磁盘读取的情况
缓冲区 buffers_alloc int 已分配的缓冲区数量
缓冲区 buffers_backend int 表示后端必须自身,而不是后台写入进程或检查点写的缓冲区数量
缓冲区 buffers_backend_fsync int 后端必须执行自身的fsync调用的次数
缓冲区 buffers_checkpoint int 检查点写入磁盘的缓冲区总数
缓冲区 buffers_clean int 后台进程写入磁盘的缓冲区数
检查点 checkpoint_sync_time float 毫秒 检查点进程同步磁盘花费的总时间
检查点 checkpoint_write_time float 毫秒 检查点进程写入磁盘花费的总时间
检查点 checkpoints_req int 请求的检查点数
检查点 checkpoints_timed int 已发生的计划检查点数
基础信息 datid int 数据库的oid
基础信息 datname string 数据库名
基础信息 numbackends int 访问当前数据库的连接数量
基础信息 maxwritten_clean int 后台写入进程在每次运行时达到刷新的最大页数的次数
查询情况 conflicts int 与恢复冲突取消的查询次数,只会在备机上发生
死锁 deadlocks int 死锁发生的次数
临时文件 temp_bytes int 临时文件的大小
临时文件 temp_files int 产生临时文件的数量,如果这个值很高,需要调大work_mem
SQL执行次数 tup_deleted int 删除的行数
SQL执行次数 tup_inserted int 插入的行数
SQL执行次数 tup_updated int 更新的行数
SQL执行质量 tup_fetched int 指通过索引返回的行数
SQL执行质量 tup_returned int 对于表来说,是全表扫描的行数;对于索引是通过索引返回的索引行数,如果这个值明显大于tup_fetched,说明当前数据库存在大量的全表扫描。查看执行计划,这个是databas全局级别的
事务 xact_commit int 该数据库事务提交总量:和下面的rollback和作为TPS统计
事务 xact_rollback int 该数据库事务rollback总量,如果特别多,需要看业务是否有问题了