Runtime metrics: Export (deprecated)

The OpenTelemetryReportingTask exports legacy runtime metrics in OpenTelemetry format to an OTLP-compatible endpoint that you operate, such as an OpenTelemetry Collector. The reporting task exports all legacy metrics for all flows in the runtime, including connectors. It doesn’t affect the telemetry being written to your event table.

Before you begin

The runtime must be able to connect to the endpoint. For Snowflake deployments, create a network rule and an external access integration for the endpoint, and add it to the runtime. See Create network rules and external access integrations.

Add the reporting task

  1. In the Openflow runtime canvas, open the menu in the upper-right corner and select Controller Settings.
  2. Select the Reporting Tasks tab.
  3. Select + to add a reporting task.
  4. Search for and select OpenTelemetryReportingTask, and then select Add.
  5. Edit the reporting task and configure its properties.
  6. Start the reporting task.

By default, the reporting task runs every 10 seconds. Each run exports the current values of all included metrics.

Properties

Required properties are in bold.

PropertyDefault valueAllowed valuesDescription
Export Endpointhttp://localhost:4317URLThe endpoint that receives the exported OTLP data.
Export ProtocolGRPC
  • GRPC
  • HTTP
The OTLP protocol used to send metrics. Endpoints might support one or both. See Export protocol.
Authentication StrategyNone
  • Basic Authentication
  • Bearer Token
  • Client Certificate
  • None
How the reporting task authenticates to the endpoint. See Authentication.
SSL Context Service-SSLContextService controller serviceProvides TLS configuration and client certificate information for connections to the endpoint.
Basic Authentication Username-StringUser name for the endpoint. Required when Authentication Strategy is Basic Authentication.
Basic Authentication Password-StringPassword for the endpoint. Sensitive. Required when Authentication Strategy is Basic Authentication.
Bearer Token-StringBearer token for the endpoint. Sensitive. Required when Authentication Strategy is Bearer Token.
Resource Attributes-StringComma-separated key=value pairs to set as resource attributes of the exported metrics. Supports Expression Language with environment variables. For example, service.name=openflow, deployment.environment=production.
Export Retry Cache Size5Positive integerIf an export fails, or is blocked by an export that’s still running, the reporting task keeps up to this number of exports in memory and retries them on its next run. When the cache is full, the oldest exports are dropped.
Metrics IncludedAll
  • All
  • Selected
Export all metrics, or only the metric groups enabled by the properties that follow.
Export Connection Metricstruetrue, falseExport connection metrics. Used when Metrics Included is Selected.
Export JVM Metricstruetrue, falseExport JVM metrics. Used when Metrics Included is Selected.
Export CPU Metricstruetrue, falseExport CPU metrics. Used when Metrics Included is Selected.
Export Port Metricstruetrue, falseExport input and output port metrics. Used when Metrics Included is Selected.
Export Processor Metricstruetrue, falseExport processor metrics. Used when Metrics Included is Selected.
Export Process Group Metricstruetrue, falseExport process group metrics. Used when Metrics Included is Selected.
Export Remote Process Group Metricstruetrue, falseExport remote process group metrics. Used when Metrics Included is Selected.
Export Storage Metricstruetrue, falseExport storage metrics. Used when Metrics Included is Selected.

Export protocol

Choose GRPC or HTTP, depending on what the endpoint accepts. Many OpenTelemetry Collectors accept both protocols on different ports. gRPC typically uses port 4317, and HTTP typically uses port 4318.

Authentication

Basic Authentication

Use when the endpoint accepts an Authorization header with a user name and password. Set the Basic Authentication Username and Basic Authentication Password properties.

Bearer Token

Use when the endpoint accepts an Authorization header with a bearer token. Set the Bearer Token property.

Client Certificate

Use when the endpoint accepts certificate authentication. The reporting task authenticates with the key in the keystore of the SSL Context Service, so the SSL Context Service property is required.

None

No authentication. Use only for endpoints in a private network, such as an OpenTelemetry Collector that runs next to the runtime.

Exported metrics

The reporting task exports the following groups of metrics. Each group lists its metrics, followed by their attributes.

Connection metrics

MetricDescription
connection.input.bytesTotal size, in bytes, of FlowFiles that entered the connection in the last five minutes.
connection.input.countTotal number of FlowFiles that entered the connection in the last five minutes.
connection.output.bytesTotal size, in bytes, of FlowFiles that left the connection in the last five minutes.
connection.output.countTotal number of FlowFiles that left the connection in the last five minutes.
connection.queued.bytesSize, in bytes, of the FlowFiles queued in the connection.
connection.queued.countNumber of FlowFiles queued in the connection.
connection.queued.duration.totalSum of the times, in milliseconds, that the queued FlowFiles have been in the connection.
connection.queued.duration.maxLongest time, in milliseconds, that a queued FlowFile has been in the connection.
connection.backpressure.threshold.bytesSize, in bytes, of queued FlowFiles at which the connection applies back pressure.
connection.backpressure.threshold.objectNumber of queued FlowFiles at which the connection applies back pressure.
connection.loadbalance.status.load_balance_not_configured1 if load balancing isn’t configured for the connection. Otherwise, 0.
connection.loadbalance.status.load_balance_active1 if the connection is load balancing across the runtime nodes. Otherwise, 0.
connection.loadbalance.status.load_balance_inactive1 if load balancing is configured but the connection isn’t load balancing. Otherwise, 0.

Connection metrics have the following attributes:

AttributeDescription
idUnique identifier of the connection.
nameName of the connection.
typeThe fixed value connection.
source.idUnique identifier of the component that sends FlowFiles to the connection.
source.nameName of the component that sends FlowFiles to the connection.
destination.idUnique identifier of the component that receives FlowFiles from the connection.
destination.nameName of the component that receives FlowFiles from the connection.
group.idUnique identifier of the process group that contains the connection.
connectorIdUnique identifier of the connector. Gen 2 connectors only.
connectorNameName of the connector. Gen 2 connectors only.
connectorDefinitionIdType of the connector. Gen 2 connectors only.
connectorBundleVersionVersion of the connector. Gen 2 connectors only.
snowOpenflowConnectorIdIdentifier of the connector as a Snowflake object. Gen 2 connectors only.

Input and output port metrics

MetricDescription
port.thread.count.activeNumber of active threads.
port.bytes.receivedTotal bytes received in the last five minutes.
port.bytes.sentTotal bytes sent in the last five minutes.
port.flowfiles.receivedTotal number of FlowFiles received in the last five minutes.
port.flowfiles.sentTotal number of FlowFiles sent in the last five minutes.
port.input.bytesTotal size, in bytes, of FlowFiles input in the last five minutes.
port.input.countTotal number of FlowFiles input in the last five minutes.
port.output.bytesTotal size, in bytes, of FlowFiles output in the last five minutes.
port.output.countTotal number of FlowFiles output in the last five minutes.

Input and output port metrics have the following attributes:

AttributeDescription
idUnique identifier of the port.
nameName of the port.
typeport-input for input ports. port-output for output ports.
group.idUnique identifier of the process group that contains the port.
connectorIdUnique identifier of the connector. Gen 2 connectors only.
connectorNameName of the connector. Gen 2 connectors only.
connectorDefinitionIdType of the connector. Gen 2 connectors only.
connectorBundleVersionVersion of the connector. Gen 2 connectors only.
snowOpenflowConnectorIdIdentifier of the connector as a Snowflake object. Gen 2 connectors only.

Process group metrics

MetricDescription
processgroup.thread.count.activeNumber of active threads.
processgroup.thread.count.statelessNumber of stateless threads.
processgroup.thread.count.terminatedNumber of terminated threads.
processgroup.bytes.readTotal bytes read in the last five minutes.
processgroup.bytes.receivedTotal bytes received from external sources in the last five minutes.
processgroup.bytes.transferredTotal bytes transferred in the last five minutes.
processgroup.bytes.sentTotal bytes sent to external destinations in the last five minutes.
processgroup.bytes.writtenTotal bytes written in the last five minutes.
processgroup.flowfiles.receivedTotal number of FlowFiles received in the last five minutes.
processgroup.flowfiles.sentTotal number of FlowFiles sent in the last five minutes.
processgroup.flowfiles.transferredTotal number of FlowFiles transferred in the last five minutes.
processgroup.input.countTotal number of FlowFiles input in the last five minutes.
processgroup.input.content.sizeTotal size, in bytes, of FlowFiles input in the last five minutes.
processgroup.output.countTotal number of FlowFiles output in the last five minutes.
processgroup.output.content.sizeTotal size, in bytes, of FlowFiles output in the last five minutes.
processgroup.queued.countNumber of FlowFiles queued.
processgroup.queued.content.sizeSize, in bytes, of FlowFiles queued.
processgroup.time.processingTotal time, in nanoseconds, spent processing in the last five minutes.

Process group metrics have the following attributes:

AttributeDescription
idUnique identifier of the process group.
nameName of the process group.
typeThe fixed value process-group.
tree.levelDepth of the process group, as a string. 1 for process groups on the root canvas of the runtime.
processGroupIdPathSlash-delimited path of process group identifiers, starting at the root process group.
processGroupNamePathSlash-delimited path of process group names, starting at the root process group.
flow.identifierIdentifier of the versioned flow. Versioned process groups only.
flow.versionVersion of the versioned flow. Versioned process groups only.
registry.nameName of the registry of the versioned flow. Versioned process groups only.
connectorIdUnique identifier of the connector. Gen 2 connectors only.
connectorNameName of the connector. Gen 2 connectors only.
connectorDefinitionIdType of the connector. Gen 2 connectors only.
connectorBundleVersionVersion of the connector. Gen 2 connectors only.
snowOpenflowConnectorIdIdentifier of the connector as a Snowflake object. Gen 2 connectors only.

Processor metrics

MetricDescription
processor.thread.count.activeNumber of active threads.
processor.thread.count.terminatedNumber of terminated threads.
processor.time.lineage.averageAverage time, in nanoseconds, since the FlowFiles that the processor handled in the last five minutes entered the flow.
processor.invocationsTotal number of times the processor ran in the last five minutes.
processor.bytes.readTotal bytes read in the last five minutes.
processor.bytes.receivedTotal bytes received from external sources in the last five minutes.
processor.bytes.sentTotal bytes sent to external destinations in the last five minutes.
processor.bytes.writtenTotal bytes written in the last five minutes.
processor.flowfiles.receivedTotal number of FlowFiles received in the last five minutes.
processor.flowfiles.removedTotal number of FlowFiles removed in the last five minutes.
processor.flowfiles.sentTotal number of FlowFiles sent in the last five minutes.
processor.input.countTotal number of FlowFiles input in the last five minutes.
processor.input.content.sizeTotal size, in bytes, of FlowFiles input in the last five minutes.
processor.output.countTotal number of FlowFiles output in the last five minutes.
processor.output.content.sizeTotal size, in bytes, of FlowFiles output in the last five minutes.
processor.time.processingTotal time, in nanoseconds, spent processing in the last five minutes.
processor.run.status.running1 if the processor is running. Otherwise, 0.
processor.run.status.stopped1 if the processor is stopped. Otherwise, 0.
processor.run.status.validating1 if the processor is validating. Otherwise, 0.
processor.run.status.invalid1 if the processor is invalid. Otherwise, 0.
processor.run.status.disabled1 if the processor is disabled. Otherwise, 0.
processor.counterCurrent value of a processor counter. Each counter is reported separately, identified by the counter attribute.

Processor metrics have the following attributes:

AttributeDescription
idUnique identifier of the processor.
nameName of the processor.
componentType of the processor, for example PutSnowpipeStreaming.
typeThe fixed value processor. For processor.counter, the fixed value counter.
counterName of the counter. processor.counter only.
execution.nodeEither ALL or PRIMARY, depending on how the processor is configured to run.
group.idUnique identifier of the process group that contains the processor.
processGroupIdPathSlash-delimited path of process group identifiers, starting at the root process group.
processGroupNamePathSlash-delimited path of process group names, starting at the root process group.
connectorIdUnique identifier of the connector. Gen 2 connectors only.
connectorNameName of the connector. Gen 2 connectors only.
connectorDefinitionIdType of the connector. Gen 2 connectors only.
connectorBundleVersionVersion of the connector. Gen 2 connectors only.
snowOpenflowConnectorIdIdentifier of the connector as a Snowflake object. Gen 2 connectors only.

Remote process group metrics

MetricDescription
remoteprocessgroup.thread.count.activeNumber of active threads.
remoteprocessgroup.remote.port.count.activeNumber of active remote ports.
remoteprocessgroup.remote.port.count.inactiveNumber of inactive remote ports.
remoteprocessgroup.duration.lineage.averageAverage time, in nanoseconds, since the FlowFiles that the remote process group handled in the last five minutes entered the flow.
remoteprocessgroup.refresh.ageTime, in milliseconds, since the last refresh.
remoteprocessgroup.received.countTotal number of FlowFiles received in the last five minutes.
remoteprocessgroup.received.content.sizeTotal size, in bytes, of FlowFiles received in the last five minutes.
remoteprocessgroup.sent.countTotal number of FlowFiles sent in the last five minutes.
remoteprocessgroup.sent.content.sizeTotal size, in bytes, of FlowFiles sent in the last five minutes.
remoteprocessgroup.transmission.status.transmitting1 if the remote process group is transmitting. Otherwise, 0.
remoteprocessgroup.transmission.status.nottransmitting1 if the remote process group isn’t transmitting. Otherwise, 0.

Remote process group metrics have the following attributes:

AttributeDescription
idUnique identifier of the remote process group.
nameName of the remote process group.
typeThe fixed value remote-process-group.
group.idUnique identifier of the process group that contains the remote process group.
authorization.issueAuthorization problem with the remote instance, if any.
target.uriURI of the remote instance.
connectorIdUnique identifier of the connector. Gen 2 connectors only.
connectorNameName of the connector. Gen 2 connectors only.
connectorDefinitionIdType of the connector. Gen 2 connectors only.
connectorBundleVersionVersion of the connector. Gen 2 connectors only.
snowOpenflowConnectorIdIdentifier of the connector as a Snowflake object. Gen 2 connectors only.

JVM metrics

MetricDescription
jvm.memory.heap.usedHeap memory used, in bytes.
jvm.memory.heap.committedHeap memory committed, in bytes.
jvm.memory.heap.maxMaximum heap memory, in bytes.
jvm.memory.heap.initInitial heap memory, in bytes.
jvm.memory.heap.usageHeap memory used divided by maximum heap memory, from 0 to 1.
jvm.memory.non-heap.usageNon-heap memory used divided by maximum non-heap memory, from 0 to 1.
jvm.memory.total.initInitial heap and non-heap memory, in bytes.
jvm.memory.total.usedHeap and non-heap memory used, in bytes.
jvm.memory.total.maxMaximum heap and non-heap memory, in bytes.
jvm.memory.total.committedHeap and non-heap memory committed, in bytes.
jvm.threads.countNumber of live threads.
jvm.threads.deadlocksNumber of deadlocked threads.
jvm.threads.daemon.countNumber of live daemon threads.
jvm.uptimeTime, in seconds, since the JVM started.
jvm.file.descriptor.usageOpen file descriptors divided by the maximum number of file descriptors, from 0 to 1.
jvm.gc.<collector>.runsNumber of garbage collections since the JVM started, for each garbage collector, for example jvm.gc.G1-Young-Generation.runs.
jvm.gc.<collector>.timeTime, in milliseconds, spent in garbage collection since the JVM started, for each garbage collector.

CPU metrics

MetricDescription
cores.availableNumber of processors available to the runtime node.
cores.loadSystem load average for the last minute. -1 if the load average isn’t available.

CPU metrics have the following attributes:

AttributeDescription
idThe fixed value cpu.
nameName of the operating system.
architectureArchitecture of the operating system.
versionVersion of the operating system.

Storage metrics

MetricDescription
storage.freeFree space, in bytes, on the storage that holds the repository.
storage.usedUsed space, in bytes, on the storage that holds the repository.

Storage metrics have the following attributes:

AttributeDescription
idIdentifier of the repository.
nameName of the repository.
storage.typeType of the repository. One of: flowfile, content, provenance, or configuration_resources.