This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Documentation

The Rusty AWS CloudWatch Exporter is aimed at intersection of companies that use AWS infrastructure - particularly AWS proprietary tooling - and use Prometheus based metrics. AWS only publishes metrics through its AWS CloudWatch product which has its own idiosyncrasies and does not provide proper interoperability with Prometheus.

This product aims to provide a meaningful translation of metrics from AWS CloudWatch that can then be ingested into a Prometheus-based solution.

1 - Overview

How the exporter fits into the ecosystem to provide the translated metrics.

Architecture

Overview of the solution’s architecture.

In order for the Rusty AWS CloudWatch Exporter do its purpose a whole ecosystem of AWS Components need to be setup so that the metrics arrive to it in the expected manner.

AWS CloudWatch Stream

The CloudWatch Stream is the source component. It is the way provided by AWS to export metrics to other systems as they are generated.

AWS Kinesis Firehose Delivery Stream

The Kinesis Firehose works as the aggregator of metrics coming from the metric stream in order to minimize the number of requests hitting the Rusty CloudWatch Exporter.

This will introduce some delay but it can be tuned with different configuration options.

Operating Costs

The operating costs will depend on several factors:

  • The number of metrics being processed and how frequently are they being updated
  • The location where the exporter is running and how Firehose is able to reach it
  • The region where all the services are running

For a more in-depth explanation you can read this article.

2 - Getting Started

Step by step setup of the Rusty AWS CloudWatch Exporter

Prerequisites

  • Have a valid license in a file. The default name is license.json but a different name can be used.

AWS Policy

The Rusty AWS CloudWatch Exporter leverages the AWS API to obtain resource information that is then used for labeling the metrics. In order to use them, the exporter requires authenticating against the API and the profile used needs to have the proper permissions that enables it to use the APIs.

The following is the minimum set of permissions needed in the profile:

  • ec2:DescribeInstances
  • dynamodb:DescribeTable
  • dynamodb:DescribeGlobalTable
  • dynamodb:ListTagsOfResource
  • elasticloadbalancing:DescribeLoadBalancers
  • elasticloadbalancing:DescribeTags
  • elasticloadbalancing:DescribeTargetGroups
  • lambda:GetFunction
  • sqs:GetQueueUrl
  • sqs:ListQueueTags

We recommend creating a policy with them and then attaching said policy to the role used to authenticate or run the service with.

Rusty AWS CloudWatch Exporter Setup

Configuration File

Create a configuration file - usually named config.yaml from the following template:

host_url: 'localhost'
host_port: 3000
ingestion_token: 'some random string'
aws_account_id: '1234567890'
aws_region: 'us-west-2'
aws_profile: 'default'

The meaning of each field is:

  • host_url and host_port: The IP and port, respectively, where the service will bind for listening to incoming requests. (Required)
  • ingestion_token: String to use for incoming metric ingestion request validation. This will be needed when setting up the AWS Firehose. Metric ingestion requests that do not contain the expected ingestion token in the X-Amz-Firehose-Access-Key header will be rejected by the exporter. (Required)
  • aws_account_id: The AWS account the resources being monitored belong to. It is used for the AWS API. (Required)
  • aws_region: The default region to use for the AWS API client. (Required)
  • aws_profile: Profile name to use to acquire the authentication for the AWS API Client. (Required)

Service Setup

The Rusty AWS CloudWatch Exporter is distributed via a Docker image through the following repository.

The simplest command to get the container up and running is by executing the following command:

$ docker run \
    --name rusty-aws-cloudwatch-exporter
    -v /path/to/config.yaml:/root/config.yaml
    -v /path/to/license.json:/root/license.json
    -p 127.0.0.1:3000:3000
    public.ecr.aws/z0k1a5l6/rusty-aws-cloudwatch-exporter:v0.2.0

If the location for the config file or license file are different the following command line arguments can be passed in to change where the service looks for them:

  • --config-file <config-file-path>: Configures the location to search for the configuration file. (Optional)
  • --license-file <license-file-path>: Configures the location to look for the license file. (Optional)

We do not make any assumptions on the way this is going to be deployed as it is too specific to the user’s environment and setup. This can be done in multiple ways such as executing it on a specific host, deploy it as part of k8s pod, etc.

AWS API Credentials

The service relies on the AWS API to retrieve resource information. In order to authenticate against it, it uses the AWS SDK Authentication mechanisms.

Even though you can pick up the best option that suits you, we recommend running the application where it directly inherits a role that has the appropriate permissions/policy already assigned. For example, running the service within an EC2 instance.

Reachable Endpoint

The HTTP endpoint opened by the exporter service needs to be reachable from the Firehose and it needs to be an HTTPS endpoint.

The service itself DOES NOT support TLS on the endpoint natively. The provisioning of that is left to the user of the service to setup.

Depending on the way the service is deployed, the options that will be available to achieve this.

As an example, if the exporter is setup to run as a docker container within a specific EC2 instance, then this can be achieved by using a reverse proxy such as nginx with a proper certificate.

Metric Streaming Setup

This assumes that the Rusty AWS CloudWatch exporter is already setup as above and up and running.

What remains to be done is make AWS send metrics to it. For this we need to setup a pipeline that consists of a CloudWatch Stream and a Kinesis Firehose Delivery Stream.

AWS Kinesis Firehose Delivery Stream

This is the first component that needs to be created as the CloudWatch Stream needs to reference it in its creation.

This AWS Blogpost is a good guide on how to create it.

The important details are that the Source is set to be Direct PUT and the destination is an HTTP Endpoint.

For the HTTP Endpoint URL configuration option make sure that you use https://your-reachable-exporter-url/ingestion/firehose.

In the Access Key use the same string as what was set for the ingestion_token configuration in the exporter service.

The rest of the settings are optional and discretionary based on the environment and setup. A few notable mentions are:

  • Setting the encoding to be gzipped is not necessary but recommended.
  • The Buffer Hints can be tuned in order to minimize latency or improve request efficiency.
  • The selected Service Access role needs to be capable of reaching the endpoint and making the request.

AWS CloudWatch Metric Stream

Once the AWS Kinesis Delivery Stream has been setup, the metric faucet needs to be created.

Reading the AWS Documentation on metric streams is recommended.

The type of metric stream that needs to be created is the Custom setup with firehose using the previously created AWS Firehose as the Kinesis Data Firehose stream to use.

The Output Format must be OpenTelemetry 1.0.

The rest of the configuration options are used to control the set of metrics to be sent by the Metric Stream and are completely discretionary to the end user based on their needs.

3 - Generated Metrics

Under this section you will find the metrics that the exporter is capable to consume and how they are exposed in prometheus format.

Tag Set

The tag set is the set of labels generated from the tags associated through a resource. Each tag associated to the resource will be mapped to a single label in the form tag_<tag_name>. The value for the label will be the verbatim copy of the value associated to the tag.

3.1 - DynamoDB Metrics

Generated metrics for AWS DynamoDB

Info Metrics

aws_dynamodb_table_info

Account Level Metrics

aws_dynamodb_account_max_reads

  • Type: Gauge
  • Description: The maximum number of read capacity units that can be used by an account
  • Based on: DynamoDB/AccountMaxReads
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_max_table_level_reads

  • Type: Gauge
  • Description: The maximum number of read capacity units that can be used by a table or global secondary index of an account
  • Based on: DynamoDB/AccountMaxTableLevelReads
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_max_table_level_writes

  • Type: Gauge
  • Description: The maximum number of write capacity units that can be used by a table or global secondary index of an account
  • Based on: DynamoDB/AccountMaxTableLevelWrites
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_units_avg

  • Type: Gauge
  • Description: The average sum of read capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_units_min

  • Type: Gauge
  • Description: The minimum sum of read capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_units_max

  • Type: Gauge
  • Description: The maximum sum of read capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_utilization_avg

  • Type: Gauge
  • Description: The average percentage of provisioned read capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_utilization_min

  • Type: Gauge
  • Description: The minimum percentage of provisioned read capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_read_capacity_utilization_max

  • Type: Gauge
  • Description: The maximum percentage of provisioned read capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_units_avg

  • Type: Gauge
  • Description: The average sum of write capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_units_min

  • Type: Gauge
  • Description: The minimum sum of write capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_units_max

  • Type: Gauge
  • Description: The maximum sum of write capacity units provisioned for all tables and global secondary indexes of an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_utilization_avg

  • Type: Gauge
  • Description: The average percentage of provisioned write capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_utilization_min

  • Type: Gauge
  • Description: The minimum percentage of provisioned write capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_account_provisioned_write_capacity_utilization_max

  • Type: Gauge
  • Description: The maximum percentage of provisioned write capacity units utilized by an account
  • Based on: DynamoDB/AccountProvisionedWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_read_capacity_utilization_avg

  • Type: Gauge
  • Description: The average percentage of provisioned read capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_read_capacity_utilization_min

  • Type: Gauge
  • Description: The minimum percentage of provisioned read capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_read_capacity_utilization_max

  • Type: Gauge
  • Description: The maximum percentage of provisioned read capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableReadCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_write_capacity_utilization_avg

  • Type: Gauge
  • Description: The average percentage of provisioned write capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_write_capacity_utilization_min

  • Type: Gauge
  • Description: The minimum percentage of provisioned write capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_max_provisioned_table_write_capacity_utilization_max

  • Type: Gauge
  • Description: The maximum percentage of provisioned write capacity units utilized by the highest provisioned read table or global secondary index of the account
  • Based on: DynamoDB/MaxProvisionedTableWriteCapacityUtilization
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_user_errors_total

  • Type: Counter
  • Description: The number of HTTP 400 errors for DynamoDB or Amazon DynamoDB Streams requests
  • Based on: DynamoDB/UserErrors
  • Labels:
    • aws_account_id
    • aws_region

aws_dynamodb_table_count_avg

  • Type: Gauge
  • Description: The average number of existing DynamoDB table
  • Based on: DynamoDB/TableCount
  • Labels:
    • aws_account_id
    • aws_region

Table Metrics

aws_dynamodb_conditional_check_failed_requests_total

  • Type: Counter
  • Description: The number of failed attempts to perform conditional writes
  • Based on: DynamoDB/ConditionalCheckFailedRequests
  • Labels:
    • aws_account_id
    • aws_region
    • table_name

aws_dynamodb_ttl_deleted_items_total

  • Type: Counter
  • Description: The number of items deleted by Time to Live (TTL)
  • Based on: DynamoDB/TimeToLiveDeletedItemCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name

aws_dynamodb_transaction_conflict_items_total

  • Type: Counter
  • Description: The number of rejected item-level requests due to transaction conflicts
  • Based on: DynamoDB/TransactionConflict
  • Labels:
    • aws_account_id
    • aws_region
    • table_name

aws_dynamodb_transaction_conflict_requests_total

  • Type: Counter
  • Description: The number of rejected requests due to transaction conflicts
  • Based on: DynamoDB/TransactionConflict
  • Labels:
    • aws_account_id
    • aws_region
    • table_name

aws_dynamodb_consumed_read_capacity_units_total

  • Type: Counter
  • Description: The total read capacity units consumed
  • Based on: DynamoDB/ConsumedReadCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_consumed_write_capacity_units_total

  • Type: Counter
  • Description: The total write capacity units consumed
  • Based on: DynamoDB/ConsumedWriteCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_online_index_consumed_write_capacity_total

  • Type: Counter
  • Description: The number of write capacity units consumed when adding a new global secondary index to a table
  • Based on: DynamoDB/OnlineIndexConsumedWriteCapacity
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_online_index_progress_percentage_avg

  • Type: Gauge
  • Description: The average percentage of completion when a new global secondary index is being added to a table
  • Based on: DynamoDB/OnlineIndexPercentageProgress
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_online_index_throttle_events_total

  • Type: Counter
  • Description: The number of write throttle events that occur when adding a new global secondary index to a table
  • Based on: DynamoDB/OnlineIndexThrottleEvents
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_provisioned_read_capacity_units_avg

  • Type: Gauge
  • Description: The number of provisioned read capacity units for a table or a global secondary index
  • Based on: DynamoDB/ProvisionedReadCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_provisioned_write_capacity_units_avg

  • Type: Gauge
  • Description: The number of provisioned write capacity units for a table or a global secondary index
  • Based on: DynamoDB/ProvisionedWriteCapacityUnits
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_read_throttle_events_total

  • Type: Counter
  • Description: The number of events that exceed the provisioned read capacity units for a table or a global secondary index
  • Based on: DynamoDB/ReadThrottleEvents
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_write_throttle_events_total

  • Type: Counter
  • Description: The number of events that exceed the provisioned write capacity units for a table or a global secondary index
  • Based on: DynamoDB/WriteThrottleEvents
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • global_secondary_index_name

aws_dynamodb_age_of_oldest_unreplicated_record_max

  • Type: Gauge
  • Description: The elapsed time since a record yet to be replicated to the Kinesis data stream first appeared in the DynamoDB table
  • Based on: DynamoDB/AgeOfOldestUnreplicatedRecord
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • delegate_operation

aws_dynamodb_consumed_change_data_capture_units_total

  • Type: Counter
  • Description: The number of consumed change data capture units
  • Based on: DynamoDB/ConsumedChangeDataCaptureUnits
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • delegate_operation

aws_dynamodb_failed_to_replicate_record_count_total

  • Type: Counter
  • Description: The number of records that DynamoDB failed to replicate to your Kinesis data stream
  • Based on: DynamoDB/FailedToReplicateRecordCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • delegate_operation

aws_dynamodb_throttled_put_records_total

  • Type: Counter
  • Description: The number of records that were throttled by your Kinesis data stream due to insufficient Kinesis Data Streams capacity
  • Based on: DynamoDB/ThrottledPutRecordCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • delegate_operation

aws_dynamodb_returned_items_total

  • Type: Counter
  • Description: The number of items returned by select operations
  • Based on: DynamoDB/ReturnedItemCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_successful_requests_total

  • Type: Counter
  • Description: The number of successful requests to DynamoDB or Amazon DynamoDB Streams
  • Based on: DynamoDB/SuccessfulRequestLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_successful_request_latency_min

  • Type: Gauge
  • Description: The min latency within the successful requests to DynamoDB or Amazon DynamoDB Streams
  • Based on: DynamoDB/SuccessfulRequestLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_successful_request_latency_avg

  • Type: Gauge
  • Description: The average latency within the successful requests to DynamoDB or Amazon DynamoDB Streams
  • Based on: DynamoDB/SuccessfulRequestLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_successful_request_latency_max

  • Type: Gauge
  • Description: The maximum latency within the successful requests to DynamoDB or Amazon DynamoDB Streams
  • Based on: DynamoDB/SuccessfulRequestLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_system_errors_total

  • Type: Counter
  • Description: The requests to DynamoDB or Amazon DynamoDB Streams that generate an HTTP 500 status code
  • Based on: DynamoDB/SystemErrors
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_throttled_requests

  • Type: Counter
  • Description: The requests to DynamoDB or Amazon DynamoDB Streams that generate an HTTP 500 status code
  • Based on: DynamoDB/SystemErrors
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • operation

aws_dynamodb_returned_bytes_total

  • Type: Counter
  • Description: The number of bytes returned by GetRecords operations (Amazon DynamoDB Streams)
  • Based on: DynamoDB/ReturnedBytes
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • stream_label
    • operation

aws_dynamodb_returned_records_total

  • Type: Counter
  • Description: The number of stream records returned by GetRecords operations (Amazon DynamoDB Streams)
  • Based on: DynamoDB/ReturnedRecordsCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • stream_label
    • operation

aws_dynamodb_pending_replication_count

  • Type: Gauge
  • Description: The number of item updates that are written to one replica table, but that have not yet been written to another replica in the global table
  • Based on: DynamoDB/PendingReplicationCount
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • receiving_region

aws_dynamodb_replication_latency_avg

  • Type: Gauge
  • Description: The average time it takes for an updated item appearing in the DynamoDB stream to be replicated in the global table
  • Based on: DynamoDB/ReplicationLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • receiving_region

aws_dynamodb_replication_latency_max

  • Type: Gauge
  • Description: The maximum time it takes for an updated item appearing in the DynamoDB stream to be replicated in the global table
  • Based on: DynamoDB/ReplicationLatency
  • Labels:
    • aws_account_id
    • aws_region
    • table_name
    • receiving_region

3.2 - EC2 Metrics

Generated metrics for AWS Elastic Compute Cloud

Info Metrics

aws_ec2_instance_info

  • Type: Info
  • Description: Information related to the AWS EC2 Instance resource
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id
    • availability_zone
    • instance_type
    • Tag Set

EC2 Instance Metrics

aws_ec2_cpu_utilization_avg

  • Type: Gauge
  • Description: The percentage of allocated EC2 compute units that are currently in use on the instance
  • Based on: EC2/CPUUtilization
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_disk_read_ops_total

  • Type: Counter
  • Description: Number of completed read operations from all instance store volumes available to the instance
  • Based on: EC2/DiskReadOps
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_disk_write_ops_total

  • Type: Counter
  • Description: Number of completed write operations from all instance store volumes available to the instance
  • Based on: EC2/DiskWriteOps
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_disk_read_bytes_total

  • Type: Counter
  • Description: Volume of data the application reads from the hard disk of the instance
  • Based on: EC2/DiskReadBytes
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_disk_write_bytes_total

  • Type: Counter
  • Description: Volume of data the application writes onto the hard disk of the instance
  • Based on: EC2/DiskWriteBytes
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_metadata_no_token_total

  • Type: Counter
  • Description: The number of times the instance metadata service was successfully accessed using a method that does not use a token
  • Based on: EC2/MetadataNoToken
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_in_total

  • Type: Counter
  • Description: The number of bytes received by the instance on all network interfaces
  • Based on: EC2/NetworkIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_out_total

  • Type: Counter
  • Description: The number of bytes sent out by the instance on all network interfaces
  • Based on: EC2/NetworkOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_in_total

  • Type: Counter
  • Description: The number of packets received by the instance on all network interfaces
  • Based on: EC2/NetworkPacketsIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_out_total

  • Type: Counter
  • Description: The number of packets sent out by the instance on all network interfaces
  • Based on: EC2/NetworkPacketsOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_cpu_credit_usage_total

  • Type: Counter
  • Description: The number of CPU credits spent by the instance for CPU utilization
  • Based on: EC2/CPUCreditUsage
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_cpu_surplus_credit_balance

  • Type: Gauge
  • Description: The number of surplus credits that have been spent by an unlimited instance when its CPUCreditBalance value is zero
  • Based on: EC2/CPUSurplusCreditBalance
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_cpu_surplus_credits_charged_total

  • Type: Counter
  • Description: The number of spent surplus credits that are not paid down by earned CPU credits, and which thus incur an additional charge
  • Based on: EC2/CPUSurplusCreditsCharged
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_dedicated_host_cpu_utilization_avg

  • Type: Gauge
  • Description: The percentage of allocated compute capacity that is currently in use by the instances running on the Dedicated Host
  • Based on: EC2/CPUSurplusCreditBalance
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_ebs_read_ops_total

  • Type: Counter
  • Description: Completed read operations from all Amazon EBS volumes attached to the instance in a specified period of time
  • Based on: EC2/EBSReadOps
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_ebs_write_ops_total

  • Type: Counter
  • Description: Completed write operations to all EBS volumes attached to the instance in a specified period of time
  • Based on: EC2/EBSWriteOps
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_ebs_read_bytes_total

  • Type: Counter
  • Description: Bytes read from all EBS volumes attached to the instance in a specified period of time
  • Based on: EC2/EBSReadBytes
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_ebs_write_bytes_total

  • Type: Counter
  • Description: Bytes written to all EBS volumes attached to the instance in a specified period of time
  • Based on: EC2/EBSWriteBytes
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_status_check_failed

  • Type: Gauge
  • Description: Reports whether the instance has passed both the instance status check and the system status check in the last minute
  • Based on: EC2/StatusCheckFailed
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_status_check_failed_instance

  • Type: Gauge
  • Description: Reports whether the instance has passed the instance status check in the last minute
  • Based on: EC2/StatusCheckFailed_Instance
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_status_check_failed_system

  • Type: Gauge
  • Description: Reports whether the instance has passed the system status check in the last minute
  • Based on: EC2/StatusCheckFailed_System
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_mirror_in_total

  • Type: Counter
  • Description: The number of bytes received on all network interfaces by the instance that are mirrored
  • Based on: EC2/NetworkMirrorIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_mirror_out_total

  • Type: Counter
  • Description: The number of bytes sent out on all network interfaces by the instance that are mirrored
  • Based on: EC2/NetworkMirrorOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_mirror_in_total

  • Type: Counter
  • Description: The number of packets received on all network interfaces by the instance that are mirrored
  • Based on: EC2/NetworkPacketsMirrorIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_mirror_out_total

  • Type: Counter
  • Description: The number of packets sent out on all network interfaces by the instance that are mirrored
  • Based on: EC2/NetworkPacketsMirrorOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_skip_mirror_in_total

  • Type: Counter
  • Description: The number of bytes received, that meet the traffic mirror filter rules, that did not get mirrored because of production traffic taking priority
  • Based on: EC2/NetworkSkipMirrorIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_skip_mirror_out_total

  • Type: Counter
  • Description: The number of bytes sent out, that meet the traffic mirror filter rules, that did not get mirrored because of production traffic taking priority
  • Based on: EC2/NetworkSkipMirrorOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_skip_mirror_in_total

  • Type: Counter
  • Description: The number of packets received, that meet the traffic mirror filter rules, that did not get mirrored because of production traffic taking priority
  • Based on: EC2/NetworkPacketsSkipMirrorIn
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

aws_ec2_network_packets_skip_mirror_out_total

  • Type: Counter
  • Description: The number of packets sent out, that meet the traffic mirror filter rules, that did not get mirrored because of production traffic taking priority
  • Based on: EC2/NetworkPacketsSkipMirrorOut
  • Labels:
    • aws_account_id
    • aws_region
    • instance_id

3.3 - Elastic Load Balancer Metrics

Generated metrics for AWS Elastic Load Balancers

Info Metrics

aws_load_balancer_info

  • Type: Info
  • Description: Information related to the AWS Elastic Load Balancer resource generated from the AWS API
  • Labels:
    • aws_account_id
    • aws_region
    • name
    • arn
    • dns_name
    • type
    • Tag Set

aws_target_group_info

  • Type: Info
  • Description: Information related to the Target Group resource generated from the AWS API
  • Labels:
    • aws_account_id
    • aws_region
    • name
    • arn
    • target_type
    • Tag Set

Load Balancer Metrics

aws_elb_consumed_lcus_total

  • Type: Counter
  • Description: The number of load balancer capacity units (LCU) used by your load balancer
  • Based on: ApplicationELB/ConsumedLCUs
  • Labels:
    • aws_account_id
    • aws_region
    • load_balancer

aws_elb_grpc_request_count_total

  • Type: Counter
  • Description: The number of gRPC requests processed over IPv4 and IPv6
  • Based on: ApplicationELB/GrpcRequestCount
  • Labels:
    • aws_account_id
    • aws_region
    • load_balancer
    • availability_zone

aws_elb_request_count_total

  • Type: Counter
  • Description: The number of requests processed over IPv4 and IPv6 that were forwarded to a target
  • Based on: ApplicationELB/RequestCount
  • Labels:
    • aws_account_id
    • aws_region
    • load_balancer
    • target_group

aws_elb_target_response_time

  • Type: Summary
  • Description: The time elapsed, in seconds, after the request leaves the load balancer until a response from the target is received
  • Based on: ApplicationELB/TargetResponseTime
  • Labels:
    • aws_account_id
    • aws_region
    • load_balancer
    • target_group

aws_elb_load_balancer_response_count_total

  • Type: Counter
  • Description: The number of responses that originate from the load balancer. This count does not include response codes generated by targets
  • Based on: ApplicationELB/HTTPCode_ELB
  • Labels:
    • aws_account_id
    • aws_region
    • load_balancer
    • availability_zone
    • status_code

3.4 - Kinesis Stream Metrics

Generated metrics for AWS Kinesis Streams

Info Metrics

aws_kinesis_stream_info

Stream Metrics

aws_kinesis_stream_get_records_size

  • Type: Summary
  • Description: The number of bytes retrieved from the Kinesis stream per GetRecords operation
  • Based on: Kinesis/GetRecords.Bytes
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_get_records_iterator_age

  • Type: Summary
  • Description: The age in milliseconds of the last record in all GetRecords calls made against a Kinesis stream
  • Based on: Kinesis/GetRecords.IteratorAgeMilliseconds
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_get_records_latency

  • Type: Summary
  • Description: The number of milliseconds taken per GetRecords operation
  • Based on: Kinesis/GetRecords.Latency
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_get_records_returned_records

  • Type: Summary
  • Description: The number of records returned in each GetRecords operation
  • Based on: Kinesis/GetRecords.Records
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_get_records_successes_total

  • Type: Counter
  • Description: The number of successful GetRecords operations
  • Based on: Kinesis/GetRecords.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_get_records_count_total

  • Type: Counter
  • Description: The number of issued GetRecords operations
  • Based on: Kinesis/GetRecords.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_read_throughput_exceeded_total

  • Type: Counter
  • Description: The number of GetRecords throttled
  • Based on: Kinesis/ReadProvisionedThroughputExceeded
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_write_throughput_exceeded_total

  • Type: Counter
  • Description: The number of records rejected due to throttling
  • Based on: Kinesis/WriteProvisionedThroughputExceeded
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_incoming_bytes_total

  • Type: Counter
  • Description: The number of bytes successfully put to the Kinesis stream
  • Based on: Kinesis/IncomingBytes
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_incoming_records_total

  • Type: Counter
  • Description: The number of records successfully put to the Kinesis stream
  • Based on: Kinesis/IncomingRecords
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_record_size

  • Type: Summary
  • Description: The number of bytes put to the Kinesis stream per PutRecord operation
  • Based on: Kinesis/PutRecord.Bytes
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_record_latency

  • Type: Summary
  • Description: The number of milliseconds taken per PutRecord operation
  • Based on: Kinesis/PutRecord.Latency
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_record_successes_total

  • Type: Counter
  • Description: The number of successful PutRecord operations
  • Based on: Kinesis/PutRecord.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_record_count_total

  • Type: Counter
  • Description: The number of issued PutRecord operations
  • Based on: Kinesis/PutRecord.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_size

  • Type: Summary
  • Description: The number of bytes put to the Kinesis stream per PutRecords operation
  • Based on: Kinesis/PutRecords.Bytes
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_latency

  • Type: Summary
  • Description: The number of milliseconds taken per PutRecords operation
  • Based on: Kinesis/PutRecords.Latency
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_successes_total

  • Type: Counter
  • Description: The number of successful PutRecords operations
  • Based on: Kinesis/PutRecords.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_count_total

  • Type: Counter
  • Description: The number of issued PutRecords operations
  • Based on: Kinesis/PutRecords.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_total_records

  • Type: Summary
  • Description: The number of records sent per PutRecords operation
  • Based on: Kinesis/PutRecords.TotalRecords
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_successful_records

  • Type: Summary
  • Description: The number of successful records per PutRecords operation
  • Based on: Kinesis/PutRecords.SuccessfulRecords
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_failed_records

  • Type: Summary
  • Description: The number of records rejected due to internal failure per PutRecords operation
  • Based on: Kinesis/PutRecords.FailedRecords
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

aws_kinesis_stream_put_records_throttled_records

  • Type: Summary
  • Description: The number of records rejected due to throttling per PutRecords operation
  • Based on: Kinesis/PutRecords.ThrottledRecords
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name

Stream Consumer Metrics

aws_kinesis_stream_subscription_rate_exceeded_total

  • Type: Counter
  • Description: The number of subscription attempt failures because the consumer is already subscribed or it exceed the number of calls per second allowed
  • Based on: Kinesis/SubscribeToShard.RateExceeded
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_successes_total

  • Type: Counter
  • Description: The number of successful SubscribeToShard operations
  • Based on: Kinesis/SubscribeToShard.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_count_total

  • Type: Counter
  • Description: The number of issued SubscribeToShard operations
  • Based on: Kinesis/SubscribeToShard.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_event_size

  • Type: Summary
  • Description: The number of bytes per event received from the shard
  • Based on: Kinesis/SubscribeToShardEvent.Bytes
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_event_lag

  • Type: Summary
  • Description: The age in milliseconds of the last record of the SubscribeToShard event was written to the stream
  • Based on: Kinesis/SubscribeToShardEvent.MillisBehindLatest
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_event_records

  • Type: Summary
  • Description: The number of records per event received from the shard
  • Based on: Kinesis/SubscribeToShardEvent.Records
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_event_successes_total

  • Type: Counter
  • Description: The number of successfully published events to the subscription
  • Based on: Kinesis/SubscribeToShardEvent.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

aws_kinesis_stream_subscribe_to_shard_event_count_total

  • Type: Counter
  • Description: The number of events attempted to be published to the subscription
  • Based on: Kinesis/SubscribeToShardEvent.Success
  • Labels:
    • aws_account_id
    • aws_region
    • stream_name
    • consumer_name

3.5 - Lambda Metrics

Generated metrics for AWS Lambda

Info Metrics

aws_lambda_info

  • Type: Info
  • Description: Information related to the AWS Lambda resource generated from the AWS API
  • Labels:
    • aws_account_id
    • aws_region
    • function_name
    • arn
    • Tag Set

Region Metrics

aws_lambda_unreserved_concurrent_executions_max

  • Type: Gauge
  • Description: The max number of events that functions without reserved concurrency are processing
  • Based on: Lambda/UnreservedConcurrentExecutions
  • Labels:
    • aws_account_id
    • aws_region

Lambda Function Metrics

aws_lambda_invocations_total

  • Type: Counter
  • Description: The number of times that your function code is invoked
  • Based on: Lambda/Invocations
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_errors_total

  • Type: Counter
  • Description: The number of invocations that result in a function error
  • Based on: Lambda/Errors
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_dead_letter_errors_total

  • Type: Counter
  • Description: The number of times that Lambda attempts to send an event to a dead-letter queue but fails
  • Based on: Lambda/DeadLetterErrors
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_destination_delivery_failures_total

  • Type: Counter
  • Description: The number of times that Lambda attempts to send an event to a destination but fails
  • Based on: Lambda/DestinationDeliveryFailures
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_throttles_total

  • Type: Counter
  • Description: The number of invocation requests that are throttled
  • Based on: Lambda/Throttles
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_oversized_records_total

  • Type: Counter
  • Description: The number of events your function receives from your change stream that are over 6 MB in size
  • Based on: Lambda/OversizedRecordCount
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_provisioned_concurrency_invocations_total

  • Type: Counter
  • Description: The number of times that your function code is invoked using provisioned concurrency
  • Based on: Lambda/ProvisionedConcurrencyInvocations
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_provisioned_concurrency_spillover_invocations_total

  • Type: Counter
  • Description: The number of times that your function code is invoked using standard concurrency when all provisioned concurrency is in use
  • Based on: Lambda/ProvisionedConcurrencySpilloverInvocations
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_dropped_recursive_invocations_total

  • Type: Counter
  • Description: The number of times that Lambda has stopped invocation of your function because it’s detected that your function is part of an infinite recursive loop
  • Based on: Lambda/RecursiveInvocationsDropped
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_duration

  • Type: Summary
  • Description: The amount of time that your function code spends processing an event in milliseconds
  • Based on: Lambda/Duration
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_post_runtime_extension_duration

  • Type: Summary
  • Description: The cumulative amount of time that the runtime spends running code for extensions after the function code has completed
  • Based on: Lambda/PostRuntimeExtensionsDuration
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_iterator_age_max

  • Type: Gauge
  • Description: The max age of the last record in the event
  • Based on: Lambda/IteratorAge
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_offset_lag

  • Type: Gauge
  • Description: The difference in offset between the last record written to a topic and the last record that your function’s consumer group processed
  • Based on: Lambda/OffsetLag
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_concurrent_executions_avg

  • Type: Gauge
  • Description: The average number of function instances that are processing events
  • Based on: Lambda/ConcurrentExecutions
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_concurrent_executions_max

  • Type: Gauge
  • Description: The maximum number of function instances that are processing events
  • Based on: Lambda/ConcurrentExecutions
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

aws_lambda_provisioned_concurrent_executions_max

  • Type: Gauge
  • Description: The number of function instances that are processing events using provisioned concurrency
  • Based on: Lambda/ProvisionedConcurrentExecutions
  • Labels:
    • aws_account_id
    • aws_region
    • function_name

3.6 - SQS Metrics

Generated metrics for the AWS SQS subsystem

aws_sqs_queue_info

  • Type: Info
  • Description: Information related to the SQS resource generated from the AWS API
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name
    • Tag Set

aws_sqs_approximate_age_of_oldest_message_avg

  • Type: Gauge
  • Description: The average approximate age of the oldest non-deleted message in the queue
  • Based on: SQS/ApproximateAgeOfOldestMessage
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_approximate_number_of_messages_delayed_avg

  • Type: Gauge
  • Description: The number of messages in the queue that are delayed and not available for reading immediately
  • Based on: SQS/ApproximateNumberOfMessagesDelayed
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_approximate_number_of_messages_not_visible_avg

  • Type: Gauge
  • Description: The number of messages that are being processed but not yet acknowledged
  • Based on: SQS/ApproximateNumberOfMessagesNotVisible
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_approximate_number_of_messages_visible_avg

  • Type: Gauge
  • Description: The number of messages available for retrieval from the queue
  • Based on: SQS/ApproximateNumberOfMessagesVisible
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_empty_receives_total

  • Type: Counter
  • Description: The number of ReceiveMessage API calls that did not return a message
  • Based on: SQS/NumberOfEmptyReceives
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_messages_deleted_total

  • Type: Counter
  • Description: The number of messages deleted from the queue
  • Based on: SQS/NumberOfMessagesDeleted
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_messages_sent_total

  • Type: Counter
  • Description: The number of messages added to a queue
  • Based on: SQS/NumberOfMessagesSent
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_message_size_min

  • Type: Gauge
  • Description: The min size of messages added to a queue
  • Based on: SQS/SentMessageSize
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_message_size_avg

  • Type: Gauge
  • Description: The average size of messages added to a queue
  • Based on: SQS/SentMessageSize
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

aws_sqs_message_size_max

  • Type: Gauge
  • Description: The max size of messages added to a queue
  • Based on: SQS/SentMessageSize
  • Labels:
    • aws_account_id
    • aws_region
    • queue_name

4 - Free Trial License Agreement

Grant of License

  1. Licensor (Rusty Bones Software) grants Licensee a non-exclusive, non-transferable, revocable license to use the Software (Rusty AWS CloudWatch Exporter) for evaluation purposes only.

Restrictions

  1. Licensee shall not redistribute or modify the Software.

Ownership and Rights

  1. The Software remains the exclusive property of Licensor, protected by copyright and intellectual property laws.

Non-Warranty

  1. The Software is provided “as is” without warranty of any kind, expressed or implied.

Liability Waiver

  1. Licensor shall not be liable for any damages arising from the use of the Software, including but not limited to, indirect, incidental, or consequential damages.

Term and Termination

  1. This Agreement shall remain in effect for the duration of the free trial period expressed in the license file, unless terminated earlier.

Entire Agreement

  1. This Agreement constitutes the entire understanding between the parties concerning the Software.