nws_exporter 0.4.0

Prometheus metrics exporter for api.weather.gov
Documentation

nws_exporter

build status docs.rs crates.io

Prometheus metrics exporter for api.weather.gov

Features

nws_exporter fetches weather information for a particular NWS station using the api.weather.gov API and emits it as Prometheus metrics. Users must pick a particular station to fetch weather information from. The following metrics are emitted when available (not all fields are available for all stations).

  • nws_station{station=$STATION, station_id=$STATION_ID, station_name=$STATION_NAME} - Station metadata
  • nws_elevation_meters{station=$STATION} - Elevation of the station, in meters.
  • nws_temperature_degrees{station=$STATION} - Temperature, in degrees celsius.
  • nws_dewpoint_degrees{station=$STATION} - Dewpoint, in degrees celsius.
  • nws_barometric_pressure_pascals{station=$STATION} - Barometric pressure, in pascals.
  • nws_visibility_meters{station=$STATION} - Visibility, in meters.
  • nws_relative_humidity{station=$STATION} - Relative humidity (0-100).
  • nws_wind_chill_degrees{station=$STATION} - Temperature with wind chill, in degrees celsius.

Build

nws_exporter is a Rust program and must be built from source using a Rust toolchain.

Build from source

If you want to build from the latest code in the nws_exporter repo, you can build using the following steps.

git clone git@github.com:56quarters/nws_exporter.git && cd nws_exporter
cargo build --release

Install via cargo

After you have a Rust toolchain, you can also install the latest release directly via cargo install

cargo install nws_exporter

Usage

Picking a station

In order to export NWS forecast information, nws_exporter needs to be told which NWS station to request information for. You can get a list of the available stations in your state by using the API itself. An example of this using curl is below.

curl -sS 'https://api.weather.gov/stations?state=MA' | jq | less

This command lists all available stations in the state of Massachusetts. The properties.stationIdentifier field for each station is the ID that you should use with nws_exporter. For example KBOS is the ID for the station at Logan Airport in Boston.

You can then run nws_exporter for this station as demonstrated below.

./nws_exporterg KBOS

Run

You can run nws_exporter as a Systemd service using the provided unit file. This unit file assumes that you have copied the resulting nws_exporter binary to /usr/local/bin/nws_exporter. Make sure to edit the unit file to use a station near you that you picked in the previous step.

sudo cp target/release/nws_exporter /usr/local/bin/nws_exporter
sudo cp ext/nws_exporter.service /etc/systemd/system/nws_exporter.service
sudo sed -i 's/KBOS/YOUR_STATION/' /etc/systemd/system/nws_exporter.service
sudo systemctl daemon-reload
sudo systemctl enable nws_exporter.service
sudo systemctl start nws_exporter.serivce

Prometheus

Prometheus metrics are exposed on port 9782 at /metrics. Once nws_exporter is running, configure scrapes of it by your Prometheus server. Add the host running nws_exporter as a target under the Prometheus scrape_configs section as described by the example below.

# Sample config for Prometheus.

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  external_labels:
    monitor: 'my_prom'

scrape_configs:
- job_name: nws_exporter
  static_configs:
  - targets: ['example:9782']

License

nws_exporter is available under the terms of the GPL, version 3.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.