Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/Blueprints Upgrade #155

Merged
merged 6 commits into from
Mar 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 23 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,38 @@
# AWS Observability Accelerator for CDK

Welcome to the AWS Observability Accelerator for CDK!
Welcome to the `AWS Observability Accelerator for CDK`!

![GitHub](https://img.shields.io/github/license/aws-quickstart/cdk-eks-blueprints)
![Build](https://codebuild.us-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiTWxBQzVUcTBvdSsvbE9mR0ZWeTJjbi96OUpBREorSG51UjMzQ1UyNXdmUzZ2dUJoTkhIODFJWjN2QjRGcnhWS0pYLzFQRU5uOThiUEp1WjEzS0htbUpVPSIsIml2UGFyYW1ldGVyU3BlYyI6IlRkUFRoTWtjdElBMkR5NEMiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=main)

The AWS Observability Accelerator for CDK is a set of opinionated modules
to help you set up observability for your AWS environments with AWS Native services and AWS-managed observability services such as Amazon Managed Service for Prometheus,Amazon Managed Grafana, AWS Distro for OpenTelemetry (ADOT) and Amazon CloudWatch.

We provide curated metrics, logs, traces collection, cloudwatch dashboard, alerting rules and Grafana dashboards for your EKS infrastructure, Java/JMX, NGINX based workloads and your custom applications.
AWS Observability Accelerator for CDK provides patterns with:

- [x] Curated metrics with CloudWatch Container Insights
- [x] Curated metrics with ADOT and Amazon Service for Prometheus Exporter
- [x] Logs using FluentBit and ADOT Exporter
- [x] Traces collection with XRAY Daemon
- [x] Traces collection with ADOT XRAY Exporter
- [x] Amazon Cloudwatch dashboards
- [x] Amazon Managed Grafana Dashboards
- [x] Amazon Managed Service for Prometheus - Alerting rules
- [x] Amazon Managed Service for Prometheus - Recording rules
- [x] GPU Infrastructure and Workload monitoring
- [x] Java/JMX Workload monitoring
- [x] NGINX monitoring
- [x] Istio Service Mesh monitoring
- [x] ADOT Collector monitoring
- [x] Cost monitoring (Coming Soon!)

## Single EKS Cluster AWS Native Observability Accelerator

![AWSNative-Architecture](https://github.com/aws-observability/cdk-aws-observability-accelerator/blob/main/docs/images/cloud-native-arch.png?raw=true)
![AWSNative-Architecture](./docs/images/cloud-native-architecture.png)

## Single EKS Cluster Open Source Observability Accelerator

![OpenSource-Architecture](https://raw.githubusercontent.com/aws-observability/cdk-aws-observability-accelerator/811ec42307d41f35f2fec95f2f2b8a20bddc7646/docs/images/CDK_Architecture_diagram.png)
![OpenSource-Architecture](./docs/images/oss-architecture.png)

## Patterns

Expand Down
Binary file added docs/images/cloud-native-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/oss-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion lib/common/resources/otel-collector-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ spec:
external_labels:
cluster: "{{clusterName}}"
scrape_configs:
{{ start enableAdotMetricsCollectionJob}}
{{ start enableAdotMetricsCollectionJob }}
- job_name: otel-collector-metrics
scrape_interval: 10s
static_configs:
Expand Down
13 changes: 8 additions & 5 deletions lib/existing-eks-opensource-observability-pattern/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints';
import * as cdk from "aws-cdk-lib";
import * as eks from 'aws-cdk-lib/aws-eks';
import * as fs from 'fs';
import { IstioIngressGatewayHelmAddon } from '../single-new-eks-opensource-observability-pattern/istio/istioIngressGatewayAddon';
import { IstioCniHelmAddon } from '../single-new-eks-opensource-observability-pattern/istio/istiocniAddon';

export default class ExistingEksOpenSourceobservabilityPattern {
async buildAsync(scope: cdk.App, id: string) {
Expand Down Expand Up @@ -88,7 +86,7 @@ export default class ExistingEksOpenSourceobservabilityPattern {
);
doc = utils.changeTextBetweenTokens(
doc,
"{{ start enableAdotMetricsCollectionJob}}",
"{{ start enableAdotMetricsCollectionJob }}",
"{{ stop enableAdotMetricsCollectionJob }}",
jsonStringnew.context["adotcollectormetrics.pattern.enabled"]
);
Expand Down Expand Up @@ -169,8 +167,13 @@ export default class ExistingEksOpenSourceobservabilityPattern {
addOns.push(new blueprints.addons.IstioControlPlaneAddOn({
version: "1.18.2"
}));
addOns.push(new IstioIngressGatewayHelmAddon);
addOns.push(new IstioCniHelmAddon);
addOns.push(new blueprints.addons.IstioIngressGatewayAddon({
version: "1.18.2"
}));

addOns.push(new blueprints.addons.IstioCniAddon({
version: "1.18.2"
}));
}

ObservabilityBuilder.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export default class SingleNewEksAWSNativeFargateobservabilityConstruct {
// Define fargate cluster provider and pass the profile options
const fargateClusterProvider : blueprints.FargateClusterProvider = new blueprints.FargateClusterProvider({
fargateProfiles,
version: eks.KubernetesVersion.of("1.28")
version: eks.KubernetesVersion.V1_29
});

const certManagerAddOnProps : blueprints.CertManagerAddOnProps = {
Expand All @@ -50,7 +50,6 @@ export default class SingleNewEksAWSNativeFargateobservabilityConstruct {
};

const coreDnsAddOnProps : blueprints.CoreDnsAddOnProps = {
version:"v1.10.1-eksbuild.6",
configurationValues:{
computeType: "Fargate"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export default class SingleNewEksFargateOpenSourceObservabilityConstruct {
);
doc = utils.changeTextBetweenTokens(
doc,
"{{ start enableAdotMetricsCollectionJob}}",
"{{ start enableAdotMetricsCollectionJob }}",
"{{ stop enableAdotMetricsCollectionJob }}",
jsonStringnew.context["adotcollectormetrics.pattern.enabled"]
);
Expand Down Expand Up @@ -122,8 +122,7 @@ export default class SingleNewEksFargateOpenSourceObservabilityConstruct {
Reflect.defineMetadata("ordered", true, blueprints.addons.GrafanaOperatorAddon);
const addOns: Array<blueprints.ClusterAddOn> = [
new blueprints.addons.VpcCniAddOn(),
new blueprints.addons.CoreDnsAddOn({
version: "v1.10.1-eksbuild.6",
new blueprints.addons.CoreDnsAddOn("auto",{
configurationValues: { computeType: "Fargate" }
}),
new blueprints.addons.KubeProxyAddOn(),
Expand Down Expand Up @@ -172,7 +171,7 @@ export default class SingleNewEksFargateOpenSourceObservabilityConstruct {
// Define fargate cluster provider and pass the profile options
const fargateClusterProvider: blueprints.FargateClusterProvider = new blueprints.FargateClusterProvider({
fargateProfiles,
version: eks.KubernetesVersion.of("1.28"),
version: eks.KubernetesVersion.V1_29
});


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import * as eks from 'aws-cdk-lib/aws-eks';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints';
import * as fs from 'fs';
import { IstioIngressGatewayHelmAddon } from './istio/istioIngressGatewayAddon';
import { IstioCniHelmAddon } from './istio/istiocniAddon';

export default class SingleNewEksGravitonOpenSourceObservabilityPattern {
constructor(scope: Construct, id: string) {
Expand Down Expand Up @@ -69,7 +67,7 @@ export default class SingleNewEksGravitonOpenSourceObservabilityPattern {
);
doc = utils.changeTextBetweenTokens(
doc,
"{{ start enableAdotMetricsCollectionJob}}",
"{{ start enableAdotMetricsCollectionJob }}",
"{{ stop enableAdotMetricsCollectionJob }}",
jsonStringnew.context["adotcollectormetrics.pattern.enabled"]
);
Expand Down Expand Up @@ -170,12 +168,17 @@ export default class SingleNewEksGravitonOpenSourceObservabilityPattern {
addOns.push(new blueprints.addons.IstioControlPlaneAddOn({
version: "1.18.2"
}));
addOns.push(new IstioIngressGatewayHelmAddon);
addOns.push(new IstioCniHelmAddon);
addOns.push(new blueprints.addons.IstioIngressGatewayAddon({
version: "1.18.2"
}));

addOns.push(new blueprints.addons.IstioCniAddon({
version: "1.18.2"
}));
}

const mngProps: blueprints.MngClusterProviderProps = {
version: eks.KubernetesVersion.of("1.27"),
version: eks.KubernetesVersion.V1_29,
instanceTypes: [new ec2.InstanceType("m7g.large")],
amiType: eks.NodegroupAmiType.AL2_ARM_64,
desiredSize: 2,
Expand Down
15 changes: 9 additions & 6 deletions lib/single-new-eks-opensource-observability-pattern/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as amp from 'aws-cdk-lib/aws-aps';
import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints';
import * as fs from 'fs';
import { IstioIngressGatewayHelmAddon } from './istio/istioIngressGatewayAddon';
import { IstioCniHelmAddon } from './istio/istiocniAddon';

export default class SingleNewEksOpenSourceobservabilityPattern {
constructor(scope: Construct, id: string) {
Expand Down Expand Up @@ -72,7 +70,7 @@ export default class SingleNewEksOpenSourceobservabilityPattern {
);
doc = utils.changeTextBetweenTokens(
doc,
"{{ start enableAdotMetricsCollectionJob}}",
"{{ start enableAdotMetricsCollectionJob }}",
"{{ stop enableAdotMetricsCollectionJob }}",
jsonStringnew.context["adotcollectormetrics.pattern.enabled"]
);
Expand Down Expand Up @@ -173,12 +171,17 @@ export default class SingleNewEksOpenSourceobservabilityPattern {
addOns.push(new blueprints.addons.IstioControlPlaneAddOn({
version: "1.18.2"
}));
addOns.push(new IstioIngressGatewayHelmAddon);
addOns.push(new IstioCniHelmAddon);
addOns.push(new blueprints.addons.IstioIngressGatewayAddon({
version: "1.18.2"
elamaran11 marked this conversation as resolved.
Show resolved Hide resolved
}));

addOns.push(new blueprints.addons.IstioCniAddon({
version: "1.18.2"
}));
}

const mngProps: blueprints.MngClusterProviderProps = {
version: eks.KubernetesVersion.of("1.28"),
version: eks.KubernetesVersion.V1_29,
instanceTypes: [new ec2.InstanceType("m5.2xlarge")],
amiType: eks.NodegroupAmiType.AL2_X86_64,
desiredSize: 2,
Expand Down

This file was deleted.

This file was deleted.

12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
"lint": "npx eslint . --ext .js,.jsx,.ts,.tsx"
},
"devDependencies": {
"@aws-quickstart/eks-blueprints": "^1.13.1",
"@aws-quickstart/eks-blueprints": "1.14.1",
"@types/jest": "^29.5.11",
"@types/node": "^20.10.4",
"@typescript-eslint/eslint-plugin": "^6.14.0",
"@typescript-eslint/parser": "^6.14.0",
"aws-cdk": "2.114.1",
"aws-cdk": "2.133.0",
"copyfiles": "^2.4.1",
"eslint": "^8.55.0",
"jest": "^29.7.0",
Expand All @@ -24,16 +24,16 @@
"typescript": "^5.3.3"
},
"dependencies": {
"@aws-quickstart/eks-blueprints": "^1.13.1",
"aws-cdk": "2.114.1",
"@aws-quickstart/eks-blueprints": "1.14.1",
"aws-cdk": "2.133.0",
"aws-sdk": "^2.1455.0",
"constructs": "^10.3.0",
"eks-blueprints-cdk-kubeflow-ext": "0.1.9",
"source-map-support": "^0.5.21"
},
"overrides": {
"@aws-quickstart/eks-blueprints": "^1.13.1",
"aws-cdk": "2.114.1",
"@aws-quickstart/eks-blueprints": "1.14.1",
"aws-cdk": "2.133.0",
"xml2js": "0.5.0"
}
}
Loading