8398a7 / remo-exporter

Prometheus Nature Remo Exporter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Prometheus Nature Remo Exporter

CircleCI codecov

Exposes Nature Remo devices metrics to Prometheus.

Configuration

This exporter is configurable via environment variables:

Required

Either OAUTH_TOKEN_FILE (recommended) or OAUTH_TOKEN should be set.

  • OAUTH_TOKEN_FILE The path to the file where the OAuth token is stored. Usually you will mount a secret here.
  • OAUTH_TOKEN The OAuth token to be used for requests. Get one from here

Optional

  • METRICS_PATH The metrics URL path. Default /metrics.
  • API_BASE_URL The Remo API base URL. Default https://api.nature.global.
  • PORT The port to be used by the exporter. Default 9352.
  • CACHE_INVALIDATION_SECONDS This exporter caches results for this perios of seconds. Default 60.

Metrics

The following is a sample metrics you can get from this exporter:

# HELP remo_humidity The humidity of the remo device
# TYPE remo_humidity gauge
remo_humidity{id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",name="Living Remo"} 50
# HELP remo_illumination The illumination of the remo device
# TYPE remo_illumination gauge
remo_illumination{id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",name="Living Remo"} 141.8
# HELP remo_temperature The temperature of the remo device
# TYPE remo_temperature gauge
remo_temperature{id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",name="Living Remo"} 28.2
# HELP remo_motion The motion of the remo device
# TYPE remo_motion gauge
remo_motion{id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",name="Living Remo"} 1.568608471e+09

Usage

docker-compose

There's a sample docker-compose.yml to be used to test this exporter with prometheus and grafana. Hit the command below:

REMO_OAUTH_TOKEN=<YOUR_OAUTH_TOKEN> docker-compose up

Swarm

Create a secret for the oauth token

Create a file which contains the oauth token.(e.g. token-file )

# token-file (be sure not to contain a new line!)
<YOUR-OAUTH-TOKEN>

Create the secret

docker secret create api-keys token-file

Deploy the stack

./swarm/deploy_stack.sh

Access the metrics

The following is an example url for the NodePort(30352):

http://localhost:9352/metrics

Kubernetes

Prepare namespace

# This creates a remo namespace
kubectl apply -f k8s/namespace.yaml

Create a secret for the oauth token

Create a file which contains the oauth token.(e.g. api-keys )

# api-keys (be sure not to contain a new line!)
<YOUR-OAUTH-TOKEN>

Create the secret

kubectl -n remo create secret generic api-keys --from-file=api-keys

Deploy

# deploy common resources
kubectl apply -f ./k8s/yaml

# if arch is amd64
kubectl apply -f ./k8s/yaml-amd64

# if arch if armhf
kubectl apply -f ./k8s/yaml-armhf

Access the metrics

The following is an example url for the NodePort(30352):

http://localhost:30352/metrics

Grafana

The following is what it would look like with integration with Grafana:

Grafana

Development

Creating mocks

This project uses mockgen to create mocks. The following is an example of creating mocks.

mockgen -source ./config/reader.go -destination ./mocks/reader.go -package mocks

About

Prometheus Nature Remo Exporter


Languages

Language:Go 87.3%Language:Shell 11.7%Language:Dockerfile 1.0%