You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -217,6 +225,23 @@ Point-in-time values sampled by the metrics listener.
217
225
|---|---|---|
218
226
|`active_workers`|`taskType`| Number of concurrent task executions in progress. Updated on every poll cycle. |
219
227
228
+
## Non-Applicable Metrics
229
+
230
+
The cross-SDK canonical catalog defines additional metrics that are registered in
231
+
`MetricsCollector` as public API surface but are never incremented by the internal worker
232
+
runner. They are available for user code that layers on its own semantics.
233
+
234
+
| Canonical metric | Why N/A for the internal runner |
235
+
|---|---|
236
+
|`task_ack_error_total`| The batch-poll response serves as the ack; there is no separate ack call. |
237
+
|`task_ack_failed_total`| Same reason. |
238
+
|`worker_restart_total`| Python-only. Its multi-process supervisor restarts child processes. The .NET SDK uses async tasks. |
239
+
|`external_payload_used_total`| The C# client does not yet integrate with Conductor's external-payload-storage API. The counter is registered so user code can call `RecordExternalPayloadUsed()` if it implements its own integration. |
240
+
241
+
Users cross-referencing the harmonization spec or documentation from other Conductor SDKs may
242
+
notice these metrics in other catalogs. Their absence from the C# worker runner's output is
243
+
intentional.
244
+
220
245
## Labels
221
246
222
247
All labels use **camelCase** per the cross-SDK canonical specification.
@@ -225,14 +250,25 @@ All labels use **camelCase** per the cross-SDK canonical specification.
225
250
|---|---|---|
226
251
|`taskType`| Most metrics | Task definition name (e.g. `"my_worker"`) |
227
252
|`exception`| Error counters, `thread_uncaught_exceptions_total`| Exception class name (e.g. `"HttpRequestException"`) |
228
-
|`status`|Time histograms |`"SUCCESS"` or `"FAILURE"`|
253
+
|`status`|Task time histograms |`"SUCCESS"` or `"FAILURE"`. For `http_api_client_request_seconds`, the HTTP status code as a string (or `"0"` on network failure).|
229
254
|`workflowType`|`workflow_start_error_total`, `workflow_input_size_bytes`| Workflow definition name |
230
-
|`version`|`workflow_input_size_bytes`| Workflow version string |
255
+
|`version`|`workflow_input_size_bytes`| Workflow version as a string. Empty string when the version is absent.|
231
256
|`entityName`|`external_payload_used_total`| Entity name |
232
257
|`operation`|`external_payload_used_total`|`"READ"` or `"WRITE"`|
|`uri`|`http_api_client_request_seconds`| Request path (interpolated, not templated -- see note below) |
261
+
262
+
The OpenTelemetry .NET SDK is the [recommended way](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/metrics-collection) to export `System.Diagnostics.Metrics` to Prometheus (.NET has no built-in Prometheus exporter). As a result, the OTel exporter adds `otel_scope_name="Conductor.Client"` to every metric series
263
+
to identify the originating `Meter`. This label does not appear in the output of other Conductor
264
+
SDKs, which use native Prometheus client libraries that do not have this convention. There is
0 commit comments