This presentation has been created with
Reveal.js by Hakim El Hattab
Create beautiful interactive slide decks using HTML.
Use left/right arrow keys. ESC for slides overview
PDF Print then File|Print... (Chrome only)
Just van den Broecke
- Core contributor GeoHealthCheck
- GeoQoS - hosted GeoHealthCheck
- Map5.nl - online maps
- Chair OSGeo.nl Dutch Local Chapter
- Founder of pycsw
- Founder of GeoHealthCheck
Hannes Isaak Reuter
- Geoecologist (GIS, Soil) and DEM Scientist
- Contributor to GHC and other OSS
- Long Term user of ArcInfo, QGIS, GDAL, Python, pyWPS
OGC ? OWS?
- OGC defines OWS standards
- OWS standards include:
WMS, WFS, WCS, CSW, SOS, WPS, WMTS
OWS Monitoring Challenges
But our HTTP Monitor said:
GetCapabilities response OK,
- Capabilities doc may be static file
- No guarantee specific services will work:
WMS GetMap, WFS GetFeature, ...
Time-based OGC Services
- SensorWeb Enablement (SWE)
Internet of Things (IoT)
- Sensor Observation Service (SOS)
- SensorThings API (STA)
Public "Uptime" services
Generic HTTP checking (keywords)
But: most critical OGC-services
run internally on intranets
Need (FOSS) OGC-Service (OWS)
with History Capture
Root Cause Analysis
- Python Webapp (Dashboard)
- HealthCheck Runner (Plugins!)
- Flask - web framework
- Standard Python WGSI
- Run w Nginx, Apache2, Gunicorn..
- Preferred: via Docker!
- Scheduled (cron)
- Run "Probes" and "Checks"
- Result reporting
- Notifications: email, webhook
Plugins - Probes and Checks
- Standard (included in GHC)
- Custom (include your own!)
- Configurable via Web UI
- More later on...
Users, Resources, Runs, Tags
ProbeVars, CheckVars, Recipients
- Maintains history (Runs)
- Multiple backends
via SQLAlchemy: default SQLite
- For grouping Resources
- Provide in UI
- More later on...
- Standard Python setup - Instructions
- Paver for setup and management tasks
- Alembic with Flask-Migrate
for DB upgrades
complete stack: Webapp, DB and Jobs
GHC Up & Running in minutes!!
GHC_RETENTION_DAYS = 30
GHC_RUN_FREQUENCY = 'hourly'
GHC_SELF_REGISTER = False
GHC_NOTIFICATIONS = False
GHC_NOTIFICATIONS_VERBOSITY = True
GHC_ADMIN_EMAIL = 'firstname.lastname@example.org'
GHC_NOTIFICATIONS_EMAIL = ['email@example.com', ..]
GHC_SITE_TITLE = 'GeoHealthCheck Demonstration'
GHC_SITE_URL = 'http://host'
GHC_SMTP = (email settings)
GHC_RELIABILITY_MATRIX = (when to show green/orange/red)
GHC_MAP = (map setup)
GHC_PLUGINS = (Built-in Probes and Checks)
GHC_USER_PLUGINS = (Probes and Checks, YOURS!)
GHC_PROBE_DEFAULTS = (Default Probe per Resource Type)
- Resource has URL
- URL is usually OWS Endpoint
- Probes: fire request(s) on URL
- Resource has N Probes
- Probe has N Checks (checklist)
- Each Check checks Probe result aspect
- Check gives aspect verdict (success/fail)
- All Checks: Probe Run Report (JSON)
- Probes and Checks are Plugins
- Plugin class and/or modules in config
* Built-in Plugins: GHC_PLUGINS=
* Your Plugins: GHC_USER_PLUGINS=
- Must be in $PYTHONPATH
Plugin Model - Probe Types
- Template (OWS) Requests
- Free-form: Probe Anything!
- Started in the air, literally!
- In flight en route to FOSS4G 2014 (YYZ -> YYC -> PDX)
Current Status (Nov 5, 2018)
- Tags and Plugins (Probes & Checks)
- REST API architecture
- Monitoring tools integration
(Icinga, Munin, Prometheus etc)
You Can Help!
- Coding (Plugins!)
- User Stories
- Sponsored Development