netatmo-exporter/README.md

78 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2018-09-01 22:29:01 +00:00
# netatmo-exporter [![Docker Build Status](https://img.shields.io/docker/build/xperimental/netatmo-exporter.svg?style=flat-square)](https://hub.docker.com/r/xperimental/netatmo-exporter/)
2017-01-08 22:41:41 +00:00
Simple [prometheus](https://prometheus.io) exporter for getting sensor values [NetAtmo](https://www.netatmo.com) sensors into prometheus.
## Installation
2018-09-01 22:29:01 +00:00
### Run docker container
The exporter is available as a Docker image: [`xperimental/netatmo-exporter`](https://hub.docker.com/r/xperimental/netatmo-exporter/)
The `latest` tag is built from the current master, tags tagged since the Docker support was added are also available as a tag in Docker.
### Build from source
2018-10-27 14:46:37 +00:00
Because this program uses the "Go Module" feature introduced in Go 1.11, you'll need at least that version of Go for building it.
2017-01-08 22:41:41 +00:00
If you have a working Go installation, getting the binary should be as simple as
```bash
2018-10-27 14:46:37 +00:00
git clone https://github.com/xperimental/netatmo-exporter
cd netatmo-exporter
make
2017-01-08 22:41:41 +00:00
```
If you want to build the exporter for a different OS or architecture, you can specify arguments to the Makefile:
```bash
# For 32-bit ARM on Linux
make GO_ARCH=arm
# For 64-bit ARM on Linux
make GO_ARCH=arm64
```
2017-01-08 22:41:41 +00:00
## NetAtmo client credentials
This application tries to get data from the NetAtmo API. For that to work you will need to create an application in the [NetAtmo developer console](https://dev.netatmo.com/apps/), so that you can get a Client ID and secret.
2017-01-08 22:41:41 +00:00
## Usage
2018-09-01 22:29:01 +00:00
```plain
2017-01-08 22:41:41 +00:00
$ netatmo-exporter --help
Usage of netatmo-exporter:
2020-06-27 16:09:04 +00:00
-a, --addr string Address to listen on. (default ":9210")
--age-stale duration Data age to consider as stale. Stale data does not create metrics anymore. (default 30m0s)
-i, --client-id string Client ID for NetAtmo app.
-s, --client-secret string Client secret for NetAtmo app.
--log-level level Sets the minimum level output through logging. (default info)
-p, --password string Password of NetAtmo account.
--refresh-interval duration Time interval used for internal caching of NetAtmo sensor data. (default 8m0s)
-u, --username string Username of NetAtmo account.
2017-01-08 22:41:41 +00:00
```
After starting the server will offer the metrics on the `/metrics` endpoint, which can be used as a target for prometheus.
### Passing secrets
You can pass credentials either via command line arguments (see next section) or by populating the following environment variables:
* `NETATMO_EXPORTER_ADDR` Address to listen on
* `NETATMO_CLIENT_ID` Client ID for NetAtmo app
* `NETATMO_CLIENT_SECRET` Client secret for NetAtmo app
* `NETATMO_CLIENT_USERNAME` Username of NetAtmo account
* `NETATMO_CLIENT_PASSWORD` Password of NetAtmo account
2020-06-27 16:09:04 +00:00
### Cached data
2020-06-27 16:09:04 +00:00
The exporter has an in-memory cache for the data retrieved from the Netatmo API. The purpose of this is to decouple making requests to the Netatmo API from the scraping interval as the data from Netatmo does not update nearly as fast as the default scrape interval of Prometheus. Per the Netatmo documentation the sensor data is updated every ten minutes. The default "refresh interval" of the exporter is set a bit below this (8 minutes), but still much higher than the default Prometheus scrape interval (15 seconds).
You can still set a slower scrape interval for this exporter if you like:
2017-01-08 22:41:41 +00:00
```yml
scrape_configs:
- job_name: 'netatmo'
scrape_interval: 90s
static_configs:
2017-03-09 11:30:54 +00:00
- targets: ['localhost:9210']
```