/watchtower

Monitor and analyze DynamoDB metrics and interpret this data with amazon's bedrock AI.

Primary LanguageTypeScriptMIT LicenseMIT

WatchTower - A DynamoDB Visualization Tool

Table of Contents

Description

WatchTower is a robust visualization tool for user's Amazon DynamoDB capacity. Developers can often have difficulty analyzing and interpreting DynamoDB provisioning metrics due to the complexities of existing monitoring tools. WatchTower centralizes this data and allows users to generate metric data from DynamoDB usage and to visualize this data using our graphical UI. You can even ask for more input utilizing Amazon's Bedrock AI from within our application! Additionally, you can store and access this historical data and use this information to find usage patterns to form strategies on how to optimize and make your DynamoDB usage more efficient.

Tech Stack

React JavaScript TypeScript NodeJS Express.js HTTP AWS Jest Webpack MUI MONGODB MONGOOSE Chart.js

Key Features

AWS Integration

Seamlessly integrate WatchTower with your AWS account by providing an Access Token and Secret Access Token.

AWS Acc Info

Centralized Dashboard

WatchTower provides a clean, easy-to-use dashboard to observe your AWS DynamoDB provisioning levels and usage. You can easily select different tables from your DynamoDB account to monitor, and then specify the date range you would like metrics for.

Analyze Prov

AI Integration

WatchTower integrates with Amazon’s Bedrock to provide you meaningful insights and recommendations on the provisioning levels and usage for your DynamoDB account.

Amazon Bedrock Analysis

Past Metrics Storage

We offer the ability to store past metrics that you’ve observed so that you can easily regenerate metric graphs to compare trends in your DynamoDB provisioning and usage data over time. (**Note: If you opt-in to this feature, we will dynamically create a new table in your DynamoDB account to hold past metrics).

View Saved Reports

Multi-User Functionality

While our app is hosted locally for your peace of mind, WatchTower has multi-user functionality and full authorization and authentication to protect each user’s data if they are on a shared computer. Create an account or easily sign in with GitHub.

Login Screenshot

Light and Dark Mode User Interface

Choose your preferred theme for interacting with the app.

Dark Mode

Credential Security

Your AWS credentials are stored securely in your local environment and never shared anywhere outside of your local machine - we prioritize your security!

Getting Started

Getting started with WatchTower is simple!

  1. Fork GitHub repo.
  2. Clone the repo into VS Code.
  3. Create a .env file in the server folder using below template
    # AWS Credentials for Connecting AWS
    AWS_ACCESS_KEY_ID="your_aws_access_key_id"
    AWS_SECRET_ACCESS_KEY="your_aws_secret_access_key"
    REGION="your_aws_region"
  4. Navigate to your cloned repo and open a terminal. Run the following commands:
    npm i
    npm start
  1. Sign Up: Create an account on our website, or login with GitHub.
  2. Connect Your DynamoDB: Use our easy-to-follow guide to connect your DynamoDB tables to WatchTower.
    • Warning: If you use the AWS Account Info to update your AWS Key, you have to restart the application!
  3. Generate metric data: Input necessary information, such as the table you wish to analyze and the time period you wish to see database metrics.
  4. As simple as that, your metric data and visual data is generated!
  5. Generate AI insight: Users can also generate insights from Amazon's Bedrock AI simply by pressing a button.
  6. Save table metrics/graphs: Users can save their generated analysis and metric data to their DynamoDB database by clicking on the “save analysis” button.
  7. Analyze Historical Data: Dive into historical metrics to identify trends and optimize performance by navigating over to the reports page.

Upcoming Features

  • Customizable alerts and notifications ⏳

  • Analyze auto-scaling capacity ⏳

  • Analyze on-demand capacity ⏳

  • Customizable dashboard ⏳

  • Expanding report data to aggregate multiple instances of saved reports 🙏🏻

  • Integrate capacity pricing options to Bedrock AI recommendations to provide more meaningful insights 🙏🏻

    ⏳ = In Progress; 🙏🏻 = Looking for contributors!

Contributing

If you would like to contribute to this project, please follow the below steps:

  1. Fork the GitHub repo.
  2. Create your feature branch:
    git checkout -b feature-YourFeature
  3. Commit your changes:
    git commit -m "Add feature"
  4. Push to your feature branch: (git push origin feature-YourFeature)
  5. Open a pull request. Please follow the below template for your pull request.
  • Pull Request Title
  • Description of Feature Branch
  • Why the change was needed
  • How the change was implemented

Meet The Team

Erik
Erik Gao
GitHub
LinkedIn
James
James Coen
GitHub
LinkedIn
Lauren
Lauren Felty
GitHub
LinkedIn
Mike
Mike Bui
GitHub
LinkedIn
Piero
Piero Espejo
GitHub
LinkedIn

Where To Find Us