The Oracle DB integration collects Oracle DB metrics and logs. The metrics are collected by querying relevant monitoring views. This integration writes structured trace logs.
For more information about Oracle DB, see the Oracle Database documentation.
Prerequisites
To collect Oracle DB telemetry, you must install the Ops Agent on a supported operating system:
- For metrics, install version 2.22.0 or higher.
- For logs, install version 2.22.0 or higher.
This integration supports Oracle DB versions 12.2, 18c, 19c, and 21c running on Compute Engine instances. It doesn't support Oracle RAC or OCI configurations.
Configure your Oracle DB instance
To collect metrics, a monitoring user requires SELECT access to the relevant views. The following sql
script should create a monitoring user and give it the appropriate permissions if executed by
a user with sufficient permissions connected to the Oracle DB instance as SYSDBA or SYSOPER.
-- 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;
Configure the Ops Agent for Oracle DB
Following the guide to Configure the Ops Agent, add the required elements to collect telemetry from Oracle DB instances, and restart the agent.
Example configuration
The following commands create the configuration to collect and ingest telemetry for Oracle DB:
For these changes to take effect, you must restart the Ops Agent:
Linux
- To restart the agent, run the following command on your instance:
sudo systemctl restart google-cloud-ops-agent
- To confirm that the agent restarted, run the following command and
verify that the components "Metrics Agent" and "Logging Agent" started:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- Connect to your instance using RDP or a similar tool and login to Windows.
- Open a PowerShell terminal with administrator privileges by right-clicking the PowerShell icon and selecting Run as Administrator
- To restart the agent, run the following PowerShell command:
Restart-Service google-cloud-ops-agent -Force
- To confirm that the agent restarted, run the following command and
verify that the components "Metrics Agent" and "Logging Agent" started:
Get-Service google-cloud-ops-agent*
Configure logs collection
To ingest logs from Oracle DB, you must create a receiver for the logs that Oracle DB produces and then create a pipeline for the new receiver.
To configure a receiver for your oracledb_audit logs, specify the following
fields:
| Field | Default | Description |
|---|---|---|
exclude_paths |
A list of filesystem path patterns to exclude from the set matched by include_paths. |
|
include_paths |
A list of filesystem paths to read by tailing each file. A wild card (*) can be used in the paths. Cannot be provided with the oracle_home field. |
|
oracle_home |
Location of the ORACLE_HOME for the environment, when provided it sets the include_paths to $ORACLE_HOME/admin/*/adump/*.aud. Cannot be provided with the include_paths field. |
|
record_log_file_path |
false |
If set to true, then the path to the specific file from which the log record was obtained appears in the output log entry as the value of the agent.googleapis.com/log_file_path label. When using a wildcard, only the path of the file from which the record was obtained is recorded. |
type |
This value must be oracledb_audit. |
|
wildcard_refresh_interval |
60s |
The interval at which wildcard file paths in include_paths are refreshed. Given as a time duration, for example 30s or 2m. This property might be useful under high logging throughputs where log files are rotated faster than the default interval. |
To configure a receiver for your oracledb_alert logs, specify the following
fields:
| Field | Default | Description |
|---|---|---|
exclude_paths |
A list of filesystem path patterns to exclude from the set matched by include_paths. |
|
include_paths |
A list of filesystem paths to read by tailing each file. A wild card (*) can be used in the paths. Cannot be provided with the oracle_home field. |
|
oracle_home |
Location of the ORACLE_HOME for the environment, when provided it sets the include_paths to $ORACLE_HOME/diag/rdbms/*/*/trace/alert_*.log. Cannot be provided with the include_paths field. |
|
record_log_file_path |
false |
If set to true, then the path to the specific file from which the log record was obtained appears in the output log entry as the value of the agent.googleapis.com/log_file_path label. When using a wildcard, only the path of the file from which the record was obtained is recorded. |
type |
The value must be oracledb_alert. |
|
wildcard_refresh_interval |
60s |
The interval at which wildcard file paths in include_paths are refreshed. Given as a time duration, for example 30s or 2m. This property might be useful under high logging throughputs where log files are rotated faster than the default interval. |
What is logged
The logName is derived from
the receiver IDs specified in the configuration. Detailed fields inside the
LogEntry
are as follows.
The oracledb_alert logs contain the following fields in the LogEntry:
| Field | Type | Description |
|---|---|---|
jsonPayload.message |
string | Log message |
severity |
string (LogSeverity) |
Log entry level (translated). |
The oracledb_audit logs contain the following fields in the LogEntry:
| Field | Type | Description |
|---|---|---|
jsonPayload.action |
string | Action being logged in the audit log |
jsonPayload.action_number |
number | Number identifying the type of action being logged |
jsonPayload.client_terminal |
string | Identifier of the client terminal where the action originated |
jsonPayload.client_user |
string | Client user for the audited action |
jsonPayload.database_user |
string | Database user for the audited action |
jsonPayload.dbid |
number | Database identifier |
jsonPayload.length |
number | Length of the string representing the action being logged |
jsonPayload.privilege |
string | Database privilege the action was executed under |
jsonPayload.sessionid |
number | Session identifier |
jsonPayload.status |
string | Status of the action |
jsonPayload.user_host |
string | Host where the audited action originated |
severity |
string (LogSeverity) |
Log entry level (translated). |
Configure metrics collection
To ingest metrics from Oracle DB, you must create a receiver for the metrics that Oracle DB produces and then create a pipeline for the new receiver.
This receiver does not support the use of multiple instances in the configuration, for example, to monitor multiple endpoints. All such instances write to the same time series, and Cloud Monitoring has no way to distinguish among them.
To configure a receiver for your oracledb metrics, specify the following
fields:
| Field | Default | Description |
|---|---|---|
collection_interval |
60s |
A time duration value, such as 30s or 5m. |
endpoint |
localhost:1521 |
The endpoint used to connect to the oracle DB instance. This field supports either host:port or a Unix socket path. |
insecure |
true |
Sets whether or not to use a secure TLS connection. If set to false, then TLS is enabled. |
insecure_skip_verify |
false |
Sets whether or not to skip verifying the certificate. If insecure is set to true, then the insecure_skip_verify value is not used. |
password |
The password used to connect to the instance. | |
service_name |
The Service Name of the Oracle database being monitored. Use this field or the sid field as appropriate. |
|
sid |
The SID of the Oracle database being monitored. Use this field or the service_name field as appropriate. |
|
type |
This value must be oracledb. |
|
username |
The username used to connect to the instance. | |
wallet |
Path to the directory containing the oracle wallet optionally used for authentication and securing connections. |
What is monitored
The following table provides the list of metrics that the Ops Agent collects from the Oracle DB instance.
| Metric type | |
|---|---|
| Kind, Type Monitored resources |
Labels |
workload.googleapis.com/oracle.backup.latest
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemglobal_name
|
workload.googleapis.com/oracle.buffer.cache.ratio
|
|
GAUGE, DOUBLEgce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.cursor.count
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.cursor.current
|
|
GAUGE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.disk.operation.count
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemdirectionglobal_nameinstance_id
|
workload.googleapis.com/oracle.disk.operation.size
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemdirectionglobal_nameinstance_id
|
workload.googleapis.com/oracle.logon.count
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.logon.current
|
|
GAUGE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.network.data
|
|
CUMULATIVE, INT64gce_instance |
database_iddb_systemdirectionglobal_nameinstance_idtarget
|
workload.googleapis.com/oracle.process.count
|
|
GAUGE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.process.limit
|
|
GAUGE, INT64gce_instance |
database_iddb_systemglobal_nameinstance_id
|
workload.googleapis.com/oracle.process.pga_memory.size
|
|