Snowflake Postgres 指标¶
Snowflake Postgres 会自动收集实例指标并将其存储在您账户的活动 事件表 中。监控代理大约每 5-30 秒对指标进行一次采样,具体取决于指标类型,并将其写入 SNOWFLAKE.TELEMETRY.EVENTS,且 RECORD_TYPE = 'METRIC'。
您可以直接在 Snowflake 中查询这些指标,也可以将其转发到外部可观察性平台,例如 Grafana 或 Observe。
备注
有关从事件表中查询 Postgres 日志 数据的信息,请参阅 Snowflake Postgres 日志记录。
可用指标¶
Postgres 指标¶
指标 |
类型 |
描述 |
|---|---|---|
|
gauge |
活动后端连接数 |
|
gauge |
所有数据库的总大小(字节) |
|
gauge |
WAL 目录大小(字节) |
|
gauge |
日志目录大小(字节) |
|
gauge |
临时文件大小(字节) |
|
gauge |
授予的锁数量 |
|
gauge |
等待/被阻塞的锁数量 |
|
gauge |
整数形式的 Postgres 版本(例如,180003 = 18.0.3) |
Postgres 进程指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
seconds |
state (user, system, wait) process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
sum |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
sum |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
备注
每个 Postgres 进程会针对每一种 CPU 状态有一个 process.cpu.time 行,并且分别针对 process.memory.usage 和 process.memory.virtual 各有一行。
process.* 维度属性位于每一行的 resource_attributes 列中。与其他指标的 state 值一样,state 维度属性位于 record_attributes 列中。
CPU 指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
seconds |
state: user, system, wait, idle, nice, interrupt, softirq, steal cpu: cpu# |
|
gauge |
threads |
--- |
|
gauge |
threads |
--- |
|
gauge |
threads |
--- |
备注
每个 cpu#(例如 cpu0 和 cpu2)都会针对每一种 system.cpu.time 状态生成一个 CPU 行。
system.cpu.time 是累积计数器。要获得百分比,请计算连续样本之间的增量,然后除以经过的时间间隔。
内存指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
bytes |
state: used, free, cached, buffered, slab_reclaimable, slab_unreclaimable |
备注
每一种状态都会对应一个 system.memory.usage 行。
磁盘指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
bytes |
mountpoint, device, state (used, free), type, mode |
备注
每一种状态都会对应一个 system.filesystem.usage 行。
网络指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
bytes |
device, direction (transmit, receive) |
备注
每个设备(“eth0”和“lo”)都会针对每个方向各有一个 system.network.io 行。
分页指标¶
指标 |
类型 |
单位 |
维度 |
|---|---|---|---|
|
sum |
bytes |
device, state (used, free) |
备注
每一种状态都会对应一个 system.paging.usage 行。
资源属性¶
每个指标行在 RESOURCE_ATTRIBUTES 中都包含以下字段:
属性 |
描述 |
示例 |
|---|---|---|
|
Postgres 实例标识符 |
|
|
服务器主机名 |
|
|
EC2 实例 ID |
|
|
实例系列 |
|
|
AWS 区域 |
|
|
可用区 |
|
|
始终为 |
|
|
始终为 |
|
查询指标¶
给定的 Snowflake Postgres 实例可以在任何给定时间运行多个服务器,例如主服务器及其 HA 服务器,或是等待实例的维护时段切换到位的升级替换。由于每个服务器都会报告实例给定 instance_id 的指标,因此您还需要实例当前活动服务器的服务器 host_name。
要查找 Postgres 实例的 instance_id,请使用 DESCRIBE POSTGRES INSTANCE:
实例的 instance_id 是返回 host 值的第一段(第一个句点之前的所有内容)。
备注
您可以使用 SHOW POSTGRES INSTANCES 命令输出的 host 列,查看账户中所有正在运行的 Snowflake Postgres 实例的实例主机值。
要查找实例的当前服务器 host_name,可以对该实例的 DNS 值执行简单的 CNAME host 查询。
假设返回的 host 值为“4jypgsndvzd5ta6ufaryx6owja.sfengineering-pgtest.preprod.us-west-2.aws.postgres.snowflake.app”(因此我们知道实例的 instance_id 是“4jypgsndvzd5ta6ufaryx6owja”)。
以下是使用 dig CLI 工具执行 DNS CNAME 查找的示例:
以下是使用 Python 的 dns.resolver 模块的示例:
host_name 值是该返回值的第一段,即上述示例中的“df6m4y5m5fgfpb5idy2pj67xrm”。
以下查询返回过去 5 分钟内收集的每个指标的最新值:
备注
上述查询使用的是账户的默认事件表 SNOWFLAKE.TELEMETRY.EVENTS。如果您设置了自定义事件表,请适当调整查询。
指标查询示例¶
活动连接¶
按状态划分的内存使用量¶
CPU 负载平均值¶
数据库大小¶
将指标转发到外部工具¶
由于指标存储在标准 Snowflake 表中,因此您可以将其转发到任何支持 Snowflake 连接的可观察性平台。有关使用特定工具的分步设置,请参阅: