Oracle 数据库

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Oracle 数据库集成会收集 Oracle 数据库指标和日志。这些指标通过查询相关的监控视图来收集。此集成会写入结构化跟踪日志。

如需详细了解 Oracle 数据库,请参阅 Oracle 数据库文档

前提条件

如需收集 Oracle 数据库遥测,您必须安装 Ops Agent 2.22.0 或更高版本。

此集成支持 Oracle 数据库版本 12.2、18c、19c 和 21c。

配置 Oracle 数据库实例

为收集指标,监控用户需要对相关数据视图具有 SELECT 访问权限。以下 SQL 脚本应创建一个监控用户,并在其有足够权限(作为 SYSDBA 或 SYSOPER )连接到 Oracle 数据库实例的用户执行时为其授予适当的权限。

-- Create the monitoring user "otel"
CREATE USER otel IDENTIFIED BY ;

-- Grant the "otel" user the required permissions
GRANT CONNECT TO otel;
GRANT SELECT ON SYS.GV_$DATABASE to otel;
GRANT SELECT ON SYS.GV_$INSTANCE to otel;
GRANT SELECT ON SYS.GV_$PROCESS to otel;
GRANT SELECT ON SYS.GV_$RESOURCE_LIMIT to otel;
GRANT SELECT ON SYS.GV_$SYSMETRIC to otel;
GRANT SELECT ON SYS.GV_$SYSSTAT to otel;
GRANT SELECT ON SYS.GV_$SYSTEM_EVENT to otel;
GRANT SELECT ON SYS.V_$RMAN_BACKUP_JOB_DETAILS to otel;
GRANT SELECT ON SYS.V_$SORT_SEGMENT to otel;
GRANT SELECT ON SYS.V_$TABLESPACE to otel;
GRANT SELECT ON SYS.V_$TEMPFILE to otel;
GRANT SELECT ON SYS.DBA_DATA_FILES to otel;
GRANT SELECT ON SYS.DBA_FREE_SPACE to otel;
GRANT SELECT ON SYS.DBA_TABLESPACE_USAGE_METRICS to otel;
GRANT SELECT ON SYS.DBA_TABLESPACES to otel;
GRANT SELECT ON SYS.GLOBAL_NAME to otel;

为 Oracle 数据库配置 Ops Agent

按照配置 Ops 代理的指南,添加从 Oracle 数据库实例收集遥测所需的元素,并重启代理

配置示例

以下命令会创建配置,以收集 Oracle 数据库的遥测数据并注入遥测数据,然后重启 Ops Agent。

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    oracledb_audit:
      type: oracledb_audit
      oracle_home: /opt/oracle
    oracledb_alert:
      type: oracledb_alert
      oracle_home: /opt/oracle
  service:
    pipelines:
      oracledb:
        receivers:
          - oracledb_audit
          - oracledb_alert
metrics:
  receivers:
    oracledb:
      type: oracledb
      username: otel
      password: ora19c
      sid: ORCLCDB
      service_name: ORCLCDB
  service:
    log_level: debug
    pipelines:
      oracledb:
        receivers:
          - oracledb
EOF

sudo service google-cloud-ops-agent restart

配置日志收集

如需从 Oracle 数据库注入日志,您必须为 Oracle 数据库生成的日志创建接收器,然后为新接收器创建流水线。

如需为 oracledb_audit 日志配置接收器,请指定以下字段:

字段 默认 说明
exclude_paths [] 要从 include_paths 匹配的集合中排除的文件系统路径模式列表。
include_paths 要通过跟踪每个文件读取的文件系统路径列表。通配符可在路径中使用 (*)。不能与 oracle_home 字段一起提供。
oracle_home 环境的 ORACLE_HOME 的位置;如果提供,则会将 include_paths 设置为 $ORACLE_HOME/admin/*/adump/*.aud。不能与 include_paths 字段一起提供。
record_log_file_path false 如果设置为 true,则从中获取日志记录的特定文件的路径将作为 agent.googleapis.com/log_file_path 标签的值显示在输出日志条目中。使用通配符时,系统只会记录从中获取记录的文件的路径。
type 该值必须为 oracledb_audit
wildcard_refresh_interval 60s include_paths 中通配符文件路径的刷新间隔。指定为 time.ParseDuration 可解析的时长,例如 30s2m。该属性在高日志记录吞吐量下可能很有用,因为日志文件的轮替速度快于默认时间间隔。

如需为 oracledb_alert 日志配置接收器,请指定以下字段:

字段 默认 说明
exclude_paths [] 要从 include_paths 匹配的集合中排除的文件系统路径模式列表。
include_paths 要通过跟踪每个文件读取的文件系统路径列表。通配符可在路径中使用 (*)。不能与 oracle_home 字段一起提供。
oracle_home 环境 ORACLE_HOME 的位置(如果提供),则会将 include_paths 设置为 $ORACLE_HOME/diag/rdbms/*/*/trace/alert_*.log。不能与 include_paths 字段一起提供。
record_log_file_path false 如果设置为 true,则从中获取日志记录的特定文件的路径将作为 agent.googleapis.com/log_file_path 标签的值显示在输出日志条目中。使用通配符时,系统只会记录从中获取记录的文件的路径。
type 该值必须为 oracledb_alert
wildcard_refresh_interval 60s include_paths 中通配符文件路径的刷新间隔。指定为 time.ParseDuration 可解析的时长,例如 30s2m。该属性在高日志记录吞吐量下可能很有用,因为日志文件的轮替速度快于默认时间间隔。

记录的内容

logName 派生自配置中指定的接收器 ID。LogEntry 中的详细字段如下所示。

oracledb_alert 日志包含 LogEntry 中的以下字段:

字段 类型 说明
jsonPayload.message 字符串 日志消息
severity 字符串 (LogSeverity) 日志条目级别(已转换)

oracledb_audit 日志包含 LogEntry 中的以下字段:

字段 类型 说明
jsonPayload.action 字符串 审核日志中记录的操作
jsonPayload.action_number 数字 标识正在记录的操作的类型的数字
jsonPayload.client_terminal 字符串 发起操作的客户端终端的标识符
jsonPayload.client_user 字符串 所审核操作的客户用户
jsonPayload.database_user 字符串 受审核操作的数据库用户
jsonPayload.dbid 数字 数据库标识符
jsonPayload.length 数字 表示正在记录的操作的字符串的长度
jsonPayload.privilege 字符串 执行操作的数据库权限
jsonPayload.sessionid 数字 会话标识符
jsonPayload.status 字符串 操作的状态
jsonPayload.user_host 字符串 审核操作的来源主机
severity 字符串 (LogSeverity) 日志条目级别(已转换)

配置指标收集

如需从 Oracle 数据库注入指标,您必须为 Oracle 数据库生成的指标创建接收器,然后为新接收器创建流水线。

如需为 oracledb 指标配置接收器,请指定以下字段:

字段 默认 说明
collection_interval 60s 时长值,例如 30s5m
endpoint localhost:1521 用于连接到 Oracle 数据库实例的端点。此字段支持 host:port 或 Unix 套接字路径。
insecure true 设置是否使用安全 TLS 连接。如果设置为 false,则启用 TLS。
insecure_skip_verify false 设置是否跳过证书验证。如果 insecure 设置为 true,则不使用 insecure_skip_verify 值。
password 用于连接到实例的密码。
service_name 要监控的 Oracle 数据库的服务名称。根据需要使用此字段或 sid 字段。
sid 所监控 Oracle 数据库的 SID。根据需要使用此字段或 service_name 字段。
type 该值必须为 oracledb
username 用于连接到实例的用户名。
wallet 包含 Oracle 钱包的目录的路径,可选择用于身份验证和安全连接。

监控的内容

下表列出了 Ops Agent 从 Oracle 数据库实例收集的指标列表。

指标类型
种类、类型
受监控的资源
标签
workload.googleapis.com/oracle.backup.latest
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
workload.googleapis.com/oracle.buffer.cache.ratio
GAUGEDOUBLE
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.cursor.count
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.cursor.current
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.disk.operation.count
CUMULATIVEINT64
gce_instance
database_id
db_system
direction
global_name
instance_id
workload.googleapis.com/oracle.disk.operation.size
CUMULATIVEINT64
gce_instance
database_id
db_system
direction
global_name
instance_id
workload.googleapis.com/oracle.logon.count
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.logon.current
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.network.data
CUMULATIVEINT64
gce_instance
database_id
db_system
direction
global_name
instance_id
target
workload.googleapis.com/oracle.process.count
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.process.limit
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.process.pga_memory.size
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
program
state
workload.googleapis.com/oracle.row.cache.ratio
GAUGEDOUBLE
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.service.response_time
GAUGEDOUBLE
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.session.count
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.session.limit
GAUGEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.sort.count
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
type
workload.googleapis.com/oracle.sort.row.count
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.tablespace.count
GAUGEINT64
gce_instance
contents
database_id
db_system
global_name
status
workload.googleapis.com/oracle.tablespace.size
GAUGEINT64
gce_instance
contents
database_id
db_system
global_name
state
tablespace_name
workload.googleapis.com/oracle.user.calls
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.user.commits
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.user.rollbacks
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
workload.googleapis.com/oracle.wait.count
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
type
wait_class
workload.googleapis.com/oracle.wait.time
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
type
wait_class
workload.googleapis.com/oracle.wait.timeouts
CUMULATIVEINT64
gce_instance
database_id
db_system
global_name
instance_id
type
wait_class

示例信息中心

要查看 Oracle 数据库指标,您必须配置图表或信息中心。Cloud Monitoring 提供了一个用于集成的示例信息中心库,其中包含一些预配置的图表。如需了解如何安装这些信息中心,请参阅安装示例信息中心

验证配置

本部分介绍如何验证是否正确配置了 Oracle 数据库接收器。Ops Agent 可能需要一两分钟才会开始收集遥测数据。

如需验证日志是否已提取,请转到日志浏览器并运行以下查询以查看 Oracle 数据库日志:

resource.type="gce_instance"
(log_id("oracledb_alert") OR log_id("oracledb_audit"))

如需验证指标已注入,请前往 Metrics Explorer 并在 MQL 标签页中运行以下查询:

fetch gce_instance
| metric 'workload.googleapis.com/oracle.logon.count'
| every 1m

后续步骤

如需查看如何使用 Ansible 安装 Ops Agent、配置第三方应用和安装示例信息中心的演示,请参阅安装 Ops Agent 以排查第三方应用的问题视频。