Expand description
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 metadatanws_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 | lessThis 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_exporter 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']