⚠️ Important: DevOps Monitoring Dashboard on AWS will no longer be supported starting December 3, 2024. We encourage you to look at other alternatives offered by AWS Partners, such as Datadog’s CI Visibility which provides a monitoring dashboard for AWS CodePipeline. ⚠️
🚀 Solution Landing Page | 🚧 Feature request | 🐛 Bug Report
Note: If you want to use the solution without building from source, navigate to Solution Landing Page
The DevOps Monitoring Dashboard on AWS solution is a reference implementation that automates the process for monitoring and visualizing performance and operational metrics in continuous integration/continuous delivery (CI/CD) pipeline following AWS best practices. This solution allows organizations of all sizes to track and measure the activities of their development teams. This helps DevOps leaders measure the impact of their DevOps initiatives and make data-driven decisions to drive continuous improvement in their software delivery process.
This solution supports ingestion, analysis and visualization of data from AWS Developer Tools to calculate key DevOps metrics, such as Change Failure Rate, Deployment, Code Change Volume and more. These metrics are presented in Amazon QuickSight dashboards for visualization.
This solution can be easily installed in your AWS accounts via launching the provided AWS CloudFormation template.
For a detailed solution implementation guide, refer to Solution Landing Page DevOps Monitoring Dashboard on AWS
AWS CDK Solutions Constructs make it easier to consistently create well-architected applications. All AWS Solutions Constructs are reviewed by AWS and use best practices established by the AWS Well-Architected Framework. This solution uses the following AWS CDK Constructs:
Building from GitHub source will allow you to modify the solution, such as adding custom actions or upgrading to a new release. The process consists of downloading the source from GitHub, creating Amazon S3 buckets to store artifacts for deployment, building the solution, and uploading the artifacts to S3 in your account.
Clone or download the repository to a local directory on your linux client. Note: if you intend to modify the source code you may wish to create your own fork of the GitHub repo and work from that. This allows you to check in any changes you make to your private copy of the solution.
Git Clone example:
git clone https://github.com/aws-solutions/aws-devops-monitoring-dashboard.git
Download Zip example:
wget https://github.com/aws-solutions/aws-devops-monitoring-dashboard/archive/master.zip
Next, run unit tests to make sure your customized code passes the tests
cd <rootDir>/deployment
chmod +x ./run-unit-tests.sh
./run-unit-tests.sh
AWS Solutions use two buckets:
export DIST_OUTPUT_BUCKET=<YOUR_DIST_OUTPUT_BUCKET> # Name for the regional bucket where regional assets are stored
export SOLUTION_NAME="aws-devops-monitoring-dashboard" # name of the solution
export VERSION=<VERSION> # version number for the customized solution
export AWS_REGION=<AWS_REGION> # region where the solution is deployed
export CF_TEMPLATE_BUCKET_NAME=<YOUR_CF_TEMPLATE_BUCKET_NAME> # Name of the global bucket where CloudFormation templates are stored
export QUICKSIGHT_TEMPLATE_ACCOUNT = <YOUR_QUICKSIGHT_TEMPLATE_ACCOUNT> # The AWS account from which the Amazon QuickSight templates should be sourced for Amazon QuickSight Analysis and Dashboard creation
export DIST_QUICKSIGHT_NAMESPACE = <YOUR_DIST_QUICKSIGHT_NAMESPACE >
# The namespace in QuickSight account ARN. Ex. "default"
cd <rootDir>/deployment
chmod +x build-s3-dist.sh
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION $CF_TEMPLATE_BUCKET_NAME $QUICKSIGHT_TEMPLATE_ACCOUNT $DIST_QUICKSIGHT_NAMESPACE
./deployment/global-s3-assets
into the global S3 bucket with the name referenced to $CF_TEMPLATE_BUCKET_NAME
../deployment/regional-s3-assets
into the folder/prefix $SOLUTION_NAME/$VERSION
in the regional S3 bucket with the name referenced to $DIST_OUTPUT_BUCKET-[REGION]
. [REGION]
is the specific region where the solution is being deployed.If you customize the solution, you will need to create the Amazon QuickSight template in your AWS account where the out-of-box solution is originally deployed, in order to successfully deploy QuickSight resources as part of your customized solution. Follow these steps to create the template using QuickSight CLI commands:
aws quicksight list-analyses --aws-account-id your-aws-account-id
aws quicksight list-data-sets --aws-account-id your-aws-account-id
{
"AwsAccountId": "your-aws-account-id",
"TemplateId": "your-quicksight-template-id",
"Name": "your-quicksight-template-name",
"SourceEntity": {
"SourceAnalysis": {
"Arn": "your-quicksight-analysis-arn",
"DataSetReferences": [
{
"DataSetPlaceholder": "code-change-activity",
"DataSetArn": "your-quicksight-code-change-activity-dataset-arn"
},
{
"DataSetPlaceholder": "code-deployment-detail",
"DataSetArn": "your-quicksight-code-deployment-detail-dataset-arn"
},
{
"DataSetPlaceholder": "recovery-time-detail",
"DataSetArn": "your-quicksight-recovery-time-detail-dataset-arn"
},
{
"DataSetPlaceholder": "code-pipeline-detail",
"DataSetArn": "your-quicksight-code-pipeline-detail-dataset-arn"
},
{
"DataSetPlaceholder": "code-build-detail",
"DataSetArn": "your-quicksight-code-build-detail-dataset-arn"
},
{
"DataSetPlaceholder": "github-change-activity",
"DataSetArn": "your-quicksight-github-change-activity-dataset-arn"
}
]
}
},
"VersionDescription": "1"
}
aws quicksight create-template \
--cli-input-json file://./create-template-from-analysis-cli-input.json \
--region your-region
aws quicksight update-template-permissions --region $AWS_REGION \
--aws-account-id your-aws-account-id \
--template-id your-quicksight-template-id \
--grant-permissions "[{\"Principal\": \"*\", \"Actions\": [\"quicksight:DescribeTemplate\"]}]"
aws quicksight describe-template \
--aws-account-id your-aws-account-id \
--template-id your-quicksight-template-id
aws quicksight update-template \
--cli-input-json file://./create-template-from-analysis-cli-input.json \
-—region your-region
DevOps Monitoring Dashboard on AWS solution consists of:
├── deployment [folder containing build scripts] │ ├── cdk-solution-helper [A helper function to help deploy lambda function code through S3 buckets] └── source [source code containing CDK App and lambda functions] ├── bin [entry point of the CDK application] ├── image [folder containing images of the solution such as architecture diagram] ├── lambda [folder containing source code for lambda functions] │ ├── event_parser [lambda code for parsing raw events data] │ ├── multi_account_custom_resources [lambda code for managing multi-account permission] │ ├── query_runner [lambda code for building and running Athena queries] │ ├── quicksight-custom-resources [lambda code for creating QuickSight resources] │ ├── solution_helper [lambda code for performing helper tasks] │ └── tag_query [lambda code for getting tagged resources] ├── lib [folder containing CDK constructs] │ ├── app-registry [CDK constructs for creating app registry resources] │ ├── database [CDK constructs for creating database resources] │ ├── deployment-helper [CDK constructs for creating optional CloudFormation templates that help with solution deployment] │ ├── events [CDK constructs for creating events/metrics resources] │ ├── github [CDK constructs for creating resources needed for processing github events] │ ├── multi-account-resources [CDK constructs for creating multi-account resources] │ ├── quicksight-custom-resources [CDK constructs for creating QuickSight CloudFormation template] │ ├── solution-helper [CDK constructs for creating solution helper lambda resources in CloudFormation] │ ├── tagging [CDK constructs for creating tagging related resources] │ └── util [Utility CDK constructs] ├── test [test folder for CDK]
This solution collects anonymoized operational metrics to help AWS improve the quality and features of the solution. For more information, including how to disable this capability, please see the implementation guide.
See license here