prometheus.exporter.oracledb
The prometheus.exporter.oracledb component embeds
oracledb_exporter for collecting statistics from one or more OracleDB servers.
Warning
Running more than one
prometheus.exporter.oracledbcomponent in the same Alloy process is not recommended. Prefer a single component with multipledatabaseblocks if you need to 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.If you are running on a Mac ARM platform you must set the variable
DYLD_LIBRARY_PATHto the location of where the instant client installed. 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.When you use the deprecated top-level configuration (no
databaseblocks), theconnection_stringargument is required. If that URL does not embed a username and password, the deprecated top-levelusernameandpasswordarguments apply to that single 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
To scrape several databases from one component, define one or more database blocks instead of using connection_string at the top level.
You must not set both connection_string and database blocks.
The name argument is the database name used by the exporter (for example as the database label on metrics). Each block supports the same connection string rules as the top-level connection_string, including 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 uses a prometheus.scrape component to collect metrics from prometheus.exporter.oracledb:
prometheus.exporter.oracledb "example" {
connection_string = "localhost:1521/orcl.localnet"
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>"
}
}
}Multi-database example:
prometheus.exporter.oracledb "multi" {
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>"
}
}Replace the following:
<DB_USERNAME>: The database username<DB_PASSWORD>: The password for the database user<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.