Skip to main content

Rust-powered WRF post-processing — fixes CAPE, SRH, adds 65+ variables, 5-30x faster than wrf-python

Project description

wrf-rust

Rust-powered WRF post-processing with Python bindings. 83 diagnostic variables, built-in plotting, and parallel computation.

Install

pip install wrf-rust

Pre-built wheels for Python 3.10-3.13 on Linux, macOS, and Windows. No Rust toolchain, no system libraries, no conda required.

Usage

from wrf import WrfFile, getvar

f = WrfFile("wrfout_d01_2024-06-01_00:00:00")

# Basic fields
temp = getvar(f, "temp", units="degC")
slp  = getvar(f, "slp",  units="hPa")
wspd = getvar(f, "wspd", units="knots")

# CAPE with parcel selection
sbcape = getvar(f, "sbcape")
mlcape = getvar(f, "mlcape")
mucape = getvar(f, "mucape")
sb3cap = getvar(f, "sbcape", top_m=3000)           # 0-3 km CAPE

# Custom parcel
cape = getvar(f, "cape", parcel_pressure=850,
              parcel_temperature=20, parcel_dewpoint=15)

# SRH with Bunkers storm motion
srh1 = getvar(f, "srh1")                            # 0-1 km
srh3 = getvar(f, "srh3")                            # 0-3 km
srh  = getvar(f, "srh", depth_m=1500, storm_motion=(12, 8))

# Effective inflow layer
eff_srh  = getvar(f, "effective_srh")
eff_cape = getvar(f, "effective_cape")

# Severe composites
stp     = getvar(f, "stp")                           # fixed-layer
stp_eff = getvar(f, "stp", layer_type="effective")   # effective-layer
scp     = getvar(f, "scp")
ehi     = getvar(f, "ehi", depth_m=3000)             # 0-3 km EHI

# Configurable layers
shear = getvar(f, "bulk_shear", bottom_m=1000, top_m=6000)
mw    = getvar(f, "mean_wind",  bottom_m=0, top_m=6000)
lr    = getvar(f, "lapse_rate", bottom_p=700, top_p=500)
lr_v  = getvar(f, "lapse_rate", bottom_m=0, top_m=3000, use_virtual=True)

# Lake interpolation (removes 2m artifacts over water bodies)
cape = getvar(f, "sbcape", lake_interp=1000)         # interp lakes < 1000 km2

# All timesteps
slp_all = getvar(f, "slp", timeidx=None)             # shape (nt, ny, nx)

Also accepts netCDF4.Dataset directly:

from netCDF4 import Dataset
slp = getvar(Dataset("wrfout_d01..."), "slp")

Plotting

from wrf import plot_field, plot_wind, plot_skewt, panel

plot_field(f, "sbcape")                               # auto colormap + cartopy
plot_field(f, "sbcape", style="solar7")               # Solarpower07 colormaps
plot_wind(f)                                           # wind barbs
plot_skewt(f, point=(35.0, -97.5))                    # Skew-T with hodograph
panel(f, ["sbcape", "srh1", "stp", "shear_0_6km"])   # multi-panel

# Multi-timestep with consistent scale + GIF
from wrf.plot import render_timesteps
render_timesteps(f, "sbcape", timesteps=[0,1,2,3],
                 gif=True, fixed_scale=True)

CLI

python -m wrf info  wrfout_d01_2024-06-01_00:00:00
python -m wrf stats wrfout_d01_2024-06-01_00:00:00 sbcape slp temp
python -m wrf plot  wrfout_d01_2024-06-01_00:00:00 slp -o slp.png
python -m wrf panel wrfout_d01_2024-06-01_00:00:00 sbcape srh1 stp -o severe.png

Benchmark vs wrf-python

Tested on a 199x199x79 WRF grid. All values match exactly (rel_err=0.00).

Variable wrf-python wrf-rust Speedup
Temperature 0.268s 0.004s 76x
Potential temp 0.088s 0.003s 26x
Abs. vorticity 0.173s 0.015s 11x
Relative humidity 0.353s 0.097s 4x
Precipitable water 0.224s 0.077s 3x
Reflectivity 0.494s 0.234s 2x
SLP 0.517s 0.497s 1x
Wind destagger 0.089s 0.081s 1x

Plus 17 variables wrf-python doesn't have (STP, SCP, EHI, critical angle, shear, Bunkers, lapse rates, fire indices, effective inflow layer).

Variables

83 diagnostic variables. All support units= parameter.

Thermodynamics

temp tc theta theta_e theta_w tv twb td rh

Pressure & height

pressure slp height height_agl terrain geopt omega

Moisture

pw rh2m dp2m mixing_ratio specific_humidity

CAPE & convection

sbcape sbcin mlcape mlcin mucape mucin cape cin lcl lfc el effective_cape effective_inflow cape2d cape3d

All CAPE variables support top_m for truncated integration (e.g. top_m=3000 for 3CAPE). Generic cape/cin accept parcel_type or custom parcel (parcel_pressure, parcel_temperature, parcel_dewpoint).

Wind

ua va wa wspd wdir wspd10 wdir10 uvmet uvmet10

SRH & shear

srh1 srh3 srh effective_srh shear_0_1km shear_0_6km bulk_shear mean_wind bunkers_rm bunkers_lm mean_wind_0_6km

SRH uses Bunkers Internal Dynamics method. All accept storm_motion=(u,v).

Severe composites

stp stp_fixed stp_effective scp ehi critical_angle ship bri

STP supports layer_type="effective" for the 5-term formula with MLCIN.

Radar & cloud

dbz maxdbz ctt cloudfrac uhel

Vorticity

avo pvo

Lapse rates & levels

lapse_rate_700_500 lapse_rate_0_3km lapse_rate freezing_level wet_bulb_0

Generic lapse_rate accepts bottom_m/top_m or bottom_p/top_p, plus use_virtual=True.

Fire weather

fosberg haines hdw

Parameters

Parameter Description
units Output unit conversion (every variable)
parcel_type "sb", "ml", "mu" for CAPE
parcel_pressure/temperature/dewpoint Custom parcel (hPa, degC, degC)
top_m / bottom_m Layer bounds in m AGL
top_p / bottom_p Layer bounds in hPa
depth_m SRH/EHI depth (m AGL)
storm_motion Custom (u, v) in m/s
layer_type "fixed" or "effective" for STP
use_virtual Virtual temperature for lapse rates
lake_interp Interpolate 2m fields over lakes < N km2

Building from source

Only needed for development. Users should pip install wrf-rust.

git clone https://github.com/FahrenheitResearch/wrf-rust.git
cd wrf-rust
pip install maturin
maturin develop --release

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wrf_rust-0.2.5.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wrf_rust-0.2.5-cp313-cp313-win_amd64.whl (589.2 kB view details)

Uploaded CPython 3.13Windows x86-64

wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (752.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (742.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.5-cp313-cp313-macosx_11_0_arm64.whl (670.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wrf_rust-0.2.5-cp313-cp313-macosx_10_12_x86_64.whl (684.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

wrf_rust-0.2.5-cp312-cp312-win_amd64.whl (589.7 kB view details)

Uploaded CPython 3.12Windows x86-64

wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (753.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (743.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.5-cp312-cp312-macosx_11_0_arm64.whl (670.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wrf_rust-0.2.5-cp312-cp312-macosx_10_12_x86_64.whl (684.9 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

wrf_rust-0.2.5-cp311-cp311-win_amd64.whl (589.6 kB view details)

Uploaded CPython 3.11Windows x86-64

wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (753.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (742.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.5-cp311-cp311-macosx_11_0_arm64.whl (674.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wrf_rust-0.2.5-cp311-cp311-macosx_10_12_x86_64.whl (688.3 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

wrf_rust-0.2.5-cp310-cp310-win_amd64.whl (589.5 kB view details)

Uploaded CPython 3.10Windows x86-64

wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (753.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (743.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.5-cp310-cp310-macosx_11_0_arm64.whl (674.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wrf_rust-0.2.5-cp310-cp310-macosx_10_12_x86_64.whl (688.0 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file wrf_rust-0.2.5.tar.gz.

File metadata

  • Download URL: wrf_rust-0.2.5.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.5.tar.gz
Algorithm Hash digest
SHA256 f9100c94237fd0e1517d7f2f1bafe05a2b2f819d25461358e3dccc63273977a9
MD5 cdb7192cd253b0d5a8b2a40ac0e07edf
BLAKE2b-256 5c8fc25bef85b845cbfa8a0327c0f53b2033a683a48a7fccc2499a3fe1818933

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 589.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8a0aac2ef29a5b6ac05bf342815f71e802282a95d93a021f68d745e7ac964624
MD5 8b94f8ed1441878039042fe22b7baf3a
BLAKE2b-256 4d494f203feda1c3deba01f94fe449cc978755b746f135b0c47397e70da202f0

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a9a90bc3fe03c21243f8ecad098feb5162959b93f74b97cda03121d3101769b
MD5 e9036939ae8f9d41c99d613cec3c41e5
BLAKE2b-256 987dc897cbfcc901edc92ba8ed1dd7ffa9f9175610d28b8645c68ca0ceaba0d7

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d5b678d82556c513e9a83d468c61e6bcb0e3be3c08153848024b97bb646ec519
MD5 a18941a41adb40c83f74df80ce47d455
BLAKE2b-256 84f797704964218dd756c28ebded43e6b6e68eed545e12997dd014cf10588a98

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1d6b38b0c964cbccf43f0b5d9b60f1f11209b3f29e9c905f78a92d415fbac25
MD5 8196ae91f410eafe530430868ff24ade
BLAKE2b-256 2cec92c8c19ebcffb77c3880faa6a7e77945fa6f5083d24542864a52267137ac

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 333da8f2d61e2223d92f29ff1892b14faaefae682a8bd0dc3d47af3e399d7f8e
MD5 05cd7160ceab954ac89abfe455b982e7
BLAKE2b-256 ad932d301be38953e65a7c267c89c1cefa5165a1442a822547b81764c487c78d

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 589.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d0a5c9cda5d91ea506242885e9fcd60c4ad4a542910126822d0d4787bf6e768b
MD5 c69b8509863a9f9d626edd6f4947e792
BLAKE2b-256 4d56cea68901b333c24027c10248f6d00685c496d3010646d8d42018e1dde143

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3063004d12884f25063ff3cf78d69bef112818ed23aee09ff89c204599529ac2
MD5 b5089554965a3dbfa89c0b2fe6ae09b6
BLAKE2b-256 317154d87330495703042760f99b67ca3900703163ee7a4cc76e4df970bd6581

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67996c68cfea6ec43e8975f692274e327ecbc50f20308cb59209f0912be219d2
MD5 c83f34353df621b273e3d70dcc9f8a52
BLAKE2b-256 78386c5f0fa97fc8b4711429bc8856729171d610cf8dc7d0017a894fa18eb942

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc05caa6166974b14e4b7dc0c1d609d60a11ad0b35a363daefb1ca627a8a02d2
MD5 ece38eaa46239e632b8746269c128ed0
BLAKE2b-256 94d4fbd6186aa4ba4611b24b51f038225237bb4d42ce4cae2721df62dc504e5a

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a68816aec3a9771d96bd156f3cd941a92e415dc32b7e710b7bc10c299d16276e
MD5 5cd50836bd2c3a0af233e4da1bc57513
BLAKE2b-256 ab853f19cef049930a37188189ad7ef272dee3f8efbb1686a7cee709116a3566

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 589.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f1213d9b7e8a07193e8b524794a71283081c56ac18ffd61e411658fd127adef0
MD5 d8c2e4fa03f4c3a5e48fc2aee2d7a249
BLAKE2b-256 cc8cc491ed147eb585eeb70e8137e65bedf62c10546d10ef47935bf1876368f7

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05adb75f087199449d961779f4b5aae0888d0bdcb5b0c4f88f29a5cd993f7d22
MD5 229f4c5a2b774498b33eb4b45e8ed2ba
BLAKE2b-256 30926a026a7f0468d6bed28f6a756db53c0d7c2ebb196d51d4de640c354016fd

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 630fe6d213ebcff1ab89af0238f9b85ea7b118e354c876d6705f894f78819fec
MD5 a3e447cbd5ed2c398f83da611eb59c15
BLAKE2b-256 c8233ef9afe9f1bf2ef1e43bd8617c6d7e80be17704a691245abdd9ab8a750ef

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0508e91ad5909bf308c26853e7cb1f541d5f092178df18bc99565edd40c2ee1
MD5 febd253ea2cdd2e8d878637c6391bb9a
BLAKE2b-256 3401efa4e528170097b7afe8c5ff09423b6f0079adfa428506d696b7ed566b31

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6631269f4384ef4fc4e72f25073bf2ed6906f6afd0b52e6fd7ac7747d2c62cf7
MD5 5bec03efe21b1c1e5e4cfa269b3d59ca
BLAKE2b-256 2e350da838e4c79e95f874b57f21ebf5e57ad585fecf58a82b39b810b7a6f609

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 589.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6ccc724a0b0e25090150cb41a4a7655fa1cd237aca79597cd797b3b0c37be70c
MD5 f20af09e9bd2bf4cfa36968047e0e243
BLAKE2b-256 acab43c2e616b346587522fc32e2ed04715d79182f0f3f742a97928b9ad4ec9f

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b14ce121578ca0bf4dce84d0898765ae796578050001b2794f0ec4d1b659a625
MD5 b5cee6e46ad64856d3dc7af0ed6450ea
BLAKE2b-256 deaf72a14a8d8232bc19d29ca65ce607f5580185ba48b421c2645d3108b7abfa

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd42570dc286c5f49d430b7244ebd2d57ca7a3f8441cf911c61f0ad824f3c9a5
MD5 c1ca7807ca4ae33b67a7b9d0fda98b13
BLAKE2b-256 3490cc72061055b560b86fa41346be09c49a55654c50bfea0330d349b5974623

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3550c525464edaac7d2b4a4fbd6da44a21d4eea9b598d3924d4475889c9c052
MD5 2ac9bccd1d43d7e9838c531220136165
BLAKE2b-256 ff2fd5fc8eb4157fa1774673ba6a7a639500b4b8ff8ca12281c37fdb2c762d14

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.5-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.5-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f5dcd66df869a4d1d739bf5ae9a0afe52ff99915123f4c682a6c957a688f13af
MD5 8aca2090695ff14099cedca778998a54
BLAKE2b-256 fa7fadf00a042a8ab6f373b2a642460fbce51b8bde34fabc5a44dc395f410864

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page