IBM & Red Hat on AWS

Stream Amazon CloudWatch metrics to IBM Instana with Amazon Data Firehose

Organizations running large-scale AWS workloads across hundreds of accounts, need an efficient way to analyze and visualize Amazon CloudWatch metrics without increasing operational costs or adding latency. While traditional API polling methods work well for many use cases, organizations need to optimize performance and cost when handling thousands of metrics at high frequency.

IBM Instana Observability (Instana) uses Amazon CloudWatch Metric Streams with Amazon Data Firehose to deliver near-real-time metrics directly from Amazon CloudWatch. This integration reduces operational overhead and provides predictable costs compared to traditional polling methods.

This post shows you how to connect Amazon CloudWatch Metric Streams to Instana via Amazon Data Firehose. You will also learn about the cost and performance advantages of this approach compared to traditional API polling methods.

Why Metric Streams?

With Amazon CloudWatch Metric Streams, you can continuously push metrics to a downstream destination (such as Amazon Data Firehose) instead of having a monitoring tool repeatedly poll for them.

Key benefits:

  • Low latency: Metric updates flow to Instana within approximately 2–3 minutes instead of approximately 10 minutes with standard polling.
  • Broad coverage: Automatically includes all CloudWatch namespaces and future metrics; no need to maintain polling logic.
  • Operational efficiency: Amazon Data Firehose manages batching, retries, and delivery to Instana’s HTTPS ingestion endpoint.
  • Cost predictability: Pricing based on the number of metric updates rather than per-call polling.

Cost benefits of metric streams

Using Amazon CloudWatch Metric Streams instead of API polling can significantly reduce your operational costs while improving data freshness. With metric streams, you pay only for the actual metric updates transmitted, rather than for API calls that might retrieve duplicate or unchanged data. This approach is particularly cost-effective for large-scale deployments where traditional polling methods would require frequent API calls to maintain current data.

For example, when monitoring thousands of resources across multiple AWS accounts, metric streams eliminate the need for repeated GetMetricData API calls, which can become costly at higher polling frequencies. Additionally, metric streams deliver updates within 2-3 minutes compared to the standard 10-minute delay with polling, providing better value through improved data timeliness and reduced API costs.

Architecture Overview

The architecture for streaming Amazon CloudWatch metrics to Instana using Amazon Data Firehose is shown in Figure 1:

Image shows the reference architecture for streaming Amazon CloudWatch metrics to Instana via Amazon Data Firehose.

Figure 1. Reference architecture for streaming Amazon CloudWatch metrics to Instana via Amazon Data Firehose.

Here is how this works:

  • Amazon CloudWatch Metric Streams publishes metric updates in near-real-time.
  • Amazon Data Firehose buffers and delivers data to Instana’s HTTPS endpoint in OpenTelemetry 1.0.0 format.
  • Instana automatically parses, normalizes, and visualizes metrics alongside traces and logs.

This configuration is designed to eliminate the need for frequent API polling or polling schedulers, simplifying ingestion at scale.

For production use cases, you can configure your Amazon Data Firehose metric streams to be backed up in Amazon Simple Storage Service (Amazon S3) by following the AWS documentation.

Costs

You are responsible for the cost of the AWS services used when deploying the resources mentioned in this blog in your AWS account. For cost estimates, see the pricing pages for each AWS service you use.

Implementation Steps

Prerequisites

This post assumes that you have the following prerequisites:

Create an Amazon Data Firehose delivery stream

  1. Log in to the AWS Management Console, navigate to Amazon Data Firehose, and choose Create Firehose stream.
  2. As shown in Figure 2, on the Create Firehose stream page, for Source, choose Direct PUT. For Destination, choose HTTP Endpoint. For Firehose stream name, enter a descriptive name for your stream. This will be used in step 7.
Screenshot of the Amazon Data Firehose console showing the service overview page with the ‘Create Firehose stream’ button highlighted on the right and a diagram explaining how Firehose ingests, transforms, and delivers data in real time.

Figure 2. Amazon Data Firehose source and destination configuration showing Direct PUT source and HTTP Endpoint destination.

  1. In the Destination settings section, for HTTP endpoint URL, enter your Instana OpenTelemety endpoint URL with your Instana region:

https://otlp-<your-instana-region>-saas.instana.io/v1/metrics/cloudwatch

  1. Add your Instana API Key for authentication, set Content Encoding to GZIP, and configure a Retry Duration of 60 seconds. Figure 3 shows the destination settings configuration.
Screenshot of the Amazon Data Firehose console showing the Destination settings page for creating a Firehose stream. The HTTP endpoint URL field is filled with an Instana endpoint, authentication is set to use an AWS Secrets Manager key, GZIP content encoding is selected, and the retry duration is configured to 60 seconds.

Figure 3. Amazon Data Firehose destination settings showing HTTP endpoint URL, API key, content encoding, and retry duration fields.

  1. In the Buffer hints, compression and encryption section, configure the buffer settings. Buffer settings determine the trade-off between cost, latency, and delivery frequency:
  • Higher buffer values result in lower cost but higher latency
  • Lower buffer values result in faster delivery but higher cost
  1. To achieve near-real-time metric delivery, keep buffer values low. For Buffer size, enter 1 MiB. For Buffer interval, enter 60 seconds. Figure 4 shows the buffer configuration settings:
Screenshot showing Amazon data firehose buffer configuration

Figure 4. Amazon Data Firehose buffer configuration showing buffer size set to 1 MiB and buffer interval set to 60 seconds.

Create an Amazon CloudWatch Metric Stream

  1. Navigate to the Amazon CloudWatch console, choose Metrics, choose Streams, and then choose Create metric stream as shown in Figure 5.
Screenshot of the Amazon CloudWatch console showing the Metric Streams page, where no streams are currently configured and a button labeled ‘Create metric stream’ is available to start creating a new stream.

Figure 5. Amazon CloudWatch console showing the Metric Streams page with Create metric stream button highlighted.

  1. For Destination, choose Custom setup with Firehose.
  2. Choose the Data Firehose stream created in step 2. Expand the Change output format (optional) section and choose OpenTelemetry 1.0. Figure 6 shows the destination and output format configuration:
Screenshot of the Amazon CloudWatch console showing the Destination configuration page for creating a metric stream, with ‘Custom setup with Firehose’ selected, the previously created Firehose stream chosen, and the output format set to OpenTelemetry 1.0 format.

Figure 6. Amazon CloudWatch Metric Stream destination configuration showing Custom setup with Firehose selected and OpenTelemetry 1.0 format.

Note: Instana supports OpenTelemetry 1.0 format.

  1. In the Metrics to be streamed section, choose All metrics to ensure comprehensive metric coverage. For Metric stream name enter a descriptive name for your stream. Figure 7 shows the metrics selection and stream name:
Screenshot of the Amazon CloudWatch console showing the Metrics to be streamed section during metric stream creation, with ‘All metrics’ selected for full coverage, a custom stream name entered as ‘Instana-Stream,’ and configuration details displayed before finalizing the setup.

Figure 7. Amazon CloudWatch Metric Stream configuration showing All metrics selected and metric stream name field.

  1. Review your configuration and choose Create metric stream to complete the setup.

How to use and visualize AWS Metric Streams in Instana

After the Amazon CloudWatch metric stream is created, metrics flow from Amazon CloudWatch to Instana in approximately 2–3 minutes.

View AWS Metric Streams entity in Instana

  1. Log into the Instana console. Navigate to Infrastructure and locate the AWS MetricStreams entity.
Screenshot of the IBM Instana infrastructure dashboard showing the Amazon CloudWatch metric streams entity with sample metrics.

Figure 8. Instana infrastructure dashboard displaying an AWS Metric Streams entity.

Figure 8 shows an AWS Metric Streams withe the following infrastructure metric:

amazonaws.com_aws_ec2_cpuutilization_p0{Namespace=”AWS/EC2″, InstanceId=”<<your-instana-id>>”, MetricName=”CPUUtilization”}

Each metric is composed of:

  • Metric name:
    • com_aws_ec2_cpuutilization_p0
  • Metric dimensions:
    • Namespace=”AWS/EC2″
    • InstanceId=”<<your-instana-id>>”
    • MetricName=”CPUUtilization”

The metric name follows a base pattern with a suffix defining the statistical aggregation. For example:

  • p0 = minimum
  • p1 = maximum
  • sum = summary value
  • count = number of data points within the aggregation period

Metric dimensions define the context of each metric using the following Amazon CloudWatch attributes:

  • Namespace: aligns with the Amazon CloudWatch metric namespace
  • MetricName: corresponds to the Amazon CloudWatch metric name
  • InstanceId: identifies the monitored Amazon Elastic Compute Cloud (Amazon EC2) instance

Create a custom dashboard in Instana

  1. In the Instana console, navigate to Custom Dashboards, and choose Create Dashboard.
  2. Enter the name of your Custom Dashboard and choose Create as shown in Figure 9.
Screenshot of the IBM Instana interface showing the ‘Create new dashboard’ popup window. The user is prompted to enter a dashboard name, with options to Cancel or Create. The background displays a list of existing custom dashboards within the workspace.

Figure 9. Creating a new Custom Dashboard in Instana

  1. As shown in Figure 10, Choose Add widget and select Chart: time series and choose Next.
Screenshot of the IBM Instana dashboard editor displaying the ‘Add widget’ dialog. The Chart: time series widget type is selected, showing a preview line chart of top database services. Buttons for Cancel and Next appear at the bottom of the dialog

Figure 10. Choosing the Chart Type for a Dashboard in Instana.

  1. Select following options and choose Create as shown in Figure 11:
    • Data source: Infrastructure & platforms.
    • Metrics: select one of the EC2 metrics.
    • Aggregation: mean
    • Group: Other->metric.tag.InstanceID
Screenshot of the IBM Instana console showing the ‘Add widget – Chart: time series’ configuration window. The data source is set to AWS Metric Streams, the metric selected is CPU utilization, aggregation is set to sum, results are grouped by instance ID, and the chart is configured to display the top 10 EC2 instances.

Figure 11. Custom dashboard configuration for CPU utilization across multiple Amazon EC2 instances.

Now you have an Instana custom dashboard configuration designed to monitor CPU utilization for the top 10 Amazon EC2 instances. CPU utilization is derived from the amazonaws.com_aws_ec2_cpuutilization_sum metric, with results grouped by the InstanceId metric dimension.

  1. After configuring your dashboard, choose Save. The dashboard displays real-time metrics from Amazon CloudWatch. It presents the time-series graph of CPU utilization for the top 10 Amazon EC2 instances, as defined in the Instana custom dashboard configuration. Figure 12 shows the resulting time-series visualization:
Screenshot of the IBM Instana custom dashboard showing a time series chart of CPU utilization across multiple EC2 instances. The graph displays distinct colored lines representing CPU usage trends for the top 10 instances over time.

Figure 12. Instana dashboard displaying CPU utilization time-series graph for top 10 Amazon EC2 instances.

Proactive Monitoring with Custom Events

Once AWS CloudWatch metrics are ingested into Instana through Metric Streams, users can go beyond visualization by defining custom event conditions that automatically detect performance anomalies. These events enable proactive alerting and automation, ensuring that issues like resource saturation or service degradation are caught early; before they impact end users.

As shown in Figure 13, Navigate to Settings -> Events and choose New Event:

Screenshot of the IBM Instana Settings page displaying the Events list. The interface shows existing configured events with columns for name, description, entity type, and controls to edit or manage each event. The navigation menu on the left highlights the ‘Events’ section under Events & Alerts.

Figure 13. New Event creation in Settings in Instana.

As shown in Figure 14, in the New Event details configure the following:

  • Event Name: “CPU utilization too high”
  • Source: Custom metrics from the AWS Metric Streams entity
  • Aggregation: Average CPU utilization over a 60-second window
  • Threshold Condition: Trigger if the average CPU utilization exceeds 1.5
Screenshot of the IBM Instana Infrastructure dashboard showing a triggered alert labeled ‘CPU utilization too high’ for an AWS EC2 instance entity. The issue card displays the event start time and links directly to the affected AWS Metric Streams entity for root-cause investigation

Figure 14. Configure a Custom Event in Instana.

You have configured a custom event in Instana, where the metric amazonaws.com_aws_ec2_cpuutilization_sum is used to monitor CPU utilization for EC2 instances streamed via AWS Metric Streams.

By setting this condition, the user ensures that Instana continuously evaluates incoming CloudWatch metrics in real time, automatically raising an alert when the threshold is breached.

When the Event conditions are met, an Issue is going to be triggered. To find the Issue, as shown in Figure 15, navigate to Events on the left-hand side and under Issues you will find the Event.

Screenshot of the IBM Instana event details page displaying a triggered alert titled ‘CPU utilization too high.’ The page shows event metadata—including start time, duration, and severity—alongside a description, links to affected entities, and a metrics chart visualizing CPU utilization over time

Figure 15. Alert for Custom Event in Instana displaying a triggered alert for high CPU utilization.

Choose Triggered Event to see the details as shown in Figure 16.

Screenshot of the IBM Instana Infrastructure view showing an Amazon EC2 instance entity with an active alert labeled ‘CPU utilization too high.’ The issue panel displays the alert’s start time and provides a link to view open issues. The right side shows the custom metrics table for the instance, including CloudWatch CPU utilization metrics streamed via AWS Metric Streams.

Figure 16. Information about alert start time and link to view open issues related to the Amazon EC2 instance with active alert for high CPU utilization. Displayed metrics include Amazon CloudWatch CPU utilization metrics streamed via Metric Streams.

When the defined CPU threshold is exceeded, Instana automatically generates a critical alert attached to the affected EC2 instance entity. This provides immediate visibility into both the symptom (high CPU utilization) and the context (affected service, namespace, and region).

Creating custom events allows teams to align their monitoring strategy with operational priorities – turning raw CloudWatch data into actionable alerts. By leveraging AWS Metric Streams with Instana’s AI-driven event framework, DevOps and SRE teams gain:

  • Real-time detection of performance issues
  • Automated correlation of metrics to specific AWS entities
  • Reduced MTTR (Mean Time To Repair) through immediate contextual awareness
  • Consistent alerting across multi-account and multi-region AWS deployments

This proactive approach ensures AWS workloads remain reliable, performant, and fully observable; powered by continuous metric streaming and intelligent event automation in Instana.

Clean up Instructions

After validating the integration and confirming that metrics are successfully flowing from Amazon CloudWatch Metric Streams to Instana, you can remove the resources in your AWS account to avoid incurring ongoing costs.

Follow these steps to clean up your environment:

  1. Delete the CloudWatch Metric Stream: This stops CloudWatch from continuously publishing metrics to the delivery stream.
  2. Delete the Amazon Data Firehose Delivery Stream: Deleting the Firehose stream prevents additional data delivery charges.
  3. Remove IAM Roles or Policies (if created manually): This ensures that temporary permissions used for testing are revoked.

Optional: If you configured Amazon S3 backup for your Amazon Data Firehose stream, delete the S3 bucket and its contents.

After cleanup, all associated AWS resources and data pipelines will be removed, ensuring that no additional costs accrue.

Your Instana workspace will retain historical metric data for analysis and reporting, allowing you to revisit the integration anytime by redeploying the Firehose and Metric Stream configuration.

Conclusion

By streaming Amazon CloudWatch metrics to IBM Instana using Amazon Data Firehose and CloudWatch Metric Streams, you move from reactive, sample-based monitoring to a continuous, near real-time observability pipeline that scales with your AWS footprint. This architecture removes the operational burden of managing custom polling jobs, reduces the risk of throttling, and ensures that new services and accounts are automatically covered without additional engineering effort.

From a financial perspective, adopting Metric Streams can deliver a significant cost advantage; often around a 3× reduction in ingestion cost compared to aggressive 1-minute GetMetricData polling—while also improving data freshness from roughly 10 minutes down to 2–3 minutes. Because charges are based on metric updates instead of API calls, costs remain predictable and linear as you expand.

When combined with Instana’s full-stack visibility, dynamic service graph, Golden Signals, AI-driven root-cause analysis, and custom events, these streamed metrics become actionable intelligence rather than raw data. Teams can detect issues earlier, understand impact faster, and consistently reduce MTTR across multi-account, multi-region, and hybrid environments.

As a next step, start by enabling Metric Streams for a high-value workload on Amazon EC2, Amazon Elastic Kubernetes Service (Amazon EKS), or AWS Lambda, wire it through Amazon Data Firehose into Instana, and validate the insights and cost profile. From there, you can confidently roll out this pattern across your AWS organization as a standard, scalable, and cost-efficient observability foundation.

Additional Content:

Visit AWS Marketplace for IBM Instana solutions available on AWS:

Eduardo Monich Fronza

Eduardo Monich Fronza

Eduardo Monich Fronza is a Partner Solutions Architect at AWS. His experience includes Cloud, solutions architecture, application platforms, containers, workload modernization, and hybrid solutions. In his current role, Eduardo helps AWS partners and customers in their cloud adoption journey.

Branko Terzic

Branko Terzic

Branko is a Software Engineer that currently works as a Technical Team lead at IBM Instana Observabilty. He is responsible for shaping development initiatives related to specification and development of Agent Sensors for Observability.

Rodoljub Radivojevic

Rodoljub Radivojevic

Rodoljub is Product Manager in for IBM Instana Observability. He leads all steps of the discovery and delivery process as well as driving innovations for AWS integrations for Instana.

Senthil Nagaraj

Senthil Nagaraj

Senthil Nagaraj is a Partner Solutions Architect with Amazon Web Services and is based in Virginia. He enjoys providing creative solutions for customer problems, while still being fascinated by how cloud computing is driving the art of possible.

Thanos Matzanas

Thanos Matzanas

Thanos Matzanas is a Staff Product Manager and the AWS Alliance Lead for IBM Instana. He has been in the monitoring and observability field for over a decade focusing on helping clients achieve business goals from the use of observability solutions. In his current role, he leads the product’s integrations with AWS and focusing on increasing Instana’s visibility within the AWS ecosystem.