This is a simple server that scrapes GridServer reporting statistics and exports them via HTTP for Prometheus consumption. It is based on the official HAProxy Exporter.
To run it:
gridserver-exporter -u URL [flags]
Help on flags:
gridserver-exporter -h
There are three supported sources of reporting information: the GridServer reporting database, the Web Services API, and a mock data source that returns random values. The source type is specified by the schema in the url
parameter.
To use the reporting database:
gridserver-exporter -u oracle://username:password@host[:port]/sid
gridserver-exporter -u sqlserver://username:password@host[:port]/instance?database=databasename
gridserver-exporter -u postgres://username:password@host[:port]/databasename
To use the Web Services API:
gridserver-exporter -u http://username:password@host[:port][/path]
gridserver-exporter -u https://username:password@host[:port][/path]
To use the mock data source:
gridserver-exporter -u mock://
The port and path in the URLs are optional. If they are not specified, the GridServer (for Web Services) or database driver (for the reporting database) defaults will be used.
The supported GridServer reporting databases are Oracle, SQL Server and PostgreSQL. The URL scheme will determine the driver used. The database schema used will be the default for the database, but can be overridden by the schema
parameter.
gridserver-exporter -u oracle://username:password@host/sid -s schema
The Oracle support uses the godror package.
Note that the username & password are colon-separated in the "url" parameter, not slash-separated as in the godror package documentation.
gridserver-exporter -u oracle://username:password@host/sid
For Oracle specific options, see the godror Readme file.
The SQL Server support uses the go-mssqldb package.
gridserver-exporter -u sqlserver://username:password@host/instance?database=databasename
For SQL Server specific options, see the go-mssqldb Readme file.
The PostgreSQL support uses the pq package, which enables TLS by default. If the PostgreSQL server does not use TLS, it can be disabled with the sslmode
query parameter.
gridserver-exporter -u postgres://username:password@host/databasename?sslmode=disable
For PostgreSQL specific options, see the pq package documentation.
The GridServer Web Services API can be accessed over HTTP or HTTPS. The URL supplied must specify the Director, as Brokers do not support the BrokerAdmin service.
gridserver-exporter -u http://username:password@host[:port][/path]
TLS certificate validation is enabled by default. It can be disabled using the no-tls-verify
flag:
gridserver-exporter -u https://username:password@host --no-tls-verify
The mock data source is useful for testing purposes (e.g. testing Prometheus or Grafana) as it does not require a GridServer installation.
gridserver-exporter -u mock://
The godror package depends on ODPI, which has installation requirements.
The compile-time version information can be set with ldflags
:
BRANCH=$(git rev-parse --abbrev-ref HEAD)
REVISION=$(git rev-parse HEAD)
DATE=$(date +%F)
go build -ldflags "-X github.com/prometheus/common/version.Branch=$BRANCH \
-X github.com/prometheus/common/version.Revision=$REVISION \
-X github.com/prometheus/common/version.BuildDate=$DATE \
-X github.com/prometheus/common/version.BuildUser=$USER"
If the dependencies are vendored, go mod vendor
will skip the odpi
directory because it does not contain any .go files. This may be resolved with:
go get && cp -r ~/go/pkg/mod/github.com/godror/godror@v0.15.0/odpi vendor/github.com/godror/godror/godror@v0.15.0/
The once
parameter causes an immediate fetch of statistics, followed by an exit. It is useful for validating credentials and configuration options.
gridserver-exporter -u http://username:password@host --once
- The Oracle Instant Client installs signal handlers which may cause crashes when CTRL-C is entered. Adding the following flags to the
sqlnet.ora
file on the system may prevent the crashes.
DIAG_ADR_ENABLED=OFF
DIAG_DDE_ENABLED=FALSE
DIAG_SIGHANDLER_ENABLED=FALSE
- The
timeout
parameter is ignored by the SQL client functionality.
Apache License 2.0, see LICENSE.