Skip to main content

OpenTelemetryReportingTask

Description:

Reports metrics in OpenTelemetry format by exporting to an OTLP-compatible endpoint which can be used for external monitoring of the application. The reporting task exports a set of metrics regarding the Runtime Flow and JVM.

Tags:

reporting, opentelemetry, metrics, time series data

Properties:

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values.

Display NameAPI NameDefault ValueAllowable ValuesDescription
Export EndpointExport Endpointhttp://localhost:4317The endpoint that will receive OTLP data exported from this reporting task.
Export ProtocolExport ProtocolGRPC
  • GRPC
  • HTTP
The format to send metric data. Endpoints may support one or both.
Authentication StrategyAuthentication StrategyNone
  • Basic Authentication
  • Bearer Token
  • Client Certificate
  • None
The strategy that the OTLP exporter will use to authenticate to the receiving endpoint.
SSL Context ServiceSSL Context ServiceController Service API:
SSLContextService
Implementations:
StandardRestrictedSSLContextService
StandardSSLContextService
The SSL Context Service used to provide client certificate information for TLS/SSL connections to the OTLP endpoint for metrics.
Basic Authentication UsernameBasic Authentication UsernameUsername for Basic Authentication to OTLP Endpoint.

This Property is only considered if the [Authentication Strategy] Property has a value of "Basic Authentication".
Basic Authentication PasswordBasic Authentication PasswordPassword for Basic Authentication to OTLP Endpoint.
Sensitive Property: true

This Property is only considered if the [Authentication Strategy] Property has a value of "Basic Authentication".
Bearer TokenBearer TokenAuthorization Bearer Token for the OTLP Endpoint.
Sensitive Property: true

This Property is only considered if the [Authentication Strategy] Property has a value of "Bearer Token".
Resource AttributesResource AttributesComma-separated key=value pairs to use as Resource Attributes.
Export Retry Cache SizeExport Retry Cache Size5If an export fails or is blocked by an ongoing export, it will keep up to this number of exports in memory to retry during the next run of the reporting task. Exports are retained in an LRU cache, so the oldest exports are dropped if the cache fills up.
Metrics IncludedMetrics IncludedAll
  • All
  • Selected
Choose between exporting all metrics or some metrics.
Export Connection MetricsExport Connection Metricstrue
  • true
  • false
If set, export metrics from Connections. Set this to false to ignore metrics from Connections.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".
Export JVM MetricsExport JVM Metricstrue
  • true
  • false
If set, export metrics from the JVM. Set this to false to ignore metrics from the JVM.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".
Export Port MetricsExport Port Metricstrue
  • true
  • false
If set, export metrics from Ports. Set this to false to ignore metrics from Ports.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".
Export Processor MetricsExport Processor Metricstrue
  • true
  • false
If set, export metrics from Processors. Set this to false to ignore metrics from Processors.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".
Export Process Group MetricsExport Process Group Metricstrue
  • true
  • false
If set, export metrics from Process Groups. Set this to false to ignore metrics from Process Groups.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".
Export Remote Process Group MetricsExport Remote Process Group Metricstrue
  • true
  • false
If set, export metrics from Remote Process Groups. Set this to false to ignore metrics from Remote Process Groups.

This Property is only considered if the [Metrics Included] Property has a value of "Selected".

State management:

This component does not store state.

Restricted:

This component is not restricted.

System Resource Considerations:

None specified


Want to monitor your data flow with the widely adopted, vendor-neutral industry standard?

This reporting task publishes OpenTelemetry metrics to an OTLP-compatible endpoint for external monitoring of the data flow.

Getting Started

To add an OpenTelemetry Reporting Task to your Datavolo Runtime:

  1. Open Controller Settings under the top-right menu
  2. Navigate to the Reporting Tasks tab
  3. Use the right-hand [+] button to add a new reporting task
  4. Search for and select OpenTelemetryReportingTask
  5. Click the Add button
  6. The new OpenTelemetryReportingTask instance now appears in the table of all configured reporting tasks.
  7. Use the pencil icon to configure its properties.
  8. Once it is valid, click the play icon to enable it.

Configuration

Export Protocol

Choose either GRPC or HTTP, depending on the OTLP receiver and the endpoint / port in use. Many OpenTelemetry Collectors will support both protocols, but on different ports.

GRPC will typically use port 4317, and HTTP will typically use port 4318.

Resource Attributes

The OpenTelemetry Reporting Task will use the comma-separated key=value pairs in this property to set Resource Attributes for the exported metrics. These attributes typically describe the Datavolo Runtime or data flow producing the telemetry.

For example:

PropertyValue
Resource Attributesservice.name=datavolo-operations, service.version=1.0, deployment.environment=production

See https://opentelemetry.io/docs/concepts/resources for more details on OpenTelemetry resources.

Authentication

The OpenTelemetry Reporting Task provides 4 different authentication methods, covering a broad range of OTLP-compatible endpoints.

Basic Authentication

Choose Basic Authentication if the OTLP-compatible endpoint supports an Authorization header with a Username and Password.

Those properties will display once this option is selected, and will be required to enable the OpenTelemetry Reporting Task.

Bearer Token

Choose Bearer Token if the OTLP-compatible endpoint supports an Authorization header with a Bearer Token.

The OpenTelemetry Reporting Task will require that the Bearer Token property is also set.

Client Certificate

Choose Client Certificate for any OTLP-compatible endpoint that accepts certificate authentication.

The reporting task authenticates to the server with the key provided in the SSL Context Service's Keystore. As a result, the SSL Context Service property is required for this authentication mechanism.

This can be used, for example, to send to another Datavolo Runtime configured with a ListenOTLP processor.

None

The None authentication strategy provides the least overhead for co-located receivers, such as an OpenTelemetry Collector.

Warning: This authentication strategy is not recommended for exporting metrics outside of a local network.

Exported Metrics

The OpenTelemetry Reporting Task reports metrics for the following data flow components:

  • Connections
  • Input and Output Ports
  • Process Groups
  • Processors
  • Remote Process Groups

It also exports Java Virtual Machine (JVM) metrics for analysis and tuning of flow configurations.

Connections

Metrics
Metric NameDescriptionUnit
connection.input.bytesSize of Items Inputbytes
connection.input.countCount of Items Inputitems
connection.output.bytesSize of Items Outputbytes
connection.output.countCount of Items Outputitems
connection.queued.bytesSize of Items Queuedbytes
connection.queued.bytes.maxMax Size of Items Queuedbytes
connection.queued.countCount of Items Queueditems
connection.queued.count.maxMax Count of Items Queueditems
connection.queued.duration.totalTotal Duration of Queued Itemsmilliseconds
connection.queued.duration.maxMax Duration of Queued Itemsmilliseconds
connection.backpressure.threshold.bytesThe maximum size of data in bytes that can be queued in this connection before it applies back pressure.byte
connection.backpressure.threshold.objectsThe configured maximum number of FlowFiles that can be queued in this connection before it applies back pressure.items
connection.loadbalance.status.load_balance_not_configured1 if the connection does not have a configured load balance setting. Otherwise, 0.0 or 1
connection.loadbalance.status.load_balance_active1 if the connection is load balancing across the cluster. Otherwise, 0.0 or 1
connection.loadbalance.status.load_balance_inactive1 if the connection is not load balancing across the cluster. Otherwise, 0.0 or 1
Attributes

Each Connection's metrics includes the following attributes:

AttributeDescription
idThe unique identifier of the connection
nameThe user-visible name of the connection
typeThe fixed value of "connection"
source.idThe unique identifier of the component that is sending FlowFiles to this connection
source.nameThe user-visible name of the component that is sending FlowFiles to this connection
destination.idThe unique identifier of the component that is receiving FlowFiles from this connection
destination.nameThe user-visible name of the component that is receiving FlowFiles from this connection
group.idThe unique identifier of the Process Group that this Connection resides in

Input and Output Ports

Metrics
Metric NameDescriptionUnit
port.thread.count.activeNumber of Active Threadsthreads
port.bytes.receivedNumber of Bytes Receivedbytes
port.bytes.sentNumber of Bytes Sentbytes
port.flowfiles.receivedNumber of FlowFiles Receivedflowfiles
port.flowfiles.sentNumber of FlowFiles Sentflowfiles
port.input.bytesSize of Items Inputbytes
port.input.countCount of Items Inputitems
port.output.bytesSize of Items Outputbytes
port.output.countCount of Items Outputitems
Attributes

Each Port's metrics includes the following attributes:

AttributeDescription
idThe unique identifier of the port
nameThe user-visible name of the port
typeEither port-input or port-output
group.idThe unique identifier of the Process Group that this Port resides in

Process Groups

Metrics
Metric NameDescriptionUnit
processgroup.thread.count.activeNumber of Active Threadsthreads
processgroup.thread.count.statelessNumber of Stateless Threadsthreads
processgroup.thread.count.terminatedNumber of Terminated Threadsthreads
processgroup.bytes.readNumber of Bytes Readbytes
processgroup.bytes.receivedNumber of Bytes Receivedbytes
processgroup.bytes.transferredNumber of Bytes Transferredbytes
processgroup.bytes.sentNumber of Bytes Sentbytes
processgroup.bytes.writtenNumber of Bytes Writtenbytes
processgroup.flowfiles.receivedNumber of FlowFiles Receivedflowfiles
processgroup.flowfiles.sentNumber of FlowFiles Sentflowfiles
processgroup.flowfiles.transferredNumber of FlowFiles Transferredflowfiles
processgroup.input.countNumber of Items Inputitems
processgroup.input.content.sizeSize of Items Inputbytes
processgroup.output.countNumber of Items Outputitems
processgroup.output.content.sizeSize of Items Outputbytes
processgroup.queued.countNumber of Items Queueditems
processgroup.queued.content.sizeSize of Items Queuedbytes
processgroup.time.processingTime Spent Processingnanoseconds
Attributes

Each Process Group's metrics includes the following attributes:

AttributeDescription
idThe unique identifier of the Process Group
nameThe user-visible name of the Process Group
typeThe fixed value process-group

Processors

Metrics
Metric NameDescriptionUnit
processor.thread.count.activeNumber of Active Threadsthread
processor.thread.count.terminatedNumber of Terminated Threadsthread
processor.time.lineage.averageAverage Lineage Durationnanosecond
processor.invocationsNumber of Invocationsinvocations
processor.bytes.readNumber of Bytes Readbyte
processor.bytes.receivedNumber of Bytes Receivedbyte
processor.bytes.sentNumber of Bytes Sentbyte
processor.bytes.writtenNumber of Bytes Writtenbyte
processor.flowfiles.receivedNumber of FlowFiles Receivedflowfiles
processor.flowfiles.removedNumber of FlowFiles Removedflowfiles
processor.flowfiles.sentNumber of FlowFiles Sentflowfiles
processor.input.countNumber of Items Inputitem
processor.input.content.sizeSize of Items Inputbyte
processor.output.countNumber of Items Outputitem
processor.output.content.sizeSize of Items Outputbyte
processor.time.processingTime Spent Processingnanosecond
processor.run.status.running1 if running; 0 otherwisebinary
processor.run.status.stopped1 if stopped; 0 otherwisebinary
processor.run.status.validating1 if validating; 0 otherwisebinary
processor.run.status.invalid1 if invalid; 0 otherwisebinary
processor.run.status.disabled1 if disabled; 0 otherwisebinary
processor.counterValue of the countercount
Attributes

Each Processor's metrics includes the following attributes:

AttributeDescription
idThe unique identifier of the processor
nameThe user-visible name of the Processor
typeThe fixed value processor
execution.nodeEither ALL or PRIMARY, depending on how this Processor is configured to run
group.idThe unique identifier of the Process Group that this Processor resides in
Additional Attributes for Counters

In addition to the standard Processor attributes above, processor.counter metrics include the following:

AttributeDescription
typeThe fixed value counter
counterThe name of the counter

Remote Process Groups

Metrics
Metric NameDescriptionUnit
remoteprocessgroup.thread.count.activeNumber of Active Threadsthreads
remoteprocessgroup.remote.port.count.activeNumber of Active Remote Portsports
remoteprocessgroup.remote.port.count.inactiveNumber of Inactive Remote Portsports
remoteprocessgroup.duration.lineage.averageAverage Lineage Durationnanoseconds
remoteprocessgroup.refresh.ageTime since last refreshmilliseconds
remoteprocessgroup.received.countNumber of Received Itemsitems
remoteprocessgroup.received.content.sizeSize of Received Itemsbytes
remoteprocessgroup.sent.countNumber of Sent Itemsitems
remoteprocessgroup.sent.content.sizeSize of Sent Itemsbytes
remoteprocessgroup.transmission.status.transmitting1 if the Remote Process Group is transmitting. Otherwise, 0.0 or 1
remoteprocessgroup.transmission.status.nottransmitting0 if the Remote Process Group is transmitting. Otherwise, 1.0 or 1
Attributes

Each Remote Process Group's metrics includes the following attributes:

AttributeDescription
idThe unique identifier of the remote process group
nameThe user-visible name of the Remote Process Group
group.idThe unique identifier of the Process Group that this Remote Process Group resides in
authorization.issueThe Authorization used to access the Remote Process Group
target.uriThe URI of the Remote Process Group
typeThe fixed value remote-process-group

JVM Metrics

Additionally, the OpenTelemetry Reporting Task exports the following JVM metrics:

JVM Metric NameDescriptionUnit
jvm.memory.heap.usedJVM Heap Usedbytes
jvm.memory.heap.committedJVM Heap Committedbytes
jvm.memory.heap.maxJVM Heap Maxbytes
jvm.memory.heap.initJVM Heap Initbytes
jvm.memory.heap.usageJVM Heap Usagepercentage
jvm.memory.non-heap.usageJVM Non-Heap Usagepercentage
jvm.memory.total.initJVM Memory Total Initbytes
jvm.memory.total.usedJVM Memory Total Usedbytes
jvm.memory.total.maxJVM Memory Total Maxbytes
jvm.memory.total.committedJVM Memory Total Committedbytes
jvm.threads.countNumber of live threadsthreads
jvm.threads.deadlocksJVM Thread Deadlocksthreads
jvm.threads.daemon.countNumber of live daemon threadsthreads
jvm.uptimeNumber of seconds the JVM process has been runningseconds
jvm.file.descriptor.usagePercentage of available file descriptors currently in use.percentage
jvm.gc.G1-Concurrent-GC.runsTotal number of times that the G1 Concurrent Garbage Collection has runruns
jvm.gc.G1-Concurrent-GC.timeTotal amount of time that the G1 Concurrent Garbage Collection has been runningmilliseconds
jvm.gc.G1-Young-Generation.runsTotal number of times that the G1 Young Generation has runruns
jvm.gc.G1-Young-Generation.timeTotal amount of time that the G1 Young Generation has been runningmilliseconds
jvm.gc.G1-Old-Generation.runsTotal number of times that the G1 Old Generation has runruns
jvm.gc.G1-Old-Generation.timeTotal amount of time that the G1 Old Generation has been runningmilliseconds

CPU Metrics

CPU Metric NameDescriptionUnit
cores.availableThe number of available cores for the Runtimecores
cores.loadEither the system load average or -1 if it is not availablepercentage
Attributes

Each CPU metric includes the following attributes:

AttributeDescription
idThe fixed value cpu
nameThe name of the operating system
architectureThe architecture of the operating system
versionThe version of the operating system

Storage Metrics

Storage Metric NameDescriptionUnit
storage.freeThe amount of free storage for a given repositorybytes
storage.usedThe amount of used storage for a given repositorybytes
Attributes

Each storage metric includes the following attributes:

AttributeDescription
idThe unique identifier of the storage repository
nameSame as "id" and provided for consistency
storage.typeOne of "flowfile", "content", or "provenance"