prometheus-weathermen

Crates.ioprometheus-weathermen
lib.rsprometheus-weathermen
version
sourcesrc
created_at2023-01-09 03:46:00.254083
updated_at2024-10-31 00:05:42.656522
descriptionA prometheus exporter for weather data from various weather APIs
homepage
repositoryhttps://github.com/lstrojny/prometheus-weathermen
max_upload_size
id754082
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Lars Strojny (lstrojny)

documentation

README

Prometheus Weathermen Build Pipeline crates.io

“You don't need a weatherman to know which way the wind blows”
       — Bob Dylan, Subterranean Homesick Blues

A prometheus exporter endpoint for weather data or my excuse to do some Rust for real.

What it does

Provides a Prometheus metrics endpoint on <host>:36333/metrics and serves the following metrics for configured location from each configured provider:

  • weather_temperature_celsius: Temperature in celsius
  • weather_relative_humidity_ratio: Humidify ratio (0.0 to 1.0)
  • weather_station_distance_meters: Distance of the weather station in meters

Supported providers

The following services are implemented as providers. Each configured provider is queried for weather information.

Provider Resolution Coverage Supports humidity Supports distance Registration required
Meteoblue High Worldwide Yes
OpenWeather Medium Worldwide Yes
tomorrow.io High Worldwide Yes
Deutscher Wetterdienst Medium Germany No
Open-Meteo High Worldwide No

You need to register an account for those providers that require an API key.

Installation

Pre-built containers

Readymade containers are available for linux/amd64, linux/arm64 and linux/arm/v7. Download weathermen.toml.dist to weathermen.toml into the current folder and adjust the configuration.

This is how to run the container using Docker:

docker run -p 36333:36333 \
    -v $(pwd)/weathermen.toml:/etc/prometheus-weathermen/weathermen.toml \
    lstrojny/prometheus-weathermen:latest

The container is also available from the GitHub container registry via ghcr.io/lstrojny/prometheus-weathermen.

Pre-built binaries

Go to the latest release and download the appropriate binary for your platform.

The following platforms are supported:

Platform Use case
arm-linux 32 bit armhf, e.g. Raspberry Pi
arm64-linux 64 bit arm, Raspberry Pi 4
x86_64-linux 64 bit X86 architecture for Linux
intel-mac Intel based Macs
arm-mac M1/M2 based ARM Macs

Please open an issue if your favorite platform is missing. It’s probably not terribly much work to get it going.

There are dbg (debug) variants of the binaries. These are unstripped debug builds. If you don’t know what that is, you don’t want it.

For the Linux builds, static variants based on musl libc are available. These are statically linked binaries that can be used to run prometheus-weathermen in a container with minimal fuzz. The non-static counterparts for Linux are build against glibc.

Configuration

Check weathermen.toml.dist for configuration options.

Configuration values can also be set from environment variables with the prefix PROMW_. For example, to set the HTTP port from an environment variable, use PROMW_HTTP__PORT=12345. The double underscore is not a typo, it is necessary to disambiguate hierarchy from name. Assume this TOML config:

[provider.open_weather]
api_key = "XYZ"

The corresponding env variable would be PROMW_PROVIDER__OPEN_WEATHER__API_KEY.

License

This project is distributed under either:

Commit count: 1517

cargo fmt