Skip to content

Commit 73e6322

Browse files
committed
code refactor
1 parent 265928c commit 73e6322

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

content/zh/docs/practice/oracle.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: "Oracle"
3+
description: "Oracle 监控数据的采集有多种方式,可以使用 Categraf、Cprobe 等各类工具,其原理都是类似的,无非就是连到 Oracle 实例上,执行相关命令获取监控数据"
4+
date: 2025-07-25T17:41:46+08:00
5+
lastmod: 2025-07-25T17:41:46+08:00
6+
draft: false
7+
images: []
8+
menu:
9+
docs:
10+
parent: "practice"
11+
weight: 5400
12+
toc: true
13+
---
14+
15+
> 对于监控系统,基础功能的强弱确实非常关键,但是如何在不同的场景落地实践,则更为关键。在《监控实践》章节,搜罗各类监控实践经验,会以不同的组件分门别类,您如果对某个组件有好的实践经验,欢迎提 PR,把您的文章链接附到对应的组件目录下。
16+
17+
Oracle 监控数据的采集有多种方式,可以使用 [Categraf](https://github.com/flashcatcloud/categraf)[Cprobe](https://github.com/cprobe/cprobe) 等各类工具,其原理都是类似的,无非就是连到 Oracle 实例上,执行相关命令获取监控数据。本文以 Categraf 为例,介绍 Oracle 监控数据的采集配置方法。
18+
19+
## Oracle 插件配置概述
20+
21+
Categraf 的所有插件配置,默认都在 `conf` 目录下,Oracle 的配置目录是 `conf/input.oracle`,该目录下有两个配置文件:
22+
23+
- `oracle.toml`:Oracle 插件的主配置文件,配置不同 Oracle 实例的连接、认证信息;Categraf 可以同时连接多个 Oracle 实例,配置文件中可以配置多个实例的连接信息,即不同的 `[[instances]]` 配置段。
24+
- `metric.toml`:Oracle 插件通过执行各类 SQL 采集 Oracle 监控数据,有些 SQL 是通用的,希望所有的 Oracle 实例都去执行采集,有些 SQL 是特定实例的,只有特定实例才去执行采集,通用的 SQL 都在 `metric.toml` 中配置,特定实例的 SQL 在 `oracle.toml` 中配置。
25+
26+
## oracle.toml
27+
28+
oracle.toml 配置样例如下:
29+
30+
```toml
31+
# 默认的采集频率,下面配置的所有的 oracle 的实例默认都会使用这个采集频率
32+
# 如果某个实例需要不同的采集频率,可以在实例配置中使用 interval_times 来调整
33+
# 各个实例的最终采集频率 = interval * interval_times
34+
# 如果这里的 interval 也没有配置,那就使用 Categraf 全局配置中的 interval(默认是 15 秒)
35+
# 单位是秒,所以默认是 15 秒采集一次监控数据
36+
interval = 15
37+
38+
# 这是第一个 Oracle 实例的配置,使用一大块 [[instances]] 来配置
39+
# [[instances]] 使用双中括号包裹,双中括号在 TOML 中表示数组
40+
# 即可以配置多个 [[instances]] 区块,也就是可以配置多个 Oracle 实例
41+
[[instances]]
42+
address = "10.1.2.3:1521/orcl"
43+
username = "monitor"
44+
password = "123456"
45+
is_sys_dba = false
46+
is_sys_oper = false
47+
disable_connection_pool = false
48+
max_open_connections = 5
49+
# 这个实例最终的采集频率是 interval * interval_times
50+
interval_times = 1
51+
# 这里可以为当前实例附加一些维度标签,这些维度标签最终会附加到当前实例的监控数据上面
52+
labels = { region="cloud" }
53+
54+
# instances 下面的 metrics 配置段,表示当前实例需要采集的监控数据
55+
# 注意,这个 metrics 配置段是当前实例特有的,其他实例不会去执行这些 SQL
56+
[[instances.metrics]]
57+
mesurement = "sessions"
58+
label_fields = [ "status", "type" ]
59+
metric_fields = [ "value" ]
60+
timeout = "3s"
61+
request = '''
62+
SELECT status, type, COUNT(*) as value FROM v$session GROUP BY status, type
63+
'''
64+
65+
[[instances]]
66+
address = "192.168.10.10:1521/orcl"
67+
username = "monitor"
68+
password = "123456"
69+
is_sys_dba = false
70+
is_sys_oper = false
71+
disable_connection_pool = false
72+
max_open_connections = 5
73+
labels = { region="local" }
74+
75+
# 第二个实例下面没有对应的 instances.metrics 配置段,说明没有独属于这个实例的采集 SQL
76+
# 即:第二个实例仅会执行 metric.toml 中配置的通用 SQL
77+
```
78+
79+
Oracle 监控数据采集原理:周期性执行 SQL,把返回的结果转换为 Prometheus 时序数据格式,发送到服务端。SQL 执行的结果是多行多列的二维表格,那我们就需要通过配置告诉 Categraf,哪些列作为时序数据的标签(label),哪些列作为时序数据的值(metric value)。
80+
81+
- mesurement: 自定义的一个指标前缀
82+
- request: 查询监控数据的 sql 语句
83+
- label_fields: sql 查到的内容,会有多列,哪些列作为时序数据的 label
84+
- metric_fields: sql 查到的内容,会有多列,哪些列作为时序数据的值
85+
- field_to_append: 是否要把某列的内容附到监控指标名称里,作为指标的后缀
86+
- timeout: sql 执行的超时时间
87+
- ignore_zero_result: 是否忽略查询结果中值为 0 的行,如果不忽略(设置为 false)且没有查到数据,会打印一行错误日志,如果忽略了(设置为 true),则查不到数据的时候不会打印错误日志
88+
89+
## metric.toml
90+
91+
这里配置了一些常用的 Oracle 监控数据采集 SQL,Categraf 会定期执行这些 SQL,获取所有 Oracle 实例的监控数据。这里的 SQL 具体含义、作用,可能 Oracle DBA 才比较熟悉,欢迎各位 Oracle DBA 写文章分享这些 SQL 的含义和作用,完事可以把您的文章链接提个 PR 放到本页文档里,让更多人受益。

0 commit comments

Comments
 (0)