Skip to content

gluster/gluster-prometheus

Repository files navigation

Prometheus exporter for Gluster Metrics

Build Status

These exporters will be run on all Gluster peers, So it makes sense to collect only local metrics and aggregate in Prometheus server when required.

Install

mkdir -p $GOPATH/src/github.com/gluster
cd $GOPATH/src/github.com/gluster
git clone https://github.com/gluster/gluster-prometheus.git
cd gluster-prometheus

# Install the required dependancies.
# Hint: assumes that GOPATH and PATH are already configured.
./scripts/install-reqs.sh

PREFIX=/usr make
PREFIX=/usr make install

Usage

Run gluster-exporter with default settings, glusterd is consumable at http://localhost:9713/metrics

systemctl enable gluster-exporter
systemctl start gluster-exporter

Systemd service uses following configuration file for global and collectors related configurations.

/etc/gluster-exporter/gluster-exporter.toml
[globals]
gluster-mgmt = "glusterd"
glusterd-dir = "/var/lib/glusterd"
gluster-binary-path = "gluster"
# If you want to connect to a remote gd1 host, set the variable gd1-remote-host
# However, using a remote host restrict the gluster cli to read-only commands
# The following collectors won't work in remote mode : gluster_volume_counts, gluster_volume_profile
#gd1-remote-host = "localhost"
gd2-rest-endpoint = "http://127.0.0.1:24007"
port = 9713
metrics-path = "/metrics"
log-dir = "/var/log"
log-file = "gluster-exporter.log"
log-level = "info"

[collectors.gluster_ps]
name = "gluster_ps"
sync-interval = 5
disabled = false

[collectors.gluster_brick]
name = "gluster_brick"
sync-interval = 5
disabled = false

To use gluster-exporter without systemd,

gluster-exporter --config=/etc/gluster-exporter/gluster-exporter.toml

Metrics

List of supported metrics are documented here.

Adding New metrics

glusterCPUPercentage = prometheus.NewGaugeVec(
    prometheus.GaugeOpts{
        Namespace: "gluster",
        Name:      "cpu_percentage",
        Help:      "CPU Percentage used by Gluster processes",
    },
    []string{"volume", "peerid", "brick_path"},
)
  • Implement the function to gather data, and register to gather data in required interval

prometheus.MustRegister(glusterCPUPercentage)

registerMetric("gluster_brick", brickUtilization)
  • Add an entry in /etc/gluster-exporter/gluster-exporter.toml

[collectors.gluster_ps]
name = "gluster_ps"
sync-interval = 5
disabled = false
  • Thats it! Exporter will run these registered metrics.