Crates.io | prometheus-weathermen |
lib.rs | prometheus-weathermen |
version | |
source | src |
created_at | 2023-01-09 03:46:00.254083 |
updated_at | 2024-10-31 00:05:42.656522 |
description | A prometheus exporter for weather data from various weather APIs |
homepage | |
repository | https://github.com/lstrojny/prometheus-weathermen |
max_upload_size | |
id | 754082 |
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` |
size | 0 |
“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.
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 celsiusweather_relative_humidity_ratio
: Humidify ratio (0.0 to 1.0)weather_station_distance_meters
: Distance of the weather station in metersThe 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.
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
.
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.
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
.
This project is distributed under either: