Skip to content

Event Reaction

CDviz is not only an observability platform — the same CDEvents stream that feeds your dashboards can trigger downstream automation. The collector fans events out to reactive sinks; anything that consumes a webhook, a Kafka topic, or an SSE stream can react to your delivery events.

Example Use Cases

  • Post-deployment testing — trigger a chain of integration / smoke tests after a service is deployed into an environment
  • Environment promotion — promote a service or artifact to the next environment (cluster, region, ...) after tests succeed in the previous one
  • Artifact validation — trigger validation (scanning, signing, conformance checks) when an artifact is published

Patterns

Webhooks — Argo Workflows, n8n, Zapier, custom services

The HTTP sink POSTs each CDEvent to any endpoint (as CloudEvents). Typical targets:

  • Argo Workflows — submit a workflow from an event via a WorkflowEventBinding
  • Workflow automation toolsn8n, Make, Zapier, Kestra, ... — notify a channel on deployment.finished, open a ticket on incident.detected, chain follow-up jobs
  • Your own service — any HTTP endpoint becomes an event consumer

Event streams — Kafka, NATS

For decoupled, replayable consumption, publish CDEvents to a topic with the Kafka sink or NATS sink. Consumers subscribe independently of CDviz.

Live subscription — SSE

The SSE sink exposes a Server-Sent Events endpoint: lightweight, connection-based consumption without a broker — handy for live UIs and simple listeners.

Filtering & Shaping beta

The HTTP sink has beta support for per-sink transformers (transformer_refs). They serve two purposes:

  • Filter which events reach a reaction target — only service.deployed, only one service, ...
  • Reshape the payload into whatever JSON the destination expects — not necessarily a CDEvent — so the consumer needs no translation logic

Reshaping can even replace a destination that only acts as a 1-to-1 translator: in the Argo Workflows example above, a workflow whose only job is converting the event into a GitHub repository_dispatch call can be dropped entirely — a sink transformer builds the GitHub API payload and the HTTP sink posts it directly (see the full example).