重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 52|回复: 0
打印 上一主题 下一主题

[系统管理] prometheus中oracle监控的toml配置文件讲解

[复制链接]
跳转到指定楼层
楼主
发表于 4 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
# ==========================================
# 1. 主备库角色与 Open 状态监控
# ==========================================
[[metric]]
context = "db_role_status"
request = "select decode(database_role, 'PRIMARY', 1, 'PHYSICAL STANDBY', 2, 'SNAPSHOT STANDBY', 3, 0) as role_code, decode(open_mode, 'READ WRITE', 1, 'READ ONLY WITH APPLY', 2, 'READ ONLY', 3, 'MOUNTED', 4, 0) as open_code from v$datab
ase"
metricsdesc = { role_code = "Database role: 1=Primary, 2=Physical Standby, 3=Snapshot Standby", open_code = "Open mode: 1=Read Write, 2=Read Only with Apply, 3=Read Only, 4=Mounted" }


根据上面的配置,Exporter 会向 Prometheus 暴露两个指标(通常指标名是由 context 和具体的字段名拼接而成,如果有特定的全局前缀,可能会加上 oracledb_):

db_role_status_role_code (数据库角色)

1 = Primary (主库)

2 = Physical Standby (物理备库)

3 = Snapshot Standby (快照备库)

0 = 其他

db_role_status_open_code (数据库打开模式)

1 = Read Write (读写模式)

2 = Read Only with Apply (只读且应用日志,通常是 Active Data Guard)

3 = Read Only (只读)

4 = Mounted (挂载状态)

0 = 其他

如何使用 PromQL (Prometheus Query Language) 来查询和监控这两个指标。

1. 基础查询 (查看当前状态)
最简单的 PromQL 就是直接输入指标名称,这会返回所有被监控数据库实例的当前代码值。

代码段
# 查看所有数据库当前的角色状态
db_role_status_role_code

# 查看特定数据库实例(假设 label 名为 instance)的打开模式
db_role_status_open_code{instance="192.168.1.10:1521"}
2. 状态过滤 (用于监控面板呈现)
你可以使用比较运算符 (==, !=, >, <) 来筛选出符合特定状态的数据库实例。

代码段
# 找出当前所有的主库 (Primary)
db_role_status_role_code == 1

# 找出当前所有的备库 (Physical 或 Snapshot)
db_role_status_role_code in (2, 3)
# 或者使用正则表达式:
db_role_status_role_code =~ "2|3"
3. 异常检测与告警 (Alerting 场景)
在监控中最常用的是结合逻辑运算符 (and, or, unless) 来判断系统是否处于异常状态。这是配置 Prometheus 告警规则的核心。

场景 A:主库发生切换或主库不可用
如果某个原本应该是主库的实例角色代码变成了非 1,说明发生了主备切换或者异常。

代码段
db_role_status_role_code != 1
场景 B:主库处于非读写 (Read Write) 状态
一个正常服务的主库(role_code == 1),它的打开模式必须是读写(open_code == 1)。如果不满足,说明数据库可能有问题(例如变成了只读,或者只挂载)。

代码段
# 翻译:角色是主库,且打开模式不是读写模式
db_role_status_role_code == 1 and db_role_status_open_code != 1
场景 C:物理备库同步异常 (Active Data Guard 场景)
如果你使用了 ADG,物理备库(role_code == 2)正常应该处于 Read Only with Apply(open_code == 2)状态。如果它回退到了 Mounted(4)或者单纯的 Read Only(3),说明日志应用可能停止了。

代码段
# 翻译:角色是物理备库,且打开模式不是"只读并应用日志"
db_role_status_role_code == 2 and db_role_status_open_code != 2
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-7-23 21:52 , Processed in 0.244943 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表