Monitor Amazon Kinesis data streams

edit

Amazon Kinesis Data Streams is a real-time data streaming service that you can use to capture, process, and store large amounts of data from a variety of sources, including websites, mobile applications, IoT devices, and more.

Amazon Kinesis Data Streams and Amazon CloudWatch are integrated so that you can collect and monitor CloudWatch metrics for your Kinesis data streams, such as tracking shard usage and recording related operations for each Kinesis data stream. The Elastic Amazon Kinesis Data Stream integration collects metrics from Amazon CloudWatch using Elastic Agent.

By default, Kinesis Data Streams sends stream-level (basic level) metrics to CloudWatch every minute automatically. There is also shard-level data (enhanced level) that is sent to CloudWatch every minute and incurs an additional cost per stream. To get shard-level data, you must specifically enable it for each stream by using the AWS Kinesis enable-enhanced-monitoring API. For example

aws kinesis enable-enhanced-monitoring --stream-name samplestream --shard-level-metrics ALL

For more details, refer to the EnableEnhancedMonitoring documentation.

Get started
edit

To collect Kinesis data stream metrics from Amazon CloudWatch, you typically need to install the Elastic Amazon Kinesis Data Stream integration and deploy an Elastic Agent.

Expand the quick guide to learn how, or skip to the next section if your data is already in Elasticsearch.

Quick guide: Add data

Elastic Agent is currently the preferred way to add Kinesis data stream metrics. For other ways, refer to Adding data to Elasticsearch.

Dashboards
edit

{kibana-desc} For example, to see an overview of your Kinesis data streams in Kibana, go to the Dashboard app and navigate to the [Metrics AWS] Kinesis Overview dashboard.

Screenshot showing the Kinesis overview dashboard
Metrics to watch
edit

This section lists the key metrics that you should watch, organized by category. For a full description of fields exported by the integration, refer to the Amazon Kinesis Data Stream integration docs.

  • GetRecords

    • aws.kinesis.metrics.GetRecords.Bytes.avg
    • aws.kinesis.metrics.GetRecords.IteratorAgeMilliseconds.avg
    • aws.kinesis.metrics.GetRecords.Latency.avg
    • aws.kinesis.metrics.GetRecords.Records.avg
    • aws.kinesis.metrics.GetRecords.Records.sum
    • aws.kinesis.metrics.GetRecords.Success.avg
    • aws.kinesis.metrics.GetRecords.Success.sum
    • aws.kinesis.metrics.ReadProvisionedThroughputExceeded.avg
    • aws.kinesis.metrics.IteratorAgeMilliseconds.avg
  • PutRecord

    • aws.kinesis.metrics.PutRecord.Bytes.avg
    • aws.kinesis.metrics.PutRecord.Latency.avg
    • aws.kinesis.metrics.PutRecord.Success.avg
  • PutRecords

    • aws.kinesis.metrics.PutRecords.Bytes.avg
    • aws.kinesis.metrics.PutRecords.Latency.avg
    • aws.kinesis.metrics.PutRecords.Success.avg
    • aws.kinesis.metrics.PutRecords.TotalRecords.sum
    • aws.kinesis.metrics.PutRecords.SuccessfulRecords.sum
    • aws.kinesis.metrics.PutRecords.FailedRecords.sum
    • aws.kinesis.metrics.PutRecords.ThrottleRecords.sum
    • aws.kinesis.metrics.WriteProvisionedThroughputExceeded.avg
  • Incoming and outgoing

    • aws.kinesis.metrics.IncomingBytes.avg
    • aws.kinesis.metrics.IncomingRecords.avg
    • aws.kinesis.metrics.OutgoingBytes.avg
    • aws.kinesis.metrics.OutgoingRecords.avg
    • aws.kinesis.metrics.OutgoingRecords.sum
  • SubscribeToShard

    • aws.kinesis.metrics.SubscribeToShard.RateExceeded.avg
    • aws.kinesis.metrics.SubscribeToShard.Success.avg
    • aws.kinesis.metrics.SubscribeToShardEvent.Bytes.avg
    • aws.kinesis.metrics.SubscribeToShardEvent.MillisBehindLatest.avg
    • aws.kinesis.metrics.SubscribeToShardEvent.Success.avg
    • aws.kinesis.metrics.SubscribeToShardEvent.Records.sum