跳到主要内容

Oracle 监控

配置 Categraf Oracle 实例与采集 SQL,将结果中的标签列和数值列转成指标,并验证数据库权限。

最后校对于

这页办完,你会从 Oracle 采到时序指标,并理解通用 SQL 和单实例 SQL 放在哪里。 示例依据 Categraf v0.5.17 的 Oracle 配置,采集结果写到夜莺 v9 使用的时序库。

配置文件​

  • conf/input.oracle/oracle.toml:连接信息和 [[instances]],可配置多个 Oracle 目标。
  • conf/input.oracle/metric.toml:通用采集 SQL,各实例共用。
  • [[instances.metrics]]:仅对它所属的实例执行的 SQL。

使用已有安装与注册中的写入配置,不需要再建一个 Oracle 时序库。

单实例配置​

在 oracle.toml 中配置一个具有对应视图查询权限的监控账号:

interval = 15

[[instances]]
address = "127.0.0.1:1521/ORCLPDB1"
username = "monitor"
password = "replace-with-monitor-password"
is_sys_dba = false
is_sys_oper = false
max_open_connections = 5
labels = { instance = "oracle-local:1521" }

[[instances.metrics]]
mesurement = "sessions"
label_fields = ["status", "type"]
metric_fields = ["value"]
timeout = "3s"
request = '''
SELECT status, type, COUNT(*) AS value
FROM v$session GROUP BY status, type
'''

替换服务名、密码和实例标签。mesurement 的拼写是该插件的实际配置键,不要改成 measurement。 status、type 是标签,value 是数值;SQL 的列名必须与配置一致。

不要直接使用 SYS 账号。让 DBA 按启用的 SQL 授予所需视图权限;自定义会话查询需要访问 v$session,其他内置 SQL 可能还需要别的视图。 不要把一次查询需要的权限当成全部采集的权限清单。

验证​

./categraf --test --inputs oracle

预期结果:打印 Oracle 指标,没有连接、权限或列映射错误。 如果报 ORA 错误,先确认服务名和账号,再确认具体失败 SQL 需要的权限。

确认本地采集后,重启现有服务,在夜莺选择正确时序库,检查 oracle_ 指标和 instance 标签。 多实例必须有可区分的标签,避免相同时间序列相互覆盖。

通用 SQL 与查询开销​

将需要所有实例执行的 SQL 放进 metric.toml,特定实例查询仍放在其 [[instances.metrics]] 下。 上线前由 DBA 检查执行计划和采集频率,避免频繁扫描大表。 配置字段及公共 SQL 见 Oracle 配置目录。

下一步​