Skip to content

richardwilko/solace_exporter

 
 

Repository files navigation

solace_exporter, a Prometheus Exporter for Solace Message Brokers

Disclaimer

This exporter is not developed and maintained by Solace.
It can be used as-is or as a basis for development of customer specific exporters for Solace brokers.
It is currently only tested against PubSub+ software brokers (VMRs), not appliances.

Features

The exporter is written in go, based on the Solace Legacy SEMP protocol.
It implements the following endpoints:

http://<host>:<port>/             Document page showing list of endpoints
http://<host>:<port>/metrics      Golang and standard Prometheus metrics
http://<host>:<port>/solace-std   Solace metrics for System and VPN levels
http://<host>:<port>/solace-det   Solace metrics for Messaging Clients and Queues

The registered default port for Solace is 9628

Usage

solace_exporter -h
usage: solace_exporter [<flags>]

Flags:
  -h, --help                     Show context-sensitive help (also try --help-long and --help-man).
      --log.level=info           Only log messages with the given severity or above. One of: [debug, info, warn, error]
      --log.format=logfmt        Output format of log messages. One of: [logfmt, json]
      --config-file=CONFIG-FILE  Path and name of config file. See sample file solace_exporter.ini.

The configuration parameters can be placed into a config file or into a set of environment variables. For Docker you should prefer the environment variable configuration method (see below).
If the exporter is started with a config file argument then the config file entries have precedence over the environment variables. If a parameter is neither found in the config file nor in the environment the exporter exits with an error.

Config File

solace_exporter --config-file /path/to/config/file.ini

Sample config file:

[solace]
# Address to listen on for web interface and telemetry.
listenAddr=0.0.0.0:9628

# Base URI on which to scrape Solace broker.
scrapeUri=http://localhost:8080

# Basic Auth username for http scrape requests to Solace broker.
username=admin

# Basic Auth password for http scrape requests to Solace broker.
password=admin

# Timeout for http scrape requests to Solace broker.
timeout=5s

# Flag that enables SSL certificate verification for the scrape URI.
sslVerify=false

# Flag that enables scrape of redundancy metrics. Should be used for broker HA groups.
redundancy=false

Environment Variables

Sample environment variables:

SOLACE_LISTEN_ADDR=0.0.0.0:9628
SOLACE_SCRAPE_URI=http://localhost:8080
SOLACE_USERNAME=admin
SOLACE_PASSWORD=admin
SOLACE_TIMEOUT=5s
SOLACE_SSL_VERIFY=false
SOLACE_REDUNDANCY=false

Build

Default Build

cd <some-directory>/solace_exporter
go build

Docker

Build Docker Image

A build Dockerfile is included in the repository.
This is used to automatically build and push the latest image to the Dockerhub repository dabgmx/solace-exporter

Run Docker Image

Environment variables are recommended to parameterize the exporter in Docker.
Put the following parameters, adapted to your situation, into a file on the local host, e.g. env.txt:

SOLACE_LISTEN_ADDR=0.0.0.0:9628
SOLACE_SCRAPE_URI=http://localhost:8080
SOLACE_USERNAME=admin
SOLACE_PASSWORD=admin
SOLACE_TIMEOUT=5s
SOLACE_SSL_VERIFY=false
SOLACE_REDUNDANCY=false

Then run

docker run -d \
 -p 9628:9628 \
 --env-file env.txt \
 --name solace-exporter \
 dabgmx/solace-exporter

Bonus Material

The sub directory testfiles contains some sample curl commands and their outputs. This is just fyi and not needed for building.

About

Prometheus Solace Exporter

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.1%
  • Dockerfile 1.9%