diff --git a/README.md b/README.md index 829bc206..d83f21ce 100644 --- a/README.md +++ b/README.md @@ -13,21 +13,22 @@ One of the fallacies of distributed computing is that observability is optional. 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] ADOT Collector monitoring - [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] Cost monitoring +- [x] Curated metrics with CloudWatch Container Insights +- [x] Curated metrics with ADOT and Amazon Service for Prometheus Exporter - [x] GPU Infrastructure and Workload monitoring -- [x] Java/JMX Workload monitoring -- [x] NGINX monitoring +- [x] Inferentia Infrastructure and Workload monitoring - [x] Istio Service Mesh monitoring -- [x] ADOT Collector monitoring -- [x] Cost monitoring (Coming Soon!) +- [x] NGINX monitoring +- [x] Java/JMX Workload monitoring +- [x] Logs using FluentBit and ADOT Exporter +- [x] Traces collection with ADOT XRAY Exporter +- [x] Traces collection with XRAY Daemon ## Single EKS Cluster AWS Native Observability Accelerator diff --git a/docs/patterns/images/App-signals/app-signal-ops-deps.png b/docs/patterns/images/App-signals/app-signal-ops-deps.png new file mode 100644 index 00000000..234b8fdb Binary files /dev/null and b/docs/patterns/images/App-signals/app-signal-ops-deps.png differ diff --git a/docs/patterns/images/App-signals/app-signal-services.png b/docs/patterns/images/App-signals/app-signal-services.png new file mode 100644 index 00000000..9f8a06af Binary files /dev/null and b/docs/patterns/images/App-signals/app-signal-services.png differ diff --git a/docs/patterns/single-new-eks-observability-accelerators/single-new-eks-awsnative-observability.md b/docs/patterns/single-new-eks-observability-accelerators/single-new-eks-awsnative-observability.md index b389434e..ae537342 100644 --- a/docs/patterns/single-new-eks-observability-accelerators/single-new-eks-awsnative-observability.md +++ b/docs/patterns/single-new-eks-observability-accelerators/single-new-eks-awsnative-observability.md @@ -115,6 +115,64 @@ View the Performance Monitoring Dashboard: Refer to "Using CloudWatch Logs Insights to Query Logs in [Logging](../../logs.md). +## Enabling Application Signals for your services + +Amazon CloudWatch Application Signals is a new integrated native APM experience +in AWS. CloudWatch Application Signals supports **Java** and **Python** applications +running on your Amazon EKS cluster. + +If you haven't enabled Application Signals in this account yet, follow steps 1 - 4 in our [AWS documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-Enable-EKS-Console.html). + +Next, you have to update your Application to +`Configure application metrics and trace sampling`. For this, you must add an +annotation to a manifest YAML in your cluster. Adding this annotation +auto-instruments the application to send metrics, traces, and logs to +Application Signals. You have two options for the annotation: + +1. **Annotate Workload** auto-instruments a single workload in the cluster. + - Paste the below line into the PodTemplate section of the workload manifest. + ``` + apiVersion: apps/v1 + kind: Deployment + spec: + template: + metadata: + # add this annotation under the pod template metadata of the services deployment YAML you want to monitor + annotations: + instrumentation.opentelemetry.io/inject-java: "true" + instrumentation.opentelemetry.io/inject-python: "true" + ... + ``` + - In your terminal, enter `kubectl apply -f your_deployment_yaml` to apply the change. + +2. **Annotate Namespace** auto-instruments all workloads deployed in the selected namespace. + - Paste the below line into the metadata section of the namespace manifest. + ``` + annotations: instrumentation.opentelemetry.io/inject-java: "true" + apiVersion: apps/v1 + kind: Namespace + metadata: + name: + # add this annotation under metadata of the namespace manifest you want to monitor + annotations: + instrumentation.opentelemetry.io/inject-java: "true" + instrumentation.opentelemetry.io/inject-python: "true" + ... + ``` + - In your terminal, enter `kubectl apply -f your_namespace_yaml` to apply the change. + - In your terminal, enter a command to restart all pods in the namespace. An example command to restart deployment workloads is `kubectl rollout restart deployment -n namespace_name` + +## Visualization of CloudWatch Application Signals data + +After enabling your Application to pass metrics and traces by following +[the steps provided above](#enabling-application-signals-for-your-services), +open your Amazon CloudWatch console in the same region as your EKS cluster, +then from the left hand side choose `Application Signals -> Services` and you +will see the metrics shown on the sample dashboard below: + +![APP_Signals_Services](../images/App-signals/app-signal-services.png) + +![APP_Signals_Dependencies](../images/App-signals/app-signal-ops-deps.png) ## Teardown