{"id":15137412,"url":"https://github.com/aws-observability/cdk-aws-observability-accelerator","last_synced_at":"2025-04-04T09:09:18.173Z","repository":{"id":175689928,"uuid":"639370870","full_name":"aws-observability/cdk-aws-observability-accelerator","owner":"aws-observability","description":"CDK AWS Observability Accelerator","archived":false,"fork":false,"pushed_at":"2025-03-24T16:26:16.000Z","size":55689,"stargazers_count":147,"open_issues_count":4,"forks_count":37,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-03-28T08:08:04.013Z","etag":null,"topics":["adot","blueprints","cdk","cdk-examples","cloudwatch","eks","eks-cluster","grafana","kubernetes","opentelemetry","prometheus"],"latest_commit_sha":null,"homepage":"https://aws-observability.github.io/cdk-aws-observability-accelerator/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aws-observability.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-11T10:35:44.000Z","updated_at":"2025-02-26T08:44:02.000Z","dependencies_parsed_at":"2023-09-28T21:21:03.409Z","dependency_job_id":"942fd292-4d05-464a-9f95-ea3973a8b1dc","html_url":"https://github.com/aws-observability/cdk-aws-observability-accelerator","commit_stats":{"total_commits":316,"total_committers":27,"mean_commits":"11.703703703703704","dds":0.5664556962025317,"last_synced_commit":"ef19b52a9c1f56808dba8bb199f572f432ce077a"},"previous_names":["aws-observability/cdk-aws-observability-accelerator"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-observability%2Fcdk-aws-observability-accelerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-observability%2Fcdk-aws-observability-accelerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-observability%2Fcdk-aws-observability-accelerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws-observability%2Fcdk-aws-observability-accelerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aws-observability","download_url":"https://codeload.github.com/aws-observability/cdk-aws-observability-accelerator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149501,"owners_count":20891954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adot","blueprints","cdk","cdk-examples","cloudwatch","eks","eks-cluster","grafana","kubernetes","opentelemetry","prometheus"],"created_at":"2024-09-26T07:00:41.505Z","updated_at":"2025-04-04T09:09:18.156Z","avatar_url":"https://github.com/aws-observability.png","language":"TypeScript","funding_links":[],"categories":["kubernetes"],"sub_categories":[],"readme":"# AWS Observability Accelerator for CDK\n\n![GitHub](https://img.shields.io/github/license/aws-observability/cdk-aws-observability-accelerator)\n[![Tests](https://github.com/aws-observability/cdk-aws-observability-accelerator/actions/workflows/e2e.yaml/badge.svg)](https://github.com/aws-observability/cdk-aws-observability-accelerator/actions/workflows/e2e.yaml)\n[![go-github release (latest SemVer)](https://img.shields.io/github/v/release/aws-observability/cdk-aws-observability-accelerator?sort=semver)](https://github.com/aws-observability/cdk-aws-observability-accelerator/releases)\n\nWelcome to the `AWS Observability Accelerator for CDK`!\n\nThe AWS Observability Accelerator for CDK is a set of opinionated modules\nto 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.\n\nOne of the fallacies of distributed computing is that observability is optional. It's a prevalent but wrong assumption. To have a reliable and changeable system, you need to have proper observability in place. And this project aims to help you.\n\nAWS Observability Accelerator for CDK provides patterns with:\n\n- [x] ADOT Collector monitoring\n- [x] Amazon Cloudwatch dashboards\n- [x] Amazon Managed Grafana Dashboards\n- [x] Amazon Managed Service for Prometheus - Alerting rules\n- [x] Amazon Managed Service for Prometheus - Recording rules\n- [x] Cost monitoring\n- [x] Curated metrics with CloudWatch Container Insights\n- [x] Curated metrics with ADOT and Amazon Service for Prometheus Exporter\n- [x] GPU Infrastructure and Workload monitoring\n- [x] Inferentia Infrastructure and Workload monitoring\n- [x] Istio Service Mesh monitoring\n- [x] NGINX monitoring\n- [x] Java/JMX Workload monitoring\n- [x] Logs using FluentBit and ADOT Exporter\n- [x] Traces collection with ADOT XRAY Exporter\n- [x] Traces collection with XRAY Daemon\n\n## Single EKS Cluster AWS Native Observability Accelerator\n\n![AWSNative-Architecture](https://github.com/aws-observability/cdk-aws-observability-accelerator/blob/main/docs/images/cloud-native-arch.png?raw=true)\n\n## Single EKS Cluster Open Source Observability Accelerator\n\n![OpenSource-Architecture](https://github.com/aws-observability/cdk-aws-observability-accelerator/blob/main/docs/images/oss-architecture.png?raw=true)\n\n## Patterns\n\nThe individual patterns can be found in the [`lib`](https://github.com/aws-observability/cdk-aws-observability-accelerator/tree/main/lib) directory.  Most of the patterns are self-explanatory, for some more complex examples please use this guide and docs/patterns directory for more information.\n\n## Usage\n\nBefore proceeding, make sure [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) is installed on your machine.\n\nTo use this solution, you must have [Node.js](https://nodejs.org/en/) and [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) installed. You will also use `make` and `brew` to simplify build and other common actions.\n\n## Workstation Setup Options\n\n### DevContainer Setup\n\nUsers can choose this option, if you dont want to run this solution on a mac or ubuntu machine. Please use the dev container configuration in the `.devcontainer` folder with [devpod](devpod.sh) or any other dev container environment to create a development environment with dependencies such as Node, NPM, aws-cli, aws-cdk, kubectl, helm dependencies for your local development with `cdk-aws-observability-accelerator` solution. \n\n### Ubuntu Setup\n\nFollow the below steps to setup and leverage cdk-aws-observability-accelerator in your Ubuntu Linux machine.\n\n1. **Update the package list**\n\nUpdate the package list to ensure you're installing the latest versions.\n\n```bash\nsudo apt update\n```\n\n2. **Install make**\n\n```bash\nsudo apt install make\n```\n\n3. **Install Node.js and npm**\n\nInstall Node.js and npm using the NodeSource binary distributions.\n\n```bash\ncurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - \u0026\u0026\\\nsudo apt-get install -y nodejs\n```\n\nNote: The Node.js package from NodeSource includes npm\n\n4. **Verify Node.js and npm Installation**\n\nCheck the installed version of Node.js:\n\n```bash\nnode -v\n```\n\nThe output should be `v20.x.x`.\n\nCheck the installed version of npm:\n\n```bash\nnpm -v\n```\n\nThe output should be a version greater than `10.1.x`.\n\nIf your npm version is not `10.1.x` or above, update npm with the following command:\n\n```bash\nsudo npm install -g npm@latest\n```\n\nVerify the installed version by running `npm -v`.\n\n5. Install brew on ubuntu by following instructions as detailed in [docs.brew.sh](https://docs.brew.sh/Homebrew-on-Linux)\n\n```bash\n /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\nAdd Homebrew to your PATH\n\n```sh\ntest -d ~/.linuxbrew \u0026\u0026 eval \"$(~/.linuxbrew/bin/brew shellenv)\"\ntest -d /home/linuxbrew/.linuxbrew \u0026\u0026 eval \"$(/home/linuxbrew/.linux  brew/bin/brew shellenv)\"\ntest -r ~/.bash_profile \u0026\u0026 echo \"eval \\\"\\$($(brew --prefix)/bin/brew shellenv)\\\"\" \u003e\u003e ~/.bash_profile\necho \"eval \\\"\\$($(brew --prefix)/bin/brew shellenv)\\\"\" \u003e\u003e ~/.profile\n\n```\n\nPost completing the above, continue from Step: [Repo setup](#repo-setup)\n\n### Mac Setup:\n\nFollow the below steps to setup and leverage `cdk-aws-observability-accelerator` in your local Mac laptop.\n\n1. Install `make` and `node` using brew\n\n```sh\nbrew install make\nbrew install node\n```\n\n2. Install `npm`\n\n```sh\nsudo npm install -g n\nsudo n stable\n```\n\n3. Make sure the following pre-requisites are met:\n\n- Node version is a current stable node version 20.x.x\n\n```bash\n$ node -v\nv20.8.0\n```\n\nUpdate (provided Node version manager is installed): `n stable`. May require `sudo`.\n\n- NPM version must be 10.1 or above:\n\n```bash\n$ npm -v\n10.1.0\n```\n\nUpdating npm: `sudo n stable` where stable can also be a specific version above 10.1. May require `sudo`.\n\n## Repo setup\n\n1. Clone the `cdk-aws-observability-accelerator` repository\n\n```sh\ngit clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git\n```\n\nPS: If you are contributing to this repo, please make sure to fork the repo, add your changes and create a PR against it.\n\n2. Once you have cloned the repo, you can open it using your favourite IDE and run the below commands to install the dependencies and build the existing patterns.\n\n- Install project dependencies.\n\n```text\nmake deps\n```\n\n- To view patterns that are available to be deployed, execute the following:\n\n```sh\nmake build\n```\n\n- To list the existing CDK AWS Observability Accelerator Patterns\n\n```text\nmake list\n```\n\nNote: Some patterns have a hard dependency on AWS Secrets (for example GitHub access tokens). Initially you will see errors complaining about lack of the required secrets. It is normal. At the bottom, it will show the list of patterns which can be deployed, in case the pattern you are looking for is not available, it is due to the hard dependency which can be fixed by following the docs specific to those patterns.\n\n```ps1\nTo work with patterns use:\n\t$ make pattern \u003cpattern-name\u003e \u003clist | deploy | synth | destroy\u003e\nExample:\n\t$ make pattern single-new-eks-opensource-observability deploy\n\nPatterns: \n\n        existing-eks-awsnative-observability\n        existing-eks-mixed-observability\n        existing-eks-opensource-observability\n        multi-acc-new-eks-mixed-observability\n        single-new-eks-awsnative-fargate-observability\n        single-new-eks-awsnative-observability\n        single-new-eks-cluster\n        single-new-eks-cost-monitoring\n        single-new-eks-fargate-opensource-observability\n        single-new-eks-gpu-opensource-observability\n        single-new-eks-graviton-opensource-observability\n        single-new-eks-inferentia-opensource-observability\n        single-new-eks-mixed-observability\n        single-new-eks-opensource-observability\n\n```\n\n- Bootstrap your CDK environment.\n\n```sh\nnpx cdk bootstrap\n```\n\n- You can then deploy a specific pattern with the following:\n\n```sh\nmake pattern single-new-eks-opensource-observability deploy\n```\n\n- To access instructions for individual patterns check documentation in `docs/patterns` directory.\n\n# Developer Flow\n\n## Modifications\n\nAll files are compiled to the dist folder including `lib` and `bin` directories. For iterative development (e.g. if you make a change to any of the patterns) make sure to run compile:\n\n```bash\nmake compile\n```\n\nThe `compile` command is optimized to build only modified files and is fast.\n\n## New Patterns\n\nTo create a new pattern, please follow these steps:\n\n1. Under lib create a folder for your pattern, such as `\u003cpattern-name\u003e-pattern`. If you plan to create a set of patterns that represent a particular subdomain, e.g. `security` or `hardening`, please create an issue to discuss it first. If approved, you will be able to create a folder with your subdomain name and group your pattern constructs under it.\n2. Blueprints generally don't require a specific class, however we use a convention of wrapping each pattern in a plain class like `\u003cPattern-Name\u003ePattern`. This class is generally placed in `index.ts` under your pattern folder.\n3. Once the pattern implementation is ready, you need to include it in the list of the patterns by creating a file `bin/\u003cpattern-name\u003e.ts`. The implementation of this file is very light, and it is done to allow patterns to run independently.\n\nExample simple synchronous pattern:\n\n```typescript\nimport SingleNewEksOpenSourceobservabilityPattern from '../lib/single-new-eks-opensource-observability-pattern';\nimport { configureApp } from '../lib/common/construct-utils';\n\nconst app = configureApp();\n\nnew SingleNewEksOpenSourceobservabilityPattern(app, 'single-new-eks-opensource');\n // configureApp() will create app and configure loggers and perform other prep steps\n```\n\n## Security\n\nSee [CONTRIBUTING](./CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis library is licensed under the MIT-0 License. See the LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws-observability%2Fcdk-aws-observability-accelerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faws-observability%2Fcdk-aws-observability-accelerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws-observability%2Fcdk-aws-observability-accelerator/lists"}