阿里云云数据库RDS for PostgreSQL 的监控
简介
展示 阿里云云数据库RDS for PostgreSQL 的监控指标
前提条件
- 已安装 DataKit(DataKit 安装文档)
配置
阿里云云数据库RDS for PostgreSQL采集源需要两个配置文件:
conf.d/postgresql/postgresql.conf
conf.d/aliyuncms/aliyuncms.conf
配置postgresql.conf
打开 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
一起使用。
举例:
[[inputs.postgresql]]
address = "host=xxx user=xxx port=xxx password=xxx sslmode=disable dbname=xxx"
interval = "300s"
[inputs.postgresql.tags]
instance_name='xxx'
project='xxx'
配置aliyuncms.conf
打开 DataKit 采集源配置文件夹(默认路径为 DataKit 安装目录的 conf.d
文件夹),找到 aliyuncms
文件夹,打开里面的 aliyuncms.conf
。
[[cms]]
## Aliyun Credentials (required)
access_key_id = 'xxx'
access_key_secret = 'xxx'
## Aliyun Region (required)
## See: https://www.alibabacloud.com/help/zh/doc-detail/40654.htm
region_id = 'cn-shanghai'
[[cms.project]]
## Metric Statistic Project (required)
name = 'acs_rds_dashboard'
## Optional instances from which you want to pull metrics, empty means to pull all instances
instanceIds = ['xxx']
## Metrics to Pull (Required)
## See: https://help.aliyun.com/document_detail/28619.html?spm=a2c4g.11186623.2.11.6ac47694AjhHt4
[cms.project.metrics]
names = [
'CpuUsage',
'DiskUsage',
'IOPSUsage',
'ConnectionUsage',
'MemoryUsage',
'DataDelay',
'DockerCpuUsage',
'AvgLogSize',
'MaxLogSize',
'Flow',
'Rt',
'GroupCPUUtilization',
'GroupConnectionUtilization',
'GroupDiskUtilization',
'GroupIOPSUtilization',
]
配置好后,重启 DataKit 即可生效。
概览
指标
阿里云监控 | field | type | 单位 | Alias |
---|---|---|---|---|
资源监控 | docker_cpu_usage | float | % | Docker容器CPU占用比例 |
小类 | 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总量,如果特别多,需要看业务是否有问题了 |