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

Uploaded CPython 3.13Windows x86-64

wrf_rust-0.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (753.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (743.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.4-cp313-cp313-macosx_11_0_arm64.whl (677.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wrf_rust-0.2.4-cp313-cp313-macosx_10_12_x86_64.whl (686.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

wrf_rust-0.2.4-cp312-cp312-win_amd64.whl (595.9 kB view details)

Uploaded CPython 3.12Windows x86-64

wrf_rust-0.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (754.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (744.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.4-cp312-cp312-macosx_11_0_arm64.whl (677.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wrf_rust-0.2.4-cp312-cp312-macosx_10_12_x86_64.whl (686.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

wrf_rust-0.2.4-cp311-cp311-win_amd64.whl (596.1 kB view details)

Uploaded CPython 3.11Windows x86-64

wrf_rust-0.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (754.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (743.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.4-cp311-cp311-macosx_11_0_arm64.whl (680.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wrf_rust-0.2.4-cp311-cp311-macosx_10_12_x86_64.whl (690.9 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

wrf_rust-0.2.4-cp310-cp310-win_amd64.whl (596.0 kB view details)

Uploaded CPython 3.10Windows x86-64

wrf_rust-0.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (754.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (743.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.4-cp310-cp310-macosx_11_0_arm64.whl (680.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wrf_rust-0.2.4-cp310-cp310-macosx_10_12_x86_64.whl (690.8 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: wrf_rust-0.2.4.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.4.tar.gz
Algorithm Hash digest
SHA256 ee8cb83c7fd3c76df9db9a65be43088f94975f95373a40f3c8f03d85c4c27a94
MD5 4ecdbc9a6e7e9aea7c559689acf65e31
BLAKE2b-256 dc511173daf2d7fb12d535ed955af1af62ebc91e7be9349476881772adf34f9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 595.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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3ce481c2ba45dd52532e90f77ae5cb8a2f4403aee6dc43e54981fb3d44588348
MD5 f9defefdc1267de8f86adae57d08146a
BLAKE2b-256 b9933587e7805f79e952a8291b266497a8562ee7deb66274da2a73f84ea79338

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9a8c4112e62aa0451861bcd5d187c6293e6790f9f03e46563efa84931e45953
MD5 193c00445eb83d75aa846c1f4e93c174
BLAKE2b-256 e5949747a44af4569f030e846fbb86415edc9b866b25e4257f8486cc5bcc3f67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cb4a9b1b018be4567a16b518af975a7e2ed1d84a88975e799e0d186e18f19037
MD5 f9dfbb19916f55ae758551f04d6d0be7
BLAKE2b-256 1684b340a3a948438606e10218176bbf29de83ac1edd4dc5c733c9480ee0d834

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f6d1b4e2d9474140a70fd3bef0336c861494695ea22c0909fd21f27b8aa602a
MD5 9a9d2a2bde0a35b57b876e8a384455d9
BLAKE2b-256 0bcf59948e120ae1fc2a05f242935d40318f8d4af487ccec902ac62f0b51df6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 062d364cfe710ab70efa988009fe1aa80090793bf33424c9f9a4cc9307f53770
MD5 c00f198fa6fe2d13b43a34292902bee1
BLAKE2b-256 ab7ff84ec96259ead9377c41bc539a7f568b85114af7cc4beee4e91f571cbff1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 595.9 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9045e993097a369553acf4fd8a10293977c48bc17df78574ddfcf27111bfc8c8
MD5 ced1be34071e32b3980165d94b1c4aaf
BLAKE2b-256 18febda6294bf9162780c45cbc684be02ae22f9f0006bf96660429efeab05715

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0f220687fe0c4316df71f32b5df8dff3d9d8554279431ec7ac63e67b59f831e
MD5 1f2970a0e93b366c1de8db607e44201b
BLAKE2b-256 0c56544a5ad522e1e3e4fecae1ec58b82522c77edd7398935bb19e1dc15db98e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fb8a2ff3f3f30532a02950ade1ec17af9053c6e8861db760f5b3644cfd5b78e5
MD5 8499260479e5dc67470b0d8a6ac2d72f
BLAKE2b-256 fb57ed1958347e43b9d6c4c8656d34d960ca13dc263a479bb8ca93a331652e28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09e23b36cebb4cfc4496649dbecd265bc0fea790fda1316afc5d9df0f12fafae
MD5 68b2c5156714f1f3230e09971e470cfe
BLAKE2b-256 e6ba9879d4163e11ff3c3e0427b04885160329189cc4fd053a0a1b61497d0d79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f735dcf19491ed428346f437e78aa66be65160508cafff2bfb24db13986055f2
MD5 b04ef1981357cc3bd7f6827ac2726c1d
BLAKE2b-256 11b048fd027a05948fcfa39d8e01228daf8e309c6eecc0cdf4e1fd82c58905c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 596.1 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 85e823f83cdbdafa19705922bebbf34be35ec5d29132dbefcc2eee000b7caa5d
MD5 02dff8dc39387d4c99a12cb5681d457e
BLAKE2b-256 c8d707cf1f65a21abed6b7a73cbe98228ba3c2baff883043c525d143e243b2bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8e2c47a6be25d7211a9d8106cbd7bbacebd7f770e926e5ae1a2a27911e8054bd
MD5 b5184550dfa35c8a73f933a4cc53a411
BLAKE2b-256 ff6d52d95a02d2b56ea71a9d182ea6486eb766a00c29dadc14e85e0d461ac33f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd65076684cad01bd75ac3a523922976caf05de69ee7c31837d9e71ce61cab57
MD5 cf9e1321d947a18bb9a636bd15638724
BLAKE2b-256 83a61e3f6bbe483ab6a1060df764b37c051fc3089cd6f1928bbe443627831b8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 239cc595a2059b9ad54e6dd778df51dc5c99779b04a24d60f108ef6cd51ebb3a
MD5 53e9a91f88c04112702dc8d0331e9408
BLAKE2b-256 d5592a1ac98f12854e6a1d677641347415396c5bb72ab1bf5acf3eb866e2e6d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 79cca0e01f10e4f8b03939786739e17067b0ceda786a74e1d14814f8f849cc2b
MD5 6aedcd5942dd0401f19c473d4fd899d5
BLAKE2b-256 c8334cf66271a6503190082b876eff977bc5b0dbef77f15f14a203bfba7ad40e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrf_rust-0.2.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 596.0 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 21af87ecb2bf66c4062ceb7ed15506cff889dbefe96000ccef90e1581c8fa75d
MD5 4f69aa1fe5bd85ab2dcd3ff5bef1e142
BLAKE2b-256 d9ba54bada98f3225d7329dd98a31a4b06bcab3a0ab3726d2e34cf25c74c7251

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62e9e9dbbbb3a42c96ef7e2ba52c3d63ab2c32154e0e1706a792800c55918164
MD5 2db4319fa19162d58e0b8345ea09fd88
BLAKE2b-256 d698bc823f016e51a625b9fc6abf14a642f1952040eacb5133f0f04e8f69da3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4163717cc262634232483973e211da81eb90c4b88c37f6f5612007fca342c5c1
MD5 87892f1a4ebb6280191dc09d2fadf8ef
BLAKE2b-256 8b6965fcf7b6500b1d8bf8b0336b5a0e4181f25ccbbda07eaf2651ec6ebdae9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7db5db4cc11d49e6fd1bbc6264e6e4b5fda13419950735f7c6c580e72f75047e
MD5 9f6e2a6241717e59d33b2cc3df8803f3
BLAKE2b-256 e305c082f471bca58cc4c9f20663a31d611e6f7e6b2fb747dd711c930461d6fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wrf_rust-0.2.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a9134f96fe5753dd4e69f330f86582596f9611499328e1fa27e50a1c706b8455
MD5 0c4fa495ded4ded5d8290cd5b12e9d07
BLAKE2b-256 014dc1fa22264394a7a9edaa47556b81f745d0295de754044272d471a46de6d3

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