You can use self-monitoring (SFM) metrics to track how data flows in OpenPipeline through the pipeline stages, from ingestion to storage and forwarding. Use these metrics to detect unexpected drops, identify bottlenecks, and correlate configuration changes with changes in data flow.
The OpenPipeline usage overview ready-made dashboard provides a preconfigured view of these metrics.
| Metric | Description | Dimensions |
|---|---|---|
| Measured at the point where OpenPipeline takes over the data. Counts records entering into an ingest source, per data type and source path. |
|
| Measured after routing. Counts records processed through routing rules, per data type, route, and target pipeline. |
|
| Measured at the end of OpenPipeline. Counts records leaving a pipeline after processing, per data type and storage bucket. |
|
| Records that were not stored—dropped, not persisted, or invalid. Can occur during the ingest phase (pre-processing) or within the pipeline (processing). Check |
|
| Records successfully forwarded to an external destination. For setup, see Forwarding data to cloud storage via OpenPipeline. |
|
| Records that failed to be forwarded to an external destination. For setup, see Forwarding data to cloud storage via OpenPipeline. |
|
| Dimension | Description | Value |
|---|---|---|
| The cloud datacenter region of the AWS monitored entity. See Global field reference. | For example, |
| The cloud resource kind of the AWS monitored entity. See Global field reference. | For example, |
| The cloud resource kind of the Azure monitored entity. See Global field reference. | For example, |
| The Grail bucket assigned for storage. Dynatrace default buckets are prefixed | For example, |
| The cloud provider of the monitored entity's infrastructure. | The dimension can hold these values
|
| The configuration scope of the pipeline. | The dimension can hold these values
|
| The ingest API endpoint path that received the records. See Ingest sources in OpenPipeline. | For example, |
| The type of cloud storage destination. | The dimension can hold these values
|
| Dynatrace-assigned unique opaque ID of the forwarding configuration. | For example, |
| User-defined display name of the forwarding configuration. | For example, |
| The cloud resource kind of the GCP monitored entity. See Smartscape - Google Cloud Platform. | For example, |
| Whether the entity is currently under a maintenance window. | The dimension can hold these values
|
| Dynatrace-assigned opaque ID of the pipeline group that the pipeline belongs to. | For example, |
| The ID of the pipeline. Predefined for built-in pipelines (for example, | For example, |
| The reason a record was not stored. Applies to | The dimension can hold these values
|
| The reason a record failed to be forwarded. Applies to | The dimension can hold these values
|
| The routing rule that matched the record. Predefined for built-in pipelines (for example, | For example, |
Run these queries in
Notebooks or
Dashboards.
Incoming records by configuration
timeseries records = sum(dt.sfm.openpipeline.ingest_sources_in.records),by: { configuration }
Not-stored records split by reason
timeseries records = sum(dt.sfm.openpipeline.not_stored.records),by: { configuration, reason }
All count-based metrics combined
timeseries {ingested = sum(dt.sfm.openpipeline.ingest_sources_in.records),routed = sum(dt.sfm.openpipeline.routing.records),out = sum(dt.sfm.openpipeline.pipelines_out.records),not_stored = sum(dt.sfm.openpipeline.not_stored.records)},by: { configuration }
Share of not-stored records per pipeline
timeseries {routed = sum(dt.sfm.openpipeline.routing.records),not_stored = sum(dt.sfm.openpipeline.not_stored.records)},by: { pipeline_id }, union: true,filter: { isNotNull(pipeline_id) }| fieldsAdd not_stored_pct = if(isNull(not_stored[]), 0, else: (not_stored[] / routed[] * 100))
Forwarding — successful vs. failed
timeseries {successful = sum(dt.sfm.openpipeline.forwarding.successful_records),failed = sum(dt.sfm.openpipeline.forwarding.failed_records)},by: { forwarding.name }