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.3.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.3-cp313-cp313-win_amd64.whl (586.5 kB view details)

Uploaded CPython 3.13Windows x86-64

wrf_rust-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (746.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (735.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.3-cp313-cp313-macosx_11_0_arm64.whl (668.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wrf_rust-0.2.3-cp313-cp313-macosx_10_12_x86_64.whl (680.7 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

wrf_rust-0.2.3-cp312-cp312-win_amd64.whl (587.0 kB view details)

Uploaded CPython 3.12Windows x86-64

wrf_rust-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.3-cp312-cp312-macosx_11_0_arm64.whl (668.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wrf_rust-0.2.3-cp312-cp312-macosx_10_12_x86_64.whl (681.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

wrf_rust-0.2.3-cp311-cp311-win_amd64.whl (586.6 kB view details)

Uploaded CPython 3.11Windows x86-64

wrf_rust-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.3-cp311-cp311-macosx_11_0_arm64.whl (671.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wrf_rust-0.2.3-cp311-cp311-macosx_10_12_x86_64.whl (684.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

wrf_rust-0.2.3-cp310-cp310-win_amd64.whl (586.6 kB view details)

Uploaded CPython 3.10Windows x86-64

wrf_rust-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.3-cp310-cp310-macosx_11_0_arm64.whl (671.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wrf_rust-0.2.3-cp310-cp310-macosx_10_12_x86_64.whl (683.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: wrf_rust-0.2.3.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.3.tar.gz
Algorithm Hash digest
SHA256 0341822bcadc95da370ccfb78cea68fcc483747e4e13608ddfbe424c80308762
MD5 43458343c8d27dcdbfb8f529e99e79c5
BLAKE2b-256 11fe6dd3d38feca2412737aee78d218efb5d9f7ff9b3b0fce4465de44a0c89a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 586.5 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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0338a7f6ff4cb6760c2de0909227dbde1ffd9ec12a4b2d0b469ab617396bad70
MD5 3668135889e5f22f47caafaceff5be0d
BLAKE2b-256 20a1345dcd311c708f67fdad480d172edf831a2fcebcbea40fdc69642b6ab115

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 51ca7c7d5a70d243ade0349f4d3b51c5fe3a887b3f91ff923d68d8413ddef9d4
MD5 101e4c64690d45e71cb62d544da93277
BLAKE2b-256 0cf699ac336ad5bee520673fd53fbba91086efdcfca1aa0814ec66cd7925b139

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bde6b70d556e753dcd1c5faf145bddbe917fd6fb5bef4a14ffbb146b38c173e3
MD5 bbe92000ee8e7a5c3cb9f3487d6135d4
BLAKE2b-256 164192379bf844c6806e2976de174e313a8208a3f7c8f6dfa586d6f0d4429beb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ab0e2eb5edcc43b451370263549e1dc78cd18a4a666cc1df3f872d58037e44d
MD5 eff8281616823110526dbd66af84a6d6
BLAKE2b-256 a3378a466c118f3767f27e3deaa7462408d112bcc6f1493b0906b16cc59ab296

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4402ac731ae300b9af17de1f3de5706c1c8a312c4824e7c8b21e9e419c8dd8dd
MD5 630c47693692b76733809c562aea19c1
BLAKE2b-256 c40edd1b68cfc3ee6d54b15ea4c162875f6a0ee14c76145af636cf99c8f790db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 587.0 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fcace2d7c521b782440ce7141d4bfba6ba809400abe51cf8bcf6cf9a551601fc
MD5 4c24618b1cfcd0fb53ade88a918f86c9
BLAKE2b-256 35ed2d958833313cabff2bd5948bb39e03b468d9e771dde2c7ba03d2f93ba714

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d95c4b6d10d677d7e58adeb71b31f1b9505cd5c6df3cedaf4eb984970f8bb07
MD5 abe2d81c579e10ff480a47f27e2cb1d5
BLAKE2b-256 3be4a85494f12c2a193567c196b0c9ab75d9bd597919bdbe91d157d1f204c549

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27a2f5168b099759469809dcad1d7f2831e2b8f0efc5d0a97f22d9a4c0354880
MD5 258e508fc88706a2bba7f39390653d04
BLAKE2b-256 468b7bc5d16b84fb91af337b3903204f7a2ad82f53f32a511aed9581d5a11505

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f13dfaf29a9f912f9a78df993df62ce215587cafcf521bc7b26b63b35d7b723e
MD5 84174c7a38fba2233467fb299f99eec2
BLAKE2b-256 f01de434934a682172d2f0003aa1bd43e8755b0317a4c6eec78625ee564f8e88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 91045c72923241526fd5636568fe2749f41bf01f329dcfb875926512f8af8273
MD5 f8f5ad1e1047865641c834aad2c3a6bb
BLAKE2b-256 17279d917eff606cf74aab303ee1a43b7f1f98d0deb67758fd900b40fec630d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 586.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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1125bc239caabcff3553289919d9dfc71ef30e725ef63372b94d2d951ea4ea6c
MD5 a0c338c7c7e42e083f834270580114a0
BLAKE2b-256 bd6386d04b561f2668a6d722476a37daaafd87c655c058127f1d2d8f903d4715

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3b67e77729a4ff9d78a23230903e073ac79852cf3738cf1ea2a2a4b8c7744f8
MD5 494950eae3d1aa2e9e2f6c2e7f9ad894
BLAKE2b-256 87bb3ca2febd1eb84aaa38f30ae9684b2523c696363fcc83d499ea281f82a1be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 65e16442285a5aa7f89aef26080199a3c13c1004f613d86a3d29c907e3d7047f
MD5 2b97da96f5722affbfe07327f101fc8c
BLAKE2b-256 91a5dac2ee1192cad3d322aa20ba24e6715ea5879a74814c03f43777eacf2f21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06bceb177df8c33bdb326e409ebb039a02b17c8c061d511e440e78e2f242442a
MD5 43421230fbf72d842eb406e3a50f73e4
BLAKE2b-256 77a14a74009f267d1f60a971dcc1b9721a23abb38711b47b222bf1a6623896d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 298aade1830b54419737356037c9ce5cd8dec2f5481126586516a66dda3d616b
MD5 e36f48a1ffe7c78e2485a69a864d1a76
BLAKE2b-256 19bd0fb5e76cb4f39eaeb8f0f71f6f5b9d5d442763855f947602bdc80cc20efa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 586.6 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 00485cb7595bc3e0186b8446c557d1d36b1ce159a0d35ab5db62c3ece527bab0
MD5 37e6e7e7ac872e66dda41a7f219c8b0a
BLAKE2b-256 2232f9d4d702ea73455b3c40a72c137cf4e892b28aad187cdca88aceec7013a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 174554e9b4d2e6c201394fb462ac5415a5611a77f561ec76b92bc45ee6d915a6
MD5 59be89d1029e722bf6c946dca531e2dc
BLAKE2b-256 df7e44b5cba8982e575c46c46e1cb775614889a7311290a105750a10503e12c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9823c7854340f5c928f62059931ec53d1d03906b20933cdfa225bf391839cff0
MD5 2cacf2a87f4856cc58384cdeb4ff728d
BLAKE2b-256 3212a1f2933196e5e625f2f459973b0ee25a31ac156e853e4f64cd2e0c018b4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d8841de81c5f04e9cbf369514eaa729035a1f5ff85c103fa3bbc140743c39db
MD5 9b972caf5d3161b5f13b2584a1fa9712
BLAKE2b-256 64c012e455f4dd2f043f69fae667b76b9b6672725c8268e9b85e4a280d78ceca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f71a464f57cf9577f71b5b2ac6eeeccd1873625dbad358c16c1d277f17626963
MD5 0db25209ec1694390cc60fea0274190d
BLAKE2b-256 7f359e5c55719fa22440db8c40da220b24a7027599d1368513e808fa21a1568e

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