{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.ComputeOptimizer.Types.UtilizationMetric -- Copyright : (c) 2013-2021 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.ComputeOptimizer.Types.UtilizationMetric where import Amazonka.ComputeOptimizer.Types.MetricName import Amazonka.ComputeOptimizer.Types.MetricStatistic import qualified Amazonka.Core as Core import qualified Amazonka.Lens as Lens import qualified Amazonka.Prelude as Prelude -- | Describes a utilization metric of a resource, such as an Amazon EC2 -- instance. -- -- Compare the utilization metric data of your resource against its -- projected utilization metric data to determine the performance -- difference between your current resource and the recommended option. -- -- /See:/ 'newUtilizationMetric' smart constructor. data UtilizationMetric = UtilizationMetric' { -- | The value of the utilization metric. UtilizationMetric -> Maybe Double value :: Prelude.Maybe Prelude.Double, -- | The name of the utilization metric. -- -- The following utilization metrics are available: -- -- - @Cpu@ - The percentage of allocated EC2 compute units that are -- currently in use on the instance. This metric identifies the -- processing power required to run an application on the instance. -- -- Depending on the instance type, tools in your operating system can -- show a lower percentage than CloudWatch when the instance is not -- allocated a full processor core. -- -- Units: Percent -- -- - @Memory@ - The percentage of memory that is currently in use on the -- instance. This metric identifies the amount of memory required to -- run an application on the instance. -- -- Units: Percent -- -- The @Memory@ metric is returned only for resources that have the -- unified CloudWatch agent installed on them. For more information, -- see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent Enabling Memory Utilization with the CloudWatch Agent>. -- -- - @EBS_READ_OPS_PER_SECOND@ - The completed read operations from all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_WRITE_OPS_PER_SECOND@ - The completed write operations to all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_READ_BYTES_PER_SECOND@ - The bytes read from all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @EBS_WRITE_BYTES_PER_SECOND@ - The bytes written to all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @DISK_READ_OPS_PER_SECOND@ - The completed read operations from all -- instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_OPS_PER_SECOND@ - The completed write operations from -- all instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_READ_BYTES_PER_SECOND@ - The bytes read from all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application reads from the disk -- of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_BYTES_PER_SECOND@ - The bytes written to all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application writes onto the -- disk of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @NETWORK_IN_BYTES_PER_SECOND@ - The number of bytes received by the -- instance on all network interfaces. This metric identifies the -- volume of incoming network traffic to a single instance. -- -- - @NETWORK_OUT_BYTES_PER_SECOND@ - The number of bytes sent out by the -- instance on all network interfaces. This metric identifies the -- volume of outgoing network traffic from a single instance. -- -- - @NETWORK_PACKETS_IN_PER_SECOND@ - The number of packets received by -- the instance on all network interfaces. This metric identifies the -- volume of incoming traffic in terms of the number of packets on a -- single instance. -- -- - @NETWORK_PACKETS_OUT_PER_SECOND@ - The number of packets sent out by -- the instance on all network interfaces. This metric identifies the -- volume of outgoing traffic in terms of the number of packets on a -- single instance. UtilizationMetric -> Maybe MetricName name :: Prelude.Maybe MetricName, -- | The statistic of the utilization metric. -- -- The Compute Optimizer API, Command Line Interface (CLI), and SDKs return -- utilization metrics using only the @Maximum@ statistic, which is the -- highest value observed during the specified period. -- -- The Compute Optimizer console displays graphs for some utilization -- metrics using the @Average@ statistic, which is the value of @Sum@ \/ -- @SampleCount@ during the specified period. For more information, see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html Viewing resource recommendations> -- in the /Compute Optimizer User Guide/. You can also get averaged -- utilization metric data for your resources using Amazon CloudWatch. For -- more information, see the -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html Amazon CloudWatch User Guide>. UtilizationMetric -> Maybe MetricStatistic statistic :: Prelude.Maybe MetricStatistic } deriving (UtilizationMetric -> UtilizationMetric -> Bool (UtilizationMetric -> UtilizationMetric -> Bool) -> (UtilizationMetric -> UtilizationMetric -> Bool) -> Eq UtilizationMetric forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: UtilizationMetric -> UtilizationMetric -> Bool $c/= :: UtilizationMetric -> UtilizationMetric -> Bool == :: UtilizationMetric -> UtilizationMetric -> Bool $c== :: UtilizationMetric -> UtilizationMetric -> Bool Prelude.Eq, ReadPrec [UtilizationMetric] ReadPrec UtilizationMetric Int -> ReadS UtilizationMetric ReadS [UtilizationMetric] (Int -> ReadS UtilizationMetric) -> ReadS [UtilizationMetric] -> ReadPrec UtilizationMetric -> ReadPrec [UtilizationMetric] -> Read UtilizationMetric forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [UtilizationMetric] $creadListPrec :: ReadPrec [UtilizationMetric] readPrec :: ReadPrec UtilizationMetric $creadPrec :: ReadPrec UtilizationMetric readList :: ReadS [UtilizationMetric] $creadList :: ReadS [UtilizationMetric] readsPrec :: Int -> ReadS UtilizationMetric $creadsPrec :: Int -> ReadS UtilizationMetric Prelude.Read, Int -> UtilizationMetric -> ShowS [UtilizationMetric] -> ShowS UtilizationMetric -> String (Int -> UtilizationMetric -> ShowS) -> (UtilizationMetric -> String) -> ([UtilizationMetric] -> ShowS) -> Show UtilizationMetric forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [UtilizationMetric] -> ShowS $cshowList :: [UtilizationMetric] -> ShowS show :: UtilizationMetric -> String $cshow :: UtilizationMetric -> String showsPrec :: Int -> UtilizationMetric -> ShowS $cshowsPrec :: Int -> UtilizationMetric -> ShowS Prelude.Show, (forall x. UtilizationMetric -> Rep UtilizationMetric x) -> (forall x. Rep UtilizationMetric x -> UtilizationMetric) -> Generic UtilizationMetric forall x. Rep UtilizationMetric x -> UtilizationMetric forall x. UtilizationMetric -> Rep UtilizationMetric x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep UtilizationMetric x -> UtilizationMetric $cfrom :: forall x. UtilizationMetric -> Rep UtilizationMetric x Prelude.Generic) -- | -- Create a value of 'UtilizationMetric' with all optional fields omitted. -- -- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'value', 'utilizationMetric_value' - The value of the utilization metric. -- -- 'name', 'utilizationMetric_name' - The name of the utilization metric. -- -- The following utilization metrics are available: -- -- - @Cpu@ - The percentage of allocated EC2 compute units that are -- currently in use on the instance. This metric identifies the -- processing power required to run an application on the instance. -- -- Depending on the instance type, tools in your operating system can -- show a lower percentage than CloudWatch when the instance is not -- allocated a full processor core. -- -- Units: Percent -- -- - @Memory@ - The percentage of memory that is currently in use on the -- instance. This metric identifies the amount of memory required to -- run an application on the instance. -- -- Units: Percent -- -- The @Memory@ metric is returned only for resources that have the -- unified CloudWatch agent installed on them. For more information, -- see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent Enabling Memory Utilization with the CloudWatch Agent>. -- -- - @EBS_READ_OPS_PER_SECOND@ - The completed read operations from all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_WRITE_OPS_PER_SECOND@ - The completed write operations to all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_READ_BYTES_PER_SECOND@ - The bytes read from all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @EBS_WRITE_BYTES_PER_SECOND@ - The bytes written to all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @DISK_READ_OPS_PER_SECOND@ - The completed read operations from all -- instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_OPS_PER_SECOND@ - The completed write operations from -- all instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_READ_BYTES_PER_SECOND@ - The bytes read from all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application reads from the disk -- of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_BYTES_PER_SECOND@ - The bytes written to all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application writes onto the -- disk of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @NETWORK_IN_BYTES_PER_SECOND@ - The number of bytes received by the -- instance on all network interfaces. This metric identifies the -- volume of incoming network traffic to a single instance. -- -- - @NETWORK_OUT_BYTES_PER_SECOND@ - The number of bytes sent out by the -- instance on all network interfaces. This metric identifies the -- volume of outgoing network traffic from a single instance. -- -- - @NETWORK_PACKETS_IN_PER_SECOND@ - The number of packets received by -- the instance on all network interfaces. This metric identifies the -- volume of incoming traffic in terms of the number of packets on a -- single instance. -- -- - @NETWORK_PACKETS_OUT_PER_SECOND@ - The number of packets sent out by -- the instance on all network interfaces. This metric identifies the -- volume of outgoing traffic in terms of the number of packets on a -- single instance. -- -- 'statistic', 'utilizationMetric_statistic' - The statistic of the utilization metric. -- -- The Compute Optimizer API, Command Line Interface (CLI), and SDKs return -- utilization metrics using only the @Maximum@ statistic, which is the -- highest value observed during the specified period. -- -- The Compute Optimizer console displays graphs for some utilization -- metrics using the @Average@ statistic, which is the value of @Sum@ \/ -- @SampleCount@ during the specified period. For more information, see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html Viewing resource recommendations> -- in the /Compute Optimizer User Guide/. You can also get averaged -- utilization metric data for your resources using Amazon CloudWatch. For -- more information, see the -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html Amazon CloudWatch User Guide>. newUtilizationMetric :: UtilizationMetric newUtilizationMetric :: UtilizationMetric newUtilizationMetric = UtilizationMetric' :: Maybe Double -> Maybe MetricName -> Maybe MetricStatistic -> UtilizationMetric UtilizationMetric' { $sel:value:UtilizationMetric' :: Maybe Double value = Maybe Double forall a. Maybe a Prelude.Nothing, $sel:name:UtilizationMetric' :: Maybe MetricName name = Maybe MetricName forall a. Maybe a Prelude.Nothing, $sel:statistic:UtilizationMetric' :: Maybe MetricStatistic statistic = Maybe MetricStatistic forall a. Maybe a Prelude.Nothing } -- | The value of the utilization metric. utilizationMetric_value :: Lens.Lens' UtilizationMetric (Prelude.Maybe Prelude.Double) utilizationMetric_value :: (Maybe Double -> f (Maybe Double)) -> UtilizationMetric -> f UtilizationMetric utilizationMetric_value = (UtilizationMetric -> Maybe Double) -> (UtilizationMetric -> Maybe Double -> UtilizationMetric) -> Lens UtilizationMetric UtilizationMetric (Maybe Double) (Maybe Double) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\UtilizationMetric' {Maybe Double value :: Maybe Double $sel:value:UtilizationMetric' :: UtilizationMetric -> Maybe Double value} -> Maybe Double value) (\s :: UtilizationMetric s@UtilizationMetric' {} Maybe Double a -> UtilizationMetric s {$sel:value:UtilizationMetric' :: Maybe Double value = Maybe Double a} :: UtilizationMetric) -- | The name of the utilization metric. -- -- The following utilization metrics are available: -- -- - @Cpu@ - The percentage of allocated EC2 compute units that are -- currently in use on the instance. This metric identifies the -- processing power required to run an application on the instance. -- -- Depending on the instance type, tools in your operating system can -- show a lower percentage than CloudWatch when the instance is not -- allocated a full processor core. -- -- Units: Percent -- -- - @Memory@ - The percentage of memory that is currently in use on the -- instance. This metric identifies the amount of memory required to -- run an application on the instance. -- -- Units: Percent -- -- The @Memory@ metric is returned only for resources that have the -- unified CloudWatch agent installed on them. For more information, -- see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent Enabling Memory Utilization with the CloudWatch Agent>. -- -- - @EBS_READ_OPS_PER_SECOND@ - The completed read operations from all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_WRITE_OPS_PER_SECOND@ - The completed write operations to all -- EBS volumes attached to the instance in a specified period of time. -- -- Unit: Count -- -- - @EBS_READ_BYTES_PER_SECOND@ - The bytes read from all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @EBS_WRITE_BYTES_PER_SECOND@ - The bytes written to all EBS volumes -- attached to the instance in a specified period of time. -- -- Unit: Bytes -- -- - @DISK_READ_OPS_PER_SECOND@ - The completed read operations from all -- instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_OPS_PER_SECOND@ - The completed write operations from -- all instance store volumes available to the instance in a specified -- period of time. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_READ_BYTES_PER_SECOND@ - The bytes read from all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application reads from the disk -- of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @DISK_WRITE_BYTES_PER_SECOND@ - The bytes written to all instance -- store volumes available to the instance. This metric is used to -- determine the volume of the data the application writes onto the -- disk of the instance. This can be used to determine the speed of the -- application. -- -- If there are no instance store volumes, either the value is @0@ or -- the metric is not reported. -- -- - @NETWORK_IN_BYTES_PER_SECOND@ - The number of bytes received by the -- instance on all network interfaces. This metric identifies the -- volume of incoming network traffic to a single instance. -- -- - @NETWORK_OUT_BYTES_PER_SECOND@ - The number of bytes sent out by the -- instance on all network interfaces. This metric identifies the -- volume of outgoing network traffic from a single instance. -- -- - @NETWORK_PACKETS_IN_PER_SECOND@ - The number of packets received by -- the instance on all network interfaces. This metric identifies the -- volume of incoming traffic in terms of the number of packets on a -- single instance. -- -- - @NETWORK_PACKETS_OUT_PER_SECOND@ - The number of packets sent out by -- the instance on all network interfaces. This metric identifies the -- volume of outgoing traffic in terms of the number of packets on a -- single instance. utilizationMetric_name :: Lens.Lens' UtilizationMetric (Prelude.Maybe MetricName) utilizationMetric_name :: (Maybe MetricName -> f (Maybe MetricName)) -> UtilizationMetric -> f UtilizationMetric utilizationMetric_name = (UtilizationMetric -> Maybe MetricName) -> (UtilizationMetric -> Maybe MetricName -> UtilizationMetric) -> Lens UtilizationMetric UtilizationMetric (Maybe MetricName) (Maybe MetricName) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\UtilizationMetric' {Maybe MetricName name :: Maybe MetricName $sel:name:UtilizationMetric' :: UtilizationMetric -> Maybe MetricName name} -> Maybe MetricName name) (\s :: UtilizationMetric s@UtilizationMetric' {} Maybe MetricName a -> UtilizationMetric s {$sel:name:UtilizationMetric' :: Maybe MetricName name = Maybe MetricName a} :: UtilizationMetric) -- | The statistic of the utilization metric. -- -- The Compute Optimizer API, Command Line Interface (CLI), and SDKs return -- utilization metrics using only the @Maximum@ statistic, which is the -- highest value observed during the specified period. -- -- The Compute Optimizer console displays graphs for some utilization -- metrics using the @Average@ statistic, which is the value of @Sum@ \/ -- @SampleCount@ during the specified period. For more information, see -- <https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html Viewing resource recommendations> -- in the /Compute Optimizer User Guide/. You can also get averaged -- utilization metric data for your resources using Amazon CloudWatch. For -- more information, see the -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html Amazon CloudWatch User Guide>. utilizationMetric_statistic :: Lens.Lens' UtilizationMetric (Prelude.Maybe MetricStatistic) utilizationMetric_statistic :: (Maybe MetricStatistic -> f (Maybe MetricStatistic)) -> UtilizationMetric -> f UtilizationMetric utilizationMetric_statistic = (UtilizationMetric -> Maybe MetricStatistic) -> (UtilizationMetric -> Maybe MetricStatistic -> UtilizationMetric) -> Lens UtilizationMetric UtilizationMetric (Maybe MetricStatistic) (Maybe MetricStatistic) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\UtilizationMetric' {Maybe MetricStatistic statistic :: Maybe MetricStatistic $sel:statistic:UtilizationMetric' :: UtilizationMetric -> Maybe MetricStatistic statistic} -> Maybe MetricStatistic statistic) (\s :: UtilizationMetric s@UtilizationMetric' {} Maybe MetricStatistic a -> UtilizationMetric s {$sel:statistic:UtilizationMetric' :: Maybe MetricStatistic statistic = Maybe MetricStatistic a} :: UtilizationMetric) instance Core.FromJSON UtilizationMetric where parseJSON :: Value -> Parser UtilizationMetric parseJSON = String -> (Object -> Parser UtilizationMetric) -> Value -> Parser UtilizationMetric forall a. String -> (Object -> Parser a) -> Value -> Parser a Core.withObject String "UtilizationMetric" ( \Object x -> Maybe Double -> Maybe MetricName -> Maybe MetricStatistic -> UtilizationMetric UtilizationMetric' (Maybe Double -> Maybe MetricName -> Maybe MetricStatistic -> UtilizationMetric) -> Parser (Maybe Double) -> Parser (Maybe MetricName -> Maybe MetricStatistic -> UtilizationMetric) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> (Object x Object -> Text -> Parser (Maybe Double) forall a. FromJSON a => Object -> Text -> Parser (Maybe a) Core..:? Text "value") Parser (Maybe MetricName -> Maybe MetricStatistic -> UtilizationMetric) -> Parser (Maybe MetricName) -> Parser (Maybe MetricStatistic -> UtilizationMetric) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> (Object x Object -> Text -> Parser (Maybe MetricName) forall a. FromJSON a => Object -> Text -> Parser (Maybe a) Core..:? Text "name") Parser (Maybe MetricStatistic -> UtilizationMetric) -> Parser (Maybe MetricStatistic) -> Parser UtilizationMetric forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> (Object x Object -> Text -> Parser (Maybe MetricStatistic) forall a. FromJSON a => Object -> Text -> Parser (Maybe a) Core..:? Text "statistic") ) instance Prelude.Hashable UtilizationMetric instance Prelude.NFData UtilizationMetric