Skip to content

Prometheus Exporter for Open Virtual Switch (OVS)

License

Notifications You must be signed in to change notification settings

greenpau/ovs_exporter

Repository files navigation

Open Virtual Switch (OVS) Exporter

Export Open Virtual Switch (OVS) data to Prometheus.

Introduction

This exporter exports metrics from the following OVS components:

  • OVS vswitchd service
  • Open_vSwitch database
  • OVN ovn-controller service

Getting Started

Run the following commands to install it:

wget https://github.com/greenpau/ovs_exporter/releases/download/v1.0.4/ovs-exporter-1.0.4.linux-amd64.tar.gz
tar xvzf ovs-exporter-1.0.4.linux-amd64.tar.gz
cd ovs-exporter*
./install.sh
cd ..
rm -rf ovs-exporter-1.0.4.linux-amd64*
systemctl status ovs-exporter -l
curl -s localhost:9475/metrics | grep server_id

Run the following commands to build and test it:

cd $GOPATH/src
mkdir -p github.com/greenpau
cd github.com/greenpau
git clone https://github.com/greenpau/ovs_exporter.git
cd ovs_exporter
make
make qtest

Exported Metrics

Metric Meaning Labels
ovs_up Is OVS stack up (1) or is it down (0). system_id

For example:

$ curl localhost:9475/metrics | grep ovn
# HELP ovs_up Is OVS stack up (1) or is it down (0).
# TYPE ovs_up gauge
ovs_up 1

Flags

./bin/ovs-exporter --help

Development Notes

Run the following command to build arm64:

make BUILD_OS="linux" BUILD_ARCH="arm64"

Next, package the binary:

make BUILD_OS="linux" BUILD_ARCH="arm64" dist

After a successful release, upload packages to Github:

owner=$(cat .git/config  | egrep "^\s+url" | cut -d":" -f2 | cut -d"/" -f1)
repo=$(cat .git/config  | egrep "^\s+url" | cut -d":" -f2 | cut -d"/" -f2 | sed 's/.git$//')
tag="v$(< VERSION)"
github_api_token="PASTE_TOKEN_HERE"
filename="./dist/${repo}-$(< VERSION).linux-amd64.tar.gz"
upload-github-release-asset.sh github_api_token=${github_api_token} owner=${owner} repo=${repo} tag=${tag} filename=dist/ovs-exporter-$(< VERSION).linux-amd64.tar.gz
upload-github-release-asset.sh github_api_token=${github_api_token} owner=${owner} repo=${repo} tag=${tag} filename=dist/ovs-exporter-$(< VERSION).linux-arm64.tar.gz