Class: Aws::CloudWatch::Client
- Inherits:
-
Seahorse::Client::Base
- Object
- Seahorse::Client::Base
- Aws::CloudWatch::Client
- Includes:
- Aws::ClientStubs
- Defined in:
- lib/aws-sdk-cloudwatch/client.rb
Class Attribute Summary collapse
- .identifier ⇒ Object readonly private
API Operations collapse
-
#delete_alarms(params = {}) ⇒ Struct
Deletes the specified alarms.
-
#delete_dashboards(params = {}) ⇒ Struct
Deletes all dashboards that you specify.
-
#describe_alarm_history(params = {}) ⇒ Types::DescribeAlarmHistoryOutput
Retrieves the history for the specified alarm.
-
#describe_alarms(params = {}) ⇒ Types::DescribeAlarmsOutput
Retrieves the specified alarms.
-
#describe_alarms_for_metric(params = {}) ⇒ Types::DescribeAlarmsForMetricOutput
Retrieves the alarms for the specified metric.
-
#disable_alarm_actions(params = {}) ⇒ Struct
Disables the actions for the specified alarms.
-
#enable_alarm_actions(params = {}) ⇒ Struct
Enables the actions for the specified alarms.
-
#get_dashboard(params = {}) ⇒ Types::GetDashboardOutput
Displays the details of the dashboard that you specify.
-
#get_metric_data(params = {}) ⇒ Types::GetMetricDataOutput
You can use the ‘GetMetricData` API to retrieve as many as 100 different metrics in a single request, with a total of as many as 100,800 datapoints.
-
#get_metric_statistics(params = {}) ⇒ Types::GetMetricStatisticsOutput
Gets statistics for the specified metric.
-
#get_metric_widget_image(params = {}) ⇒ Types::GetMetricWidgetImageOutput
You can use the ‘GetMetricWidgetImage` API to retrieve a snapshot graph of one or more Amazon CloudWatch metrics as a bitmap image.
-
#list_dashboards(params = {}) ⇒ Types::ListDashboardsOutput
Returns a list of the dashboards for your account.
-
#list_metrics(params = {}) ⇒ Types::ListMetricsOutput
List the specified metrics.
-
#put_dashboard(params = {}) ⇒ Types::PutDashboardOutput
Creates a dashboard if it does not already exist, or updates an existing dashboard.
-
#put_metric_alarm(params = {}) ⇒ Struct
Creates or updates an alarm and associates it with the specified metric or metric math expression.
-
#put_metric_data(params = {}) ⇒ Struct
Publishes metric data points to Amazon CloudWatch.
-
#set_alarm_state(params = {}) ⇒ Struct
Temporarily sets the state of an alarm for testing purposes.
Class Method Summary collapse
- .errors_module ⇒ Object private
Instance Method Summary collapse
- #build_request(operation_name, params = {}) ⇒ Object private
-
#initialize(options) ⇒ Client
constructor
A new instance of Client.
-
#wait_until(waiter_name, params = {}, options = {}) {|w.waiter| ... } ⇒ Boolean
Polls an API operation until a resource enters a desired state.
- #waiter_names ⇒ Object deprecated private Deprecated.
Constructor Details
#initialize(options) ⇒ Client
Returns a new instance of Client.
202 203 204 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 202 def initialize(*args) super end |
Class Attribute Details
.identifier ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
1814 1815 1816 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1814 def identifier @identifier end |
Class Method Details
.errors_module ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
1817 1818 1819 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1817 def errors_module Errors end |
Instance Method Details
#build_request(operation_name, params = {}) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1679 def build_request(operation_name, params = {}) handlers = @handlers.for(operation_name) context = Seahorse::Client::RequestContext.new( operation_name: operation_name, operation: config.api.operation(operation_name), client: self, params: params, config: config) context[:gem_name] = 'aws-sdk-cloudwatch' context[:gem_version] = '1.13.0' Seahorse::Client::Request.new(handlers, context) end |
#delete_alarms(params = {}) ⇒ Struct
Deletes the specified alarms. In the event of an error, no alarms are deleted.
226 227 228 229 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 226 def delete_alarms(params = {}, = {}) req = build_request(:delete_alarms, params) req.send_request() end |
#delete_dashboards(params = {}) ⇒ Struct
Deletes all dashboards that you specify. You may specify up to 100 dashboards to delete. If there is an error during this call, no dashboards are deleted.
250 251 252 253 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 250 def delete_dashboards(params = {}, = {}) req = build_request(:delete_dashboards, params) req.send_request() end |
#describe_alarm_history(params = {}) ⇒ Types::DescribeAlarmHistoryOutput
Retrieves the history for the specified alarm. You can filter the results by date range or item type. If an alarm name is not specified, the histories for all alarms are returned.
CloudWatch retains the history of an alarm even if you delete the alarm.
311 312 313 314 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 311 def describe_alarm_history(params = {}, = {}) req = build_request(:describe_alarm_history, params) req.send_request() end |
#describe_alarms(params = {}) ⇒ Types::DescribeAlarmsOutput
Retrieves the specified alarms. If no alarms are specified, all alarms are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action.
408 409 410 411 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 408 def describe_alarms(params = {}, = {}) req = build_request(:describe_alarms, params) req.send_request() end |
#describe_alarms_for_metric(params = {}) ⇒ Types::DescribeAlarmsForMetricOutput
Retrieves the alarms for the specified metric. To filter the results, specify a statistic, period, or unit.
513 514 515 516 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 513 def describe_alarms_for_metric(params = {}, = {}) req = build_request(:describe_alarms_for_metric, params) req.send_request() end |
#disable_alarm_actions(params = {}) ⇒ Struct
Disables the actions for the specified alarms. When an alarm’s actions are disabled, the alarm actions do not execute when the alarm state changes.
537 538 539 540 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 537 def disable_alarm_actions(params = {}, = {}) req = build_request(:disable_alarm_actions, params) req.send_request() end |
#enable_alarm_actions(params = {}) ⇒ Struct
Enables the actions for the specified alarms.
559 560 561 562 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 559 def enable_alarm_actions(params = {}, = {}) req = build_request(:enable_alarm_actions, params) req.send_request() end |
#get_dashboard(params = {}) ⇒ Types::GetDashboardOutput
Displays the details of the dashboard that you specify.
To copy an existing dashboard, use ‘GetDashboard`, and then use the data returned within `DashboardBody` as the template for the new dashboard when you call `PutDashboard` to create the copy.
595 596 597 598 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 595 def get_dashboard(params = {}, = {}) req = build_request(:get_dashboard, params) req.send_request() end |
#get_metric_data(params = {}) ⇒ Types::GetMetricDataOutput
You can use the ‘GetMetricData` API to retrieve as many as 100 different metrics in a single request, with a total of as many as 100,800 datapoints. You can also optionally perform math expressions on the values of the returned statistics, to create new time series that represent new insights into your data. For example, using Lambda metrics, you could divide the Errors metric by the Invocations metric to get an error rate time series. For more information about metric math expressions, see [Metric Math Syntax and Functions] in the *Amazon CloudWatch User Guide*.
Calls to the ‘GetMetricData` API have a different pricing structure than calls to `GetMetricStatistics`. For more information about pricing, see [Amazon CloudWatch Pricing].
Amazon CloudWatch retains metric data as follows:
-
Data points with a period of less than 60 seconds are available for 3 hours. These data points are high-resolution metrics and are available only for custom metrics that have been defined with a ‘StorageResolution` of 1.
-
Data points with a period of 60 seconds (1-minute) are available for 15 days.
-
Data points with a period of 300 seconds (5-minute) are available for 63 days.
-
Data points with a period of 3600 seconds (1 hour) are available for 455 days (15 months).
Data points that are initially published with a shorter period are aggregated together for long-term storage. For example, if you collect data using a period of 1 minute, the data remains available for 15 days with 1-minute resolution. After 15 days, this data is still available, but is aggregated and retrievable only with a resolution of 5 minutes. After 63 days, the data is further aggregated and is available with a resolution of 1 hour.
[1]: docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax [2]: aws.amazon.com/cloudwatch/pricing/
740 741 742 743 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 740 def get_metric_data(params = {}, = {}) req = build_request(:get_metric_data, params) req.send_request() end |
#get_metric_statistics(params = {}) ⇒ Types::GetMetricStatisticsOutput
Gets statistics for the specified metric.
The maximum number of data points returned from a single call is 1,440. If you request more than 1,440 data points, CloudWatch returns an error. To reduce the number of data points, you can narrow the specified time range and make multiple requests across adjacent time ranges, or you can increase the specified period. Data points are not returned in chronological order.
CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-hour period, CloudWatch aggregates all data points with time stamps that fall within each one-hour period. Therefore, the number of values aggregated by CloudWatch is larger than the number of data points returned.
CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true:
-
The SampleCount value of the statistic set is 1.
-
The Min and the Max values of the statistic set are equal.
Percentile statistics are not available for metrics when any of the metric values are negative numbers.
Amazon CloudWatch retains metric data as follows:
-
Data points with a period of less than 60 seconds are available for 3 hours. These data points are high-resolution metrics and are available only for custom metrics that have been defined with a ‘StorageResolution` of 1.
-
Data points with a period of 60 seconds (1-minute) are available for 15 days.
-
Data points with a period of 300 seconds (5-minute) are available for 63 days.
-
Data points with a period of 3600 seconds (1 hour) are available for 455 days (15 months).
Data points that are initially published with a shorter period are aggregated together for long-term storage. For example, if you collect data using a period of 1 minute, the data remains available for 15 days with 1-minute resolution. After 15 days, this data is still available, but is aggregated and retrievable only with a resolution of 5 minutes. After 63 days, the data is further aggregated and is available with a resolution of 1 hour.
CloudWatch started retaining 5-minute and 1-hour metric data as of July 9, 2016.
For information about metrics and dimensions supported by AWS services, see the [Amazon CloudWatch Metrics and Dimensions Reference] in the *Amazon CloudWatch User Guide*.
[1]: docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html
951 952 953 954 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 951 def get_metric_statistics(params = {}, = {}) req = build_request(:get_metric_statistics, params) req.send_request() end |
#get_metric_widget_image(params = {}) ⇒ Types::GetMetricWidgetImageOutput
You can use the ‘GetMetricWidgetImage` API to retrieve a snapshot graph of one or more Amazon CloudWatch metrics as a bitmap image. You can then embed this image into your services and products, such as wiki pages, reports, and documents. You could also retrieve images regularly, such as every minute, and create your own custom live dashboard.
The graph you retrieve can include all CloudWatch metric graph features, including metric math and horizontal and vertical annotations.
There is a limit of 20 transactions per second for this API. Each ‘GetMetricWidgetImage` action has the following limits:
-
As many as 100 metrics in the graph.
-
Up to 100 KB uncompressed payload.
1040 1041 1042 1043 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1040 def (params = {}, = {}) req = build_request(:get_metric_widget_image, params) req.send_request() end |
#list_dashboards(params = {}) ⇒ Types::ListDashboardsOutput
Returns a list of the dashboards for your account. If you include ‘DashboardNamePrefix`, only those dashboards with names starting with the prefix are listed. Otherwise, all dashboards in your account are listed.
‘ListDashboards` returns up to 1000 results on one page. If there are more than 1000 dashboards, you can call `ListDashboards` again and include the value you received for `NextToken` in the first call, to receive the next 1000 results.
1089 1090 1091 1092 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1089 def list_dashboards(params = {}, = {}) req = build_request(:list_dashboards, params) req.send_request() end |
#list_metrics(params = {}) ⇒ Types::ListMetricsOutput
List the specified metrics. You can use the returned metrics with GetMetricData or GetMetricStatistics to obtain statistical data.
Up to 500 results are returned for any one call. To retrieve additional results, use the returned token with subsequent calls.
After you create a metric, allow up to fifteen minutes before the metric appears. Statistics about the metric, however, are available sooner using GetMetricData or GetMetricStatistics.
1150 1151 1152 1153 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1150 def list_metrics(params = {}, = {}) req = build_request(:list_metrics, params) req.send_request() end |
#put_dashboard(params = {}) ⇒ Types::PutDashboardOutput
Creates a dashboard if it does not already exist, or updates an existing dashboard. If you update a dashboard, the entire contents are replaced with what you specify here.
There is no limit to the number of dashboards in your account. All dashboards in your account are global, not region-specific.
A simple way to create a dashboard using ‘PutDashboard` is to copy an existing dashboard. To copy an existing dashboard using the console, you can load the dashboard and then use the View/edit source command in the Actions menu to display the JSON block for that dashboard. Another way to copy a dashboard is to use `GetDashboard`, and then use the data returned within `DashboardBody` as the template for the new dashboard when you call `PutDashboard`.
When you create a dashboard with ‘PutDashboard`, a good practice is to add a text widget at the top of the dashboard with a message that the dashboard was created by script and should not be changed in the console. This message could also point console users to the location of the `DashboardBody` script or the CloudFormation template used to create the dashboard.
1213 1214 1215 1216 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1213 def put_dashboard(params = {}, = {}) req = build_request(:put_dashboard, params) req.send_request() end |
#put_metric_alarm(params = {}) ⇒ Struct
Creates or updates an alarm and associates it with the specified metric or metric math expression.
When this operation creates an alarm, the alarm state is immediately set to ‘INSUFFICIENT_DATA`. The alarm is then evaluated and its state is set appropriately. Any actions associated with the new state are then executed.
When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm.
If you are an IAM user, you must have Amazon EC2 permissions for some alarm operations:
-
‘iam:CreateServiceLinkedRole` for all alarms with EC2 actions
-
‘ec2:DescribeInstanceStatus` and `ec2:DescribeInstances` for all alarms on EC2 instance status metrics
-
‘ec2:StopInstances` for alarms with stop actions
-
‘ec2:TerminateInstances` for alarms with terminate actions
-
‘ec2:DescribeInstanceRecoveryAttribute` and `ec2:RecoverInstances` for alarms with recover actions
If you have read/write permissions for Amazon CloudWatch but not for Amazon EC2, you can still create an alarm, but the stop or terminate actions are not performed. However, if you are later granted the required permissions, the alarm actions that you created earlier are performed.
If you are using an IAM role (for example, an EC2 instance profile), you cannot stop or terminate the instance using alarm actions. However, you can still see the alarm state and perform any other actions such as Amazon SNS notifications or Auto Scaling policies.
If you are using temporary security credentials granted using AWS STS, you cannot stop or terminate an EC2 instance using alarm actions.
The first time you create an alarm in the AWS Management Console, the CLI, or by using the PutMetricAlarm API, CloudWatch creates the necessary service-linked role for you. The service-linked role is called ‘AWSServiceRoleForCloudWatchEvents`. For more information, see [AWS service-linked role].
1526 1527 1528 1529 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1526 def put_metric_alarm(params = {}, = {}) req = build_request(:put_metric_alarm, params) req.send_request() end |
#put_metric_data(params = {}) ⇒ Struct
Publishes metric data points to Amazon CloudWatch. CloudWatch associates the data points with the specified metric. If the specified metric does not exist, CloudWatch creates the metric. When CloudWatch creates a metric, it can take up to fifteen minutes for the metric to appear in calls to ListMetrics.
You can publish either individual data points in the ‘Value` field, or arrays of values and the number of times each value occurred during the period by using the `Values` and `Counts` fields in the `MetricDatum` structure. Using the `Values` and `Counts` method enables you to publish up to 150 values per metric with one `PutMetricData` request, and supports retrieving percentile statistics on this data.
Each ‘PutMetricData` request is limited to 40 KB in size for HTTP POST requests. You can send a payload compressed by gzip. Each request is also limited to no more than 20 different metrics.
Although the ‘Value` parameter accepts numbers of type `Double`, CloudWatch rejects values that are either too small or too large. Values must be in the range of 8.515920e-109 to 1.174271e+108 (Base 10) or 2e-360 to 2e360 (Base 2). In addition, special values (for example, NaN, +Infinity, -Infinity) are not supported.
You can use up to 10 dimensions per metric to further clarify what data the metric collects. For more information about specifying dimensions, see [Publishing Metrics] in the *Amazon CloudWatch User Guide*.
Data points with time stamps from 24 hours ago or longer can take at least 48 hours to become available for GetMetricData or GetMetricStatistics from the time they are submitted.
CloudWatch needs raw data points to calculate percentile statistics. If you publish data using a statistic set instead, you can only retrieve percentile statistics for this data if one of the following conditions is true:
-
The ‘SampleCount` value of the statistic set is 1 and `Min`, `Max`, and `Sum` are all equal.
-
The ‘Min` and `Max` are equal, and `Sum` is equal to `Min` multiplied by `SampleCount`.
[1]: docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html
1625 1626 1627 1628 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1625 def put_metric_data(params = {}, = {}) req = build_request(:put_metric_data, params) req.send_request() end |
#set_alarm_state(params = {}) ⇒ Struct
Temporarily sets the state of an alarm for testing purposes. When the updated state differs from the previous value, the action configured for the appropriate state is invoked. For example, if your alarm is configured to send an Amazon SNS message when an alarm is triggered, temporarily changing the alarm state to ‘ALARM` sends an SNS message. The alarm returns to its actual state (often within seconds). Because the alarm state change happens quickly, it is typically only visible in the alarm’s History tab in the Amazon CloudWatch console or through DescribeAlarmHistory.
1670 1671 1672 1673 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1670 def set_alarm_state(params = {}, = {}) req = build_request(:set_alarm_state, params) req.send_request() end |
#wait_until(waiter_name, params = {}, options = {}) {|w.waiter| ... } ⇒ Boolean
Polls an API operation until a resource enters a desired state.
## Basic Usage
A waiter will call an API operation until:
-
It is successful
-
It enters a terminal state
-
It makes the maximum number of attempts
In between attempts, the waiter will sleep.
# polls in a loop, sleeping between attempts
client.waiter_until(waiter_name, params)
## Configuration
You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. You can pass configuration as the final arguments hash.
# poll for ~25 seconds
client.wait_until(waiter_name, params, {
max_attempts: 5,
delay: 5,
})
## Callbacks
You can be notified before each polling attempt and before each delay. If you throw ‘:success` or `:failure` from these callbacks, it will terminate the waiter.
started_at = Time.now
client.wait_until(waiter_name, params, {
# disable max attempts
max_attempts: nil,
# poll for 1 hour, instead of a number of attempts
before_wait: -> (attempts, response) do
throw :failure if Time.now - started_at > 3600
end
})
## Handling Errors
When a waiter is unsuccessful, it will raise an error. All of the failure errors extend from Waiters::Errors::WaiterFailed.
begin
client.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
# resource did not enter the desired state in time
end
## Valid Waiters
The following table lists the valid waiter names, the operations they call, and the default ‘:delay` and `:max_attempts` values.
| waiter_name | params | :delay | :max_attempts | | ———— | —————— | ——– | ————- | | alarm_exists | #describe_alarms | 5 | 40 |
1780 1781 1782 1783 1784 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1780 def wait_until(waiter_name, params = {}, = {}) w = waiter(waiter_name, ) yield(w.waiter) if block_given? # deprecated w.wait(params) end |
#waiter_names ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
1788 1789 1790 |
# File 'lib/aws-sdk-cloudwatch/client.rb', line 1788 def waiter_names waiters.keys end |