Repository navigation
Release v22.42.0
Commands and queries now show up in traces and metrics in the terms of your application: the span for each command or query carries its type or name, the outcome and the reason for it, and duration and outcome metrics are recorded per type. Span names stay the stable operation names, so dashboards built on them keep working.
Added
WellKnownDiagnostics.ActivitySourceNameandWellKnownDiagnostics.MeterNamefor registering Arc with OpenTelemetry without repeating"Cratis.Arc"(part of #2915)WellKnownTelemetryNamesandWellKnownOperationOutcomeswith every span, attribute, event, metric and outcome name Arc records, for dashboards, alerts and tests (part of #2915)- Child spans for authorization (
cratis.arc.command.authorize), validators (cratis.arc.validator.invoke),Provide()(cratis.arc.command.provide) andHandle()(cratis.arc.command.handle), each carrying the command or validator type. A validator gets one span per validation rather than one per item it validates, and one validation adds at most 16 (part of #2915) - Command and query spans carry
cratis.arc.command.typeorcratis.arc.query.name,cratis.arc.query.transport(snapshotorobservable),cratis.correlation_id,cratis.tenantonce the pipeline has established it, and an outcome ofsuccess,validation,authorization,append_rejected,cancelledorerror(part of #2915) - With the Chronicle integration, command spans carry
cratis.arc.command.key.type, the type the command declares its event source id as and never the id itself (part of #2915) - Rejected commands and queries add
cratis.arc.validation.failedevents (member, severity and reason, never the message) or acratis.arc.authorization.deniedevent, and an exception adds anexceptionevent with the exception type only. Only anerrorsets a span's status toError: validation, authorization and append rejections, anIValidationFailurethrown fromHandle(),Provide()or a validator, and a cancelled operation leave it unset (part of #2915) - Metrics on the
Cratis.Arcmeter:cratis.arc.command.durationandcratis.arc.query.durationhistograms and acratis.arc.command.outcomescounter, limited to a fixed 1,000 command types or query names each, with the rest recorded as_other. HTTP requests turned away while Arc prepares authorization are traced and measured too. See Observability (part of #2915)
Changed
- The
query_nameattribute oncratis.arc.query.performspans is_otherfor a query name that matches no query, instead of the name the caller sent (part of #2915)