Skip to content

Commit 1692725

Browse files
authored
Merge pull request #32 from aws-observability/feature/usageTracking
Feature/usage tracking
2 parents 92d0629 + b1a5bfc commit 1692725

File tree

4 files changed

+65
-43
lines changed

4 files changed

+65
-43
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import * as blueprints from '@aws-quickstart/eks-blueprints';
2+
import * as utils from '@aws-quickstart/eks-blueprints/dist/utils';
3+
import { NestedStack, NestedStackProps } from 'aws-cdk-lib';
4+
import { Construct } from 'constructs';
5+
6+
7+
8+
export class ObservabilityBuilder {
9+
10+
public static builder(): blueprints.BlueprintBuilder {
11+
return new blueprints.BlueprintBuilder()
12+
.addOns(
13+
new blueprints.NestedStackAddOn({
14+
id: "usage-tracking-addon",
15+
builder: UsageTrackingAddOn.builder(),
16+
}),
17+
new blueprints.addons.AwsLoadBalancerControllerAddOn(),
18+
new blueprints.addons.VpcCniAddOn(),
19+
new blueprints.addons.CoreDnsAddOn(),
20+
new blueprints.addons.KubeProxyAddOn(),
21+
new blueprints.addons.MetricsServerAddOn(),
22+
new blueprints.addons.ExternalsSecretsAddOn(),
23+
new blueprints.addons.CertManagerAddOn(),
24+
new blueprints.addons.PrometheusNodeExporterAddOn(),
25+
new blueprints.addons.KubeStateMetricsAddOn());
26+
}
27+
}
28+
29+
/**
30+
* Nested stack that is used as tracker for Observability Accelerator
31+
*/
32+
export class UsageTrackingAddOn extends NestedStack {
33+
34+
static readonly USAGE_ID = "qp-1u9l111l0";
35+
36+
public static builder(): blueprints.NestedStackBuilder {
37+
return {
38+
build(scope: Construct, id: string, props: NestedStackProps) {
39+
return new UsageTrackingAddOn(scope, id, props);
40+
}
41+
};
42+
}
43+
44+
constructor(scope: Construct, id: string, props: NestedStackProps) {
45+
super(scope, id, utils.withUsageTracking(UsageTrackingAddOn.USAGE_ID, props));
46+
}
47+
}

lib/single-new-eks-awsnative-observability-construct/index.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Construct } from 'constructs';
2-
import { EksBlueprint } from '@aws-quickstart/eks-blueprints';
32
import * as blueprints from '@aws-quickstart/eks-blueprints';
3+
import { ObservabilityBuilder } from '../common/observability-builder';
44

55
export default class SingleNewEksClusterAWSNativeobservabilityConstruct {
66
constructor(scope: Construct, id: string) {
@@ -11,13 +11,6 @@ export default class SingleNewEksClusterAWSNativeobservabilityConstruct {
1111
const region = process.env.COA_AWS_REGION! || process.env.CDK_DEFAULT_REGION!;
1212

1313
const addOns: Array<blueprints.ClusterAddOn> = [
14-
new blueprints.addons.AwsLoadBalancerControllerAddOn(),
15-
new blueprints.addons.VpcCniAddOn(),
16-
new blueprints.addons.CoreDnsAddOn(),
17-
new blueprints.addons.KubeProxyAddOn(),
18-
new blueprints.addons.CertManagerAddOn(),
19-
new blueprints.addons.KubeStateMetricsAddOn(),
20-
new blueprints.addons.PrometheusNodeExporterAddOn(),
2114
new blueprints.addons.CloudWatchLogsAddon({
2215
logGroupPrefix: `/aws/eks/${stackId}`,
2316
logRetentionDays: 30
@@ -26,7 +19,7 @@ export default class SingleNewEksClusterAWSNativeobservabilityConstruct {
2619
// new blueprints.addons.XrayAddOn()
2720
];
2821

29-
EksBlueprint.builder()
22+
ObservabilityBuilder.builder()
3023
.account(account)
3124
.region(region)
3225
.addOns(...addOns)

lib/single-new-eks-mixed-observability-construct/index.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Construct } from 'constructs';
2-
import { EksBlueprint } from '@aws-quickstart/eks-blueprints';
32
import * as blueprints from '@aws-quickstart/eks-blueprints';
43
import { cloudWatchDeploymentMode } from '@aws-quickstart/eks-blueprints';
4+
import { ObservabilityBuilder } from '../common/observability-builder';
55

66
export default class SingleNewEksMixedobservabilityConstruct {
77
constructor(scope: Construct, id: string) {
@@ -19,14 +19,6 @@ export default class SingleNewEksMixedobservabilityConstruct {
1919
});
2020

2121
const addOns: Array<blueprints.ClusterAddOn> = [
22-
new blueprints.addons.AwsLoadBalancerControllerAddOn(),
23-
new blueprints.addons.VpcCniAddOn(),
24-
new blueprints.addons.CoreDnsAddOn(),
25-
new blueprints.addons.KubeProxyAddOn(),
26-
new blueprints.addons.CertManagerAddOn(),
27-
new blueprints.addons.ExternalsSecretsAddOn(),
28-
new blueprints.addons.PrometheusNodeExporterAddOn(),
29-
new blueprints.addons.KubeStateMetricsAddOn(),
3022
new blueprints.addons.CloudWatchLogsAddon({
3123
logGroupPrefix: `/aws/eks/${stackId}`,
3224
logRetentionDays: 30
@@ -36,7 +28,7 @@ export default class SingleNewEksMixedobservabilityConstruct {
3628
new blueprints.addons.XrayAdotAddOn(),
3729
];
3830

39-
EksBlueprint.builder()
31+
ObservabilityBuilder.builder()
4032
.account(account)
4133
.region(region)
4234
.addOns(...addOns)

lib/single-new-eks-opensource-observability-construct/index.ts

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
import { Construct } from 'constructs';
2-
import { EksBlueprint, utils } from '@aws-quickstart/eks-blueprints';
2+
import { utils } from '@aws-quickstart/eks-blueprints';
33
import * as blueprints from '@aws-quickstart/eks-blueprints';
44
import { GrafanaOperatorSecretAddon } from './grafanaoperatorsecretaddon';
55
import * as amp from 'aws-cdk-lib/aws-aps';
6+
import { ObservabilityBuilder } from '../common/observability-builder';
67
import * as assert from "assert";
78

9+
810
export default class SingleNewEksOpenSourceobservabilityConstruct {
911
constructor(scope: Construct, id: string) {
1012
// AddOns for the cluster
1113
const stackId = `${id}-observability-accelerator`;
12-
// All Grafana Dashboard Default URLs
13-
const clusterDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/cluster.json";
14-
const kubeletDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/kubelet.json";
15-
const namespaceWorkloadsDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/namespace-workloads.json";
16-
const nodeExporterDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/nodeexporter-nodes.json";
17-
const nodesDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/nodes.json";
18-
const workloadsDefaultDashUrl = "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/workloads.json";
1914

2015
const account = process.env.COA_ACCOUNT_ID! || process.env.CDK_DEFAULT_ACCOUNT!;
2116
const region = process.env.COA_AWS_REGION! || process.env.CDK_DEFAULT_REGION!;
@@ -24,24 +19,19 @@ export default class SingleNewEksOpenSourceobservabilityConstruct {
2419

2520
const amgEndpointUrl = process.env.COA_AMG_ENDPOINT_URL;
2621

27-
// All Grafana Dashboard URLs from `cdk.json` if present
28-
const clusterDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", clusterDefaultDashUrl);
29-
const kubeletDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", kubeletDefaultDashUrl);
30-
const namespaceWorkloadsDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", namespaceWorkloadsDefaultDashUrl);
31-
const nodeExporterDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", nodeExporterDefaultDashUrl);
32-
const nodesDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", nodesDefaultDashUrl);
33-
const workloadsDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", workloadsDefaultDashUrl);
22+
// assert(amgEndpointUrl, "AMG Endpoint URL environmane variable COA_AMG_ENDPOINT_URL is mandatory");
23+
24+
// All Grafana Dashboard URLs from `cdk.json` if presentgi
25+
const clusterDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", undefined);
26+
const kubeletDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", undefined);
27+
const namespaceWorkloadsDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", undefined);
28+
const nodeExporterDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", undefined);
29+
const nodesDashUrl: string = utils.valueFromContext(scope, "cluster.dashboard.url", undefined);
30+
const workloadsDashUrl: string = utils.valueFromContext(scope, "kubelet.dashboard.url", undefined);
31+
3432

3533
Reflect.defineMetadata("ordered", true, blueprints.addons.GrafanaOperatorAddon);
3634
const addOns: Array<blueprints.ClusterAddOn> = [
37-
new blueprints.addons.AwsLoadBalancerControllerAddOn(),
38-
new blueprints.addons.VpcCniAddOn(),
39-
new blueprints.addons.CoreDnsAddOn(),
40-
new blueprints.addons.KubeProxyAddOn(),
41-
new blueprints.addons.CertManagerAddOn(),
42-
new blueprints.addons.ExternalsSecretsAddOn(),
43-
new blueprints.addons.PrometheusNodeExporterAddOn(),
44-
new blueprints.addons.KubeStateMetricsAddOn(),
4535
new blueprints.addons.CloudWatchLogsAddon({
4636
logGroupPrefix: `/aws/eks/${stackId}`,
4737
logRetentionDays: 30
@@ -77,7 +67,7 @@ export default class SingleNewEksOpenSourceobservabilityConstruct {
7767
new GrafanaOperatorSecretAddon(),
7868
];
7969

80-
EksBlueprint.builder()
70+
ObservabilityBuilder.builder()
8171
.account(account)
8272
.region(region)
8373
.resourceProvider(ampWorkspaceName, new blueprints.CreateAmpProvider(ampWorkspaceName, ampWorkspaceName))

0 commit comments

Comments
 (0)