Class ActivityTags
- Namespace
- Quartz.Diagnostics
- Assembly
- Quartz.dll
The attribute names Quartz puts on its spans and its measurements.
public static class ActivityTags
- Inheritance
-
ActivityTags
- Inherited Members
Remarks
Every one of them is spelled under quartz., which is what OpenTelemetry asks of an attribute a
library defines for itself: job.name is a name any other instrumented library in the same
process could reasonably claim, and once two of them do, a dashboard has one attribute meaning two
things and no way to tell which. The one exception is error.type, which Quartz writes on a
failed operation: it is the semantic convention's shared attribute for that, and a Quartz-specific
spelling would only keep these series from lining up with the rest of an application's failures.
The values are a telemetry contract rather than a compile-time one, so code reading them by these constants needs no change while a dashboard, alert or recording rule matching the 3.x spellings does.
Fields
BatchSize
How many triggers the scheduler asked its store for in one acquisition attempt.
public const string BatchSize = "quartz.jobstore.batch.size"
Field Value
ExecutionGroup
The execution group a trigger belongs to, which is the bucket a thread limit is applied per.
public const string ExecutionGroup = "quartz.execution.group"
Field Value
Remarks
A trigger that names no execution group carries no such attribute at all rather than an empty one: the two are the same series to a reader that treats a missing attribute as empty, and different series to one that does not, and "there is no group" is not a group name.
FireInstanceId
The identity of one firing, which is what an interrupt names.
public const string FireInstanceId = "quartz.fire.instance.id"
Field Value
JobGroup
The job's group.
public const string JobGroup = "quartz.job.group"
Field Value
JobName
The job's name.
public const string JobName = "quartz.job.name"
Field Value
JobResult
What a job run achieved: succeeded, failed, cancelled or skipped, the
JobRunResult the execution history records, in lower case.
public const string JobResult = "quartz.job.result"
Field Value
Remarks
On quartz.job.execution.duration, so the histogram's count splits by result as the history
does, and on the Quartz.Job.Execute span. Not on quartz.job.execution.active, whose
increment is made before there is a result and whose decrement has to carry the increment's
attributes, nor on any other span. error.type stays the name of what a failed run threw: a
cancelled run has none, nor has a run its own JobRunReport called failed without
throwing, and only a run that threw ends its span in error. A result outside the enum is
_OTHER.
JobStoreLock
Which job store lock a measurement is about, as the LOCK_NAME column spells it —
TRIGGER_ACCESS or STATE_ACCESS.
public const string JobStoreLock = "quartz.jobstore.lock"
Field Value
Remarks
The two locks are contended for by different work and stall for different reasons, so folding
them into one series would hide a check-in that cannot get STATE_ACCESS behind the
trigger traffic that dominates the other.
JobStoreLockReason
Why a firing round took TRIGGER_ACCESS, on an acquisition measurement whose
JobStoreLock says it did: serial_job, overlap_policy,
cluster_limit, older_peer, definition_changed, hysteresis, or the
configuration — option_off, acquire_within_lock, isolation_level,
lock_all_operations, delegate. Absent on a round that took no lock.
public const string JobStoreLockReason = "quartz.jobstore.lock.reason"
Field Value
Remarks
A round of work that allows concurrent execution takes no lock since 4.6 (#4067), so on a cluster
the share of rounds tagged TRIGGER_ACCESS, and why, is what says whether a schedule is
getting the saving.
JobStoreOperation
Which store operation a measurement is about — one of the OperationName.JobStore names, which is also what the operation's span is called.
public const string JobStoreOperation = "quartz.jobstore.operation"
Field Value
JobType
The job's type, as the assembly-qualified name the store holds.
public const string JobType = "quartz.job.type"
Field Value
RecoveredInstanceId
The instance id of the cluster node whose work is being recovered, which is a node other than the one reporting the measurement.
public const string RecoveredInstanceId = "quartz.cluster.recovered.instance.id"
Field Value
Remarks
Deliberately not SchedulerId: every measurement carries that already, and it names the node that made the measurement. A recovery is one node saying something about another, so the two ids are two attributes.
SchedulerId
The scheduler's instance id, which is what tells two nodes of a cluster apart.
public const string SchedulerId = "quartz.scheduler.id"
Field Value
SchedulerName
The scheduler's name.
public const string SchedulerName = "quartz.scheduler.name"
Field Value
TriggerCount
How many triggers a store operation was asked for, or handed back.
public const string TriggerCount = "quartz.jobstore.trigger.count"
Field Value
TriggerGroup
The trigger's group.
public const string TriggerGroup = "quartz.trigger.group"
Field Value
TriggerName
The trigger's name.
public const string TriggerName = "quartz.trigger.name"
Field Value
TriggersFiredOnAcquire
How many of the triggers an acquisition returned the store fired as it acquired them, because they were already due. Those have no TriggersFired span of their own.
public const string TriggersFiredOnAcquire = "quartz.jobstore.trigger.fired_on_acquire"