prometheus.exporter.oracledb
The prometheus.exporter.oracledb component embeds
oracledb_exporter for collecting statistics from one or more OracleDB servers.
Warning
Don’t run more than one
prometheus.exporter.oracledbcomponent in the same Alloy process. Configure one component with multipledatabaseblocks when you scrape more than one database.
Ensure you have the following:
- Oracle Instant Client Basic installed on the system running Alloy
- Appropriate environment variables configured for Oracle Client libraries
Oracle instant client basic
When you run the standalone binary, you must install the Oracle Instant Client Basic for your operating system. The exporter only requires the basic version.
Note
You must also provide Oracle Instant Client Basic when you run Alloy in Docker or Kubernetes. The
prometheus.exporter.oracledbcomponent relies on Oracle Instant Client libraries that are available in the container image or host environment.For macOS on Apple silicon, set
DYLD_LIBRARY_PATHto the directory where you installed the Oracle Instant Client libraries. For exampleexport DYLD_LIBRARY_PATH=/lib/oracle/instantclient_23_3.
Environment variables
Set the following environment variables for Oracle Client library access:
- Linux: Set
LD_LIBRARY_PATHto the Oracle Instant Client library directory - macOS (ARM): Set
DYLD_LIBRARY_PATHto the Oracle Instant Client library directory ORACLE_BASE(optional): Base directory for Oracle installationsORACLE_HOME(optional): Location of the Oracle Instant Client installationTNS_ADMIN(optional): Location of your Oracle wallet directory when using wallet authentication
Database user permissions
The database user specified in the connection string must have permissions to query Oracle system views.
The user requires the SELECT_CATALOG_ROLE role, or SELECT privilege on specific system views.
Refer to the Oracle AI Database Metrics Exporter Installation guide for the complete list of required permissions.
Usage
prometheus.exporter.oracledb "<LABEL>" {
connection_string = "<CONNECTION_STRING>"
}Arguments
You can use the following arguments with prometheus.exporter.oracledb:
Note
The top-level
connection_string,usernameandpasswordarguments are deprecated. Use thedatabaseblock instead.If you keep the deprecated top-level configuration and omit
databaseblocks, you must setconnection_string. If the URL doesn’t embed a username and password, set the deprecated top-levelusernameandpasswordarguments for that target only.
Refer to the oracledb_exporter repository for examples of TOML metrics files.
For backward compatibility, you can still provide the username and password arguments in the connection_string argument:
oracle://user:pass@host:port/service_name[?OPTION1=VALUE1[&OPTIONn=VALUEn]...]If the connection_string argument doesn’t contain the username and password, you must provide the username and password arguments.
In this case, the URL must have the format:
host:port/service_name[?OPTION1=VALUE1[&OPTIONn=VALUEn]...]Multiple databases
When you scrape several databases from one component, define one or more database blocks instead of a top-level connection_string.
You must not set both connection_string and database blocks.
The exporter uses the name argument as the database name in metrics, for example in the database label.
Each block supports the same connection string rules as the top-level connection_string, with optional per-block username and password.
Blocks
database
The database block configures a single Oracle target when using multi-database mode.
The name argument identifies this database in the exporter configuration and must be unique within the component.
Exported fields
The following fields are exported and can be referenced by other components.
For example, the targets can either be passed to a discovery.relabel component to rewrite the targets’ label sets or to a prometheus.scrape component that collects the exposed metrics.
The exported targets use the configured in-memory traffic address specified by the run command.
Component health
prometheus.exporter.oracledb is only reported as unhealthy if given an invalid configuration.
In those cases, exported fields retain their last healthy values.
Debug information
prometheus.exporter.oracledb doesn’t expose any component-specific debug information.
Debug metrics
prometheus.exporter.oracledb doesn’t expose any component-specific debug metrics.
Example
The following example collects metrics from two Oracle databases:
prometheus.exporter.oracledb "example" {
database {
name = "primary"
connection_string = "db-primary.example.com:1521/ORCL"
username = "<DB_USERNAME>"
password = "<DB_PASSWORD>"
}
database {
name = "standby"
connection_string = "db-standby.example.com:1521/ORCL"
username = "<DB_USERNAME>"
password = "<DB_PASSWORD>"
}
}
// Configure a prometheus.scrape component to collect oracledb metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.oracledb.example.targets
forward_to = [prometheus.remote_write.demo.receiver]
}
prometheus.remote_write "demo" {
endpoint {
url = "<PROMETHEUS_REMOTE_WRITE_URL>"
basic_auth {
username = "<USERNAME>"
password = "<PASSWORD>"
}
}
}Replace the following:
<DB_USERNAME>: The username for the Oracle database.<DB_PASSWORD>: The password for the Oracle database.<PROMETHEUS_REMOTE_WRITE_URL>: The URL of the Prometheusremote_writecompatible server to send metrics to.<USERNAME>: The username to use for authentication to theremote_writeAPI.<PASSWORD>: The password to use for authentication to theremote_writeAPI.
Compatible components
prometheus.exporter.oracledb has exports that can be consumed by the following components:
- Components that consume Targets
Note
Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.