Skip to content

Commit 4f5e623

Browse files
authored
[aws][fix] Add clear names and fix BucketSize collection of the S3 resource (#2094)
1 parent 76c72aa commit 4f5e623

File tree

13 files changed

+111
-111
lines changed

13 files changed

+111
-111
lines changed

plugins/aws/fix_plugin_aws/resource/cloudwatch.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import logging
33
import re
44
from datetime import datetime, timedelta
5-
from typing import Callable, ClassVar, Dict, List, Optional, Type, Tuple, TypeVar, Any
5+
from typing import Callable, ClassVar, Dict, List, Optional, Type, Tuple, TypeVar, Any, Union
66
from concurrent.futures import as_completed
77

88
from attr import define, field, frozen
@@ -455,8 +455,8 @@ def delete_resource(self, client: AwsClient, graph: Graph) -> bool:
455455

456456
@define(hash=True, frozen=True)
457457
class AwsCloudwatchQuery:
458-
name: MetricName # final name of the metric
459-
metric_name: str # name of the metric in cloudwatch
458+
metric_name: Union[MetricName, str] # final name of the metric
459+
query_name: str # name of the metric in cloudwatch
460460
namespace: str # namespace of the metric in cloudwatch
461461
dimensions: Tuple[Tuple[str, str], ...] # dimensions of the metric in cloudwatch
462462
period: timedelta # period of the metric in cloudwatch
@@ -474,7 +474,7 @@ def to_json(self) -> Json:
474474
"MetricStat": {
475475
"Metric": {
476476
"Namespace": self.namespace,
477-
"MetricName": self.metric_name,
477+
"MetricName": self.query_name,
478478
"Dimensions": [{"Name": k, "Value": v} for k, v in self.dimensions],
479479
},
480480
"Period": int((self.period.total_seconds() / 60) * 60), # round to the next 60 seconds
@@ -487,11 +487,11 @@ def to_json(self) -> Json:
487487
@staticmethod
488488
def create(
489489
*,
490-
metric_name: str,
490+
query_name: str,
491491
namespace: str,
492492
period: timedelta,
493493
ref_id: str,
494-
name: MetricName,
494+
metric_name: Union[MetricName, str],
495495
normalization: Optional[MetricNormalization] = None,
496496
metric_id: Optional[str] = None,
497497
stat: str = "Sum",
@@ -501,11 +501,11 @@ def create(
501501
**dimensions: str,
502502
) -> "AwsCloudwatchQuery":
503503
dims = "_".join(f"{k}+{v}" for k, v in dimensions.items())
504-
rid = metric_id or re.sub("\\W", "_", f"{metric_name}-{namespace}-{dims}-{stat}".lower())
504+
rid = metric_id or re.sub("\\W", "_", f"{query_name}-{namespace}-{dims}-{stat}".lower())
505505
# noinspection PyTypeChecker
506506
return AwsCloudwatchQuery(
507-
name=name,
508507
metric_name=metric_name,
508+
query_name=query_name,
509509
namespace=namespace,
510510
period=period,
511511
dimensions=tuple(dimensions.items()),
@@ -694,7 +694,7 @@ def update_resource_metrics(
694694

695695
for metric_value, maybe_stat_name in normalizer.compute_stats(metric.metric_values):
696696
try:
697-
metric_name = query.name
697+
metric_name = query.metric_name
698698
if not metric_name:
699699
continue
700700
name = metric_name + "_" + normalizer.unit

plugins/aws/fix_plugin_aws/resource/ec2.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -572,8 +572,8 @@ def update_atime_mtime() -> None:
572572
lookup[vid] = volume
573573
queries.append(
574574
AwsCloudwatchQuery.create(
575-
name=MetricName.VolumeRead,
576-
metric_name="VolumeReadOps",
575+
metric_name=MetricName.VolumeRead,
576+
query_name="VolumeReadOps",
577577
namespace="AWS/EBS",
578578
period=delta,
579579
ref_id=vid,
@@ -582,8 +582,8 @@ def update_atime_mtime() -> None:
582582
)
583583
queries.append(
584584
AwsCloudwatchQuery.create(
585-
name=MetricName.VolumeWrite,
586-
metric_name="VolumeWriteOps",
585+
metric_name=MetricName.VolumeWrite,
586+
query_name="VolumeWriteOps",
587587
namespace="AWS/EBS",
588588
period=delta,
589589
ref_id=vid,
@@ -624,11 +624,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
624624
queries.extend(
625625
[
626626
AwsCloudwatchQuery.create(
627-
metric_name=name,
627+
query_name=name,
628628
namespace="AWS/EBS",
629629
period=period,
630630
ref_id=self.id,
631-
name=metric_name,
631+
metric_name=metric_name,
632632
normalization=normalizer_factory.bytes_sum(partial(bytes_to_megabytes_per_second, period=period)),
633633
stat="Sum",
634634
unit="Bytes",
@@ -643,11 +643,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
643643
queries.extend(
644644
[
645645
AwsCloudwatchQuery.create(
646-
metric_name=name,
646+
query_name=name,
647647
namespace="AWS/EBS",
648648
period=period,
649649
ref_id=self.id,
650-
name=metric_name,
650+
metric_name=metric_name,
651651
normalization=normalizer_factory.iops_sum(partial(operations_to_iops, period=period)),
652652
stat="Sum",
653653
unit="Count",
@@ -662,11 +662,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
662662
queries.extend(
663663
[
664664
AwsCloudwatchQuery.create(
665-
metric_name=name,
665+
query_name=name,
666666
namespace="AWS/EBS",
667667
period=period,
668668
ref_id=self.id,
669-
name=metric_name,
669+
metric_name=metric_name,
670670
normalization=normalizer_factory.seconds_sum,
671671
stat="Sum",
672672
unit="Seconds",
@@ -681,12 +681,12 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
681681
queries.extend(
682682
[
683683
AwsCloudwatchQuery.create(
684-
metric_name="VolumeQueueLength",
684+
query_name="VolumeQueueLength",
685685
namespace="AWS/EBS",
686686
period=delta,
687687
ref_id=self.id,
688688
stat=stat,
689-
name=MetricName.VolumeQueueLength,
689+
metric_name=MetricName.VolumeQueueLength,
690690
normalization=normalizer_factory.count,
691691
unit="Count",
692692
VolumeId=self.id,
@@ -1409,11 +1409,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
14091409
queries.extend(
14101410
[
14111411
AwsCloudwatchQuery.create(
1412-
metric_name="CPUUtilization",
1412+
query_name="CPUUtilization",
14131413
namespace="AWS/EC2",
14141414
period=delta_since_last_scan,
14151415
ref_id=self.id,
1416-
name=MetricName.CpuUtilization,
1416+
metric_name=MetricName.CpuUtilization,
14171417
normalization=normalizer_factory.percent,
14181418
stat=stat,
14191419
unit="Percent",
@@ -1425,11 +1425,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
14251425
queries.extend(
14261426
[
14271427
AwsCloudwatchQuery.create(
1428-
metric_name=name,
1428+
query_name=name,
14291429
namespace="AWS/EC2",
14301430
period=period,
14311431
ref_id=self.id,
1432-
name=metric_name,
1432+
metric_name=metric_name,
14331433
normalization=normalizer_factory.bytes_sum(partial(bytes_to_megabits_per_second, period=period)),
14341434
stat="Sum",
14351435
unit="Bytes",
@@ -1442,11 +1442,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
14421442
queries.extend(
14431443
[
14441444
AwsCloudwatchQuery.create(
1445-
metric_name=name,
1445+
query_name=name,
14461446
namespace="AWS/EC2",
14471447
period=period,
14481448
ref_id=self.id,
1449-
name=metric_name,
1449+
metric_name=metric_name,
14501450
normalization=normalizer_factory.count_sum(lambda x: round(x / period.total_seconds(), 4)),
14511451
stat="Sum",
14521452
unit="Count",
@@ -1462,11 +1462,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
14621462
queries.extend(
14631463
[
14641464
AwsCloudwatchQuery.create(
1465-
metric_name=name,
1465+
query_name=name,
14661466
namespace="AWS/EC2",
14671467
period=period,
14681468
ref_id=self.id,
1469-
name=metric_name,
1469+
metric_name=metric_name,
14701470
normalization=normalizer_factory.iops_sum(partial(operations_to_iops, period=period)),
14711471
stat="Sum",
14721472
unit="Count",
@@ -1482,11 +1482,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
14821482
queries.extend(
14831483
[
14841484
AwsCloudwatchQuery.create(
1485-
metric_name=name,
1485+
query_name=name,
14861486
namespace="AWS/EC2",
14871487
period=period,
14881488
ref_id=self.id,
1489-
name=metric_name,
1489+
metric_name=metric_name,
14901490
normalization=normalizer_factory.bytes_sum(partial(bytes_to_megabytes_per_second, period=period)),
14911491
stat="Sum",
14921492
unit="Bytes",
@@ -2790,11 +2790,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
27902790
queries.extend(
27912791
[
27922792
AwsCloudwatchQuery.create(
2793-
metric_name=name,
2793+
query_name=name,
27942794
namespace="AWS/NATGateway",
27952795
period=delta,
27962796
ref_id=self.id,
2797-
name=metric_name,
2797+
metric_name=metric_name,
27982798
normalization=normalizer_factory.count,
27992799
stat=stat,
28002800
unit="Count",
@@ -2818,11 +2818,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
28182818
queries.extend(
28192819
[
28202820
AwsCloudwatchQuery.create(
2821-
metric_name=name,
2821+
query_name=name,
28222822
namespace="AWS/NATGateway",
28232823
period=delta,
28242824
ref_id=self.id,
2825-
name=metric_name,
2825+
metric_name=metric_name,
28262826
normalization=normalizer_factory.bytes,
28272827
stat=stat,
28282828
unit="Bytes",

plugins/aws/fix_plugin_aws/resource/elb.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -360,11 +360,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
360360
queries.extend(
361361
[
362362
AwsCloudwatchQuery.create(
363-
metric_name=name,
363+
query_name=name,
364364
namespace="AWS/ELB",
365365
period=period,
366366
ref_id=self.id,
367-
name=metric_name,
367+
metric_name=metric_name,
368368
normalization=normalizer_factory.count_sum(),
369369
stat="Sum",
370370
unit="Count",
@@ -382,11 +382,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
382382
queries.extend(
383383
[
384384
AwsCloudwatchQuery.create(
385-
metric_name=name,
385+
query_name=name,
386386
namespace="AWS/ELB",
387387
period=delta,
388388
ref_id=self.id,
389-
name=metric_name,
389+
metric_name=metric_name,
390390
normalization=normalizer_factory.count,
391391
stat=stat,
392392
unit="Count",
@@ -402,11 +402,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
402402
queries.extend(
403403
[
404404
AwsCloudwatchQuery.create(
405-
metric_name="Latency",
405+
query_name="Latency",
406406
namespace="AWS/ELB",
407407
period=delta,
408408
ref_id=self.id,
409-
name=MetricName.Latency,
409+
metric_name=MetricName.Latency,
410410
normalization=normalizer_factory.seconds,
411411
stat=stat,
412412
unit="Seconds",
@@ -418,11 +418,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
418418
queries.extend(
419419
[
420420
AwsCloudwatchQuery.create(
421-
metric_name="EstimatedProcessedBytes",
421+
query_name="EstimatedProcessedBytes",
422422
namespace="AWS/ELB",
423423
period=delta,
424424
ref_id=self.id,
425-
name=MetricName.ProcessedBytes,
425+
metric_name=MetricName.ProcessedBytes,
426426
normalization=normalizer_factory.bytes,
427427
stat=stat,
428428
unit="Bytes",

plugins/aws/fix_plugin_aws/resource/elbv2.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -439,11 +439,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
439439
queries.extend(
440440
[
441441
AwsCloudwatchQuery.create(
442-
metric_name=name,
442+
query_name=name,
443443
namespace="AWS/ApplicationELB",
444444
period=period,
445445
ref_id=self.id,
446-
name=metric_name,
446+
metric_name=metric_name,
447447
normalization=normalizer_factory.count_sum(lambda x: round(x / period.total_seconds(), 4)),
448448
stat="Sum",
449449
unit="Count",
@@ -463,11 +463,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
463463
queries.extend(
464464
[
465465
AwsCloudwatchQuery.create(
466-
metric_name="TargetResponseTime",
466+
query_name="TargetResponseTime",
467467
namespace="AWS/ApplicationELB",
468468
period=delta,
469469
ref_id=self.id,
470-
name=MetricName.TargetResponseTime,
470+
metric_name=MetricName.TargetResponseTime,
471471
normalization=normalizer_factory.seconds,
472472
stat=stat,
473473
unit="Seconds",
@@ -479,11 +479,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
479479
queries.extend(
480480
[
481481
AwsCloudwatchQuery.create(
482-
metric_name=name,
482+
query_name=name,
483483
namespace="AWS/ApplicationELB",
484484
period=period,
485485
ref_id=self.id,
486-
name=metric_name,
486+
metric_name=metric_name,
487487
normalization=normalizer_factory.bytes_sum(partial(bytes_to_megabits_per_second, period=period)),
488488
stat="Sum",
489489
unit="Bytes",
@@ -698,11 +698,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
698698
queries.extend(
699699
[
700700
AwsCloudwatchQuery.create(
701-
metric_name=name,
701+
query_name=name,
702702
namespace="AWS/ApplicationELB",
703703
period=period,
704704
ref_id=self.id,
705-
name=metric_name,
705+
metric_name=metric_name,
706706
normalization=normalizer_factory.count_sum(lambda x: round(x / period.total_seconds(), 4)),
707707
stat="Sum",
708708
unit="Count",
@@ -720,11 +720,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
720720
queries.extend(
721721
[
722722
AwsCloudwatchQuery.create(
723-
metric_name=name,
723+
query_name=name,
724724
namespace="AWS/ApplicationELB",
725725
period=delta,
726726
ref_id=self.id,
727-
name=metric_name,
727+
metric_name=metric_name,
728728
normalization=normalizer_factory.count,
729729
stat=stat,
730730
unit="Count",
@@ -741,11 +741,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
741741
queries.extend(
742742
[
743743
AwsCloudwatchQuery.create(
744-
metric_name="TargetResponseTime",
744+
query_name="TargetResponseTime",
745745
namespace="AWS/ApplicationELB",
746746
period=delta,
747747
ref_id=self.id,
748-
name=MetricName.TargetResponseTime,
748+
metric_name=MetricName.TargetResponseTime,
749749
normalization=normalizer_factory.seconds,
750750
stat=stat,
751751
unit="Seconds",
@@ -758,11 +758,11 @@ def collect_usage_metrics(self, builder: GraphBuilder) -> List[AwsCloudwatchQuer
758758
queries.extend(
759759
[
760760
AwsCloudwatchQuery.create(
761-
metric_name=name,
761+
query_name=name,
762762
namespace="AWS/ApplicationELB",
763763
period=delta,
764764
ref_id=self.id,
765-
name=metric_name,
765+
metric_name=metric_name,
766766
normalization=normalizer_factory.count,
767767
stat="Minimum", # since it reports the number of AZ that meets requirements, we're only interested in the min (max is constant and equals to the number of AZs) # noqa
768768
unit="Count",

0 commit comments

Comments
 (0)