Native Observability 1.0.9
Twelve commits on top of 1.0.8. The headline themes: install presets,
extraction of the scrape-side responsibilities into a dedicated
sub-module, honest dependency declarations, and removal of the
install-time sanity gate.
Added
- drush no:preset:raw, drush no:preset:dashboard, drush no:preset:integrations
— single-command installers for the three documented consumer tiers.
Idempotent (re-running prints "Already enabled") and end each
invocation with a short Next-steps block.
- native_observability_export — new sub-module that owns the
pull-based scrape endpoints (/native-observability/prometheus,
/native-observability/elastic) split out from native_observability_otel.
Hard-deps on native_observability + spans + cache_observer (the
three tables it reads). Ships its own settings form at
/admin/config/development/native-observability/settings/export,
config schema, permissions and Drupal State storage for the
bearer token. Can be enabled without native_observability_otel.
- CHANGELOG.md at the module root.
- "Pick your tier" table in the README plus a seven-group
copy-friendly install layout (one drush command per fenced bash
block, modules on separate lines via backslash continuation).
Changed
- native_observability_dashboard.info.yml now declares hard
dependencies on cache_observer and database_observer (the
dashboard pages /dashboard/cache and /dashboard/database query
those tables — without the modules they 500).
- native_observability_eca_bridge.info.yml drops eca_ui, eca_log
and eca_base — the bridge only uses Drupal\\eca\\* core symbols.
- native_observability_eca_bridge_demo.info.yml gains eca_base and
eca_log (the demo's rule pack uses eca_write_log_message and
eca_scalar from those modules).
- native_observability_otel reduced to OTLP push only — admin form,
config schema and permissions all shrink accordingly.
- phpstan.neon.dist now covers modules/native_observability_otel/tests/src
and modules/native_observability_export/tests/src (closes a
pre-existing gap).
- README rewritten: tier table at the top, per-module
Tier / Depends on / Required by headers, and the seven-group
install layout.
Removed
- Drupal\\native_observability\\SanityCheck\\InstallGuard class and
every InstallGuard::checkFor() call in hook_requirements('install').
Service-integrity conflicts no longer block module installation;
they are still reported on the Status Report and via
drush no:sanity-check.
- Two scaffold-only .install files in dashboard and execution
(their only content was the removed guard).
- Route name aliases renamed (public URLs unchanged):
native_observability_otel.prometheus_metrics → native_observability_export.prometheus_metrics
native_observability_otel.prometheus_scrape → native_observability_export.prometheus_scrape
native_observability_otel.elastic_export → native_observability_export.elastic_export
Custom code calling Url::fromRoute() against the old names needs
updating; /native-observability/prometheus and /native-observability/elastic
paths are unchanged.
Migrated
- native_observability_export_update_10001 (auto-run by drush updb)
moves:
* Bearer-token State key
native_observability_otel.secret.prometheus_bearer_token →
native_observability_export.secret.prometheus_bearer_token
* Prometheus config keys (prometheus_window_seconds,
prometheus_label_strategy, prometheus_max_series) from
native_observability_otel.settings to
native_observability_export.settings.
Idempotent and logged on the dblog channel
native_observability_export.
Fixed
- TechnicalInsightsController dataset CSV exports
(/admin/reports/native-observability/export/{dataset}) no longer
500 with AutowiringFailedException — TraceMetricsReader is now
public so the on-the-fly controller autowire can resolve it.
- The base module's hook_requirements('install') no longer fatals
on Drupal 11 with "Class InstallGuard not found"; the autoloader
issue is gone with the removal of the install-time guard.
Verification done before tagging
- Clean wipe + install of each tier via the new drush presets.
- drush no:sanity-check OK on all three tiers.
- drush no:validate-pipeline reports 7 PASS / 1 WARN / 0 FAIL on
the local DDEV stack (Tempo WARN is the dev-environment
block-flush window, not a module issue).
- Cache backend rotation exercised on null, database, memcache,
apcu and redis — the cache_observer logs every backend with
consistent HIT/MISS/INVALIDATED distributions.
- Upgrade scenario simulated: bearer token + Prometheus config
keys migrate correctly on drush updb.
- Static QA: phpcs 309 files clean, phpstan 0 errors, yaml-lint
80 files valid. drupal.org CI pipeline green across composer,
composer-lint, phpcs, eslint, stylelint, yamllint, phpunit.