Code Monkey home page Code Monkey logo

cloudping.co's Introduction

AWS Inter-Region Latency Monitoring

Records inter-region latency over a TCP connection between all AWS regions.

About this Project

Over time, as I've worked on global AWS deployments, I have often been faced with the question of which inter-region transactions will be faced with the most latency. I have been able to find a lot of static examples of previous testing completed, or anecdotal thoughts based on a region's location. I haven't been able to find any kind of dynamic, consistently updated, latency monitoring. The goal here is to provide a single source of truth for inter-region AWS region latency.

How data is collected

  • The latency test is performed using the Node.JS "tcp-ping" package (https://www.npmjs.com/package/tcp-ping). The tests are executed against the DynamoDB endpoint URL in each region, on TCP port 443.
  • Every region performs a test every 6 hours (0000, 0600, 1200, 1800 UTC) by "pinging" every region's DynamoDB endpoint. The data is then stored in a DynamoDB database for later access.
  • For regions with Lambda, the Node.JS code is stored in a Lambda function and executed by a CloudWatch Event calling the Lambda function at the specific times.
  • For regions without Lambda, the Node.JS code runs on an EC2 instance, and is scheduled via a cron job every 6 hours. A Lambda function ensures that these EC2 instances are powered on 1 hour prior to test execution, and are shut down within 1 hour after the test executes.

How to access the data

  • Website: You can access a summary of the data at the following location: https://www.cloudping.co. Note, the table on this page is based on the averages for tests performed in the previous 24-hours.
  • API: Coming soon! API documentation is available here: https://www.cloudping.co/apidocs.

Project Structure

  • backend-apiFunction - the Lambda function which is executed whenever a request is made to the API to retrieve data.
  • backend-monitorApp - the Node.JS code used on either Lambda or EC2 and executed every 6 hours to record latency data to DynamoDB.
  • frontend-build - the front-end web application used for summarizing and displaying data pulled from the API. Uses the Vue.JS framework.

TODO

  • API access - both to raw data stored in DyanmoDB, as well as to specific queries used primarily by the web front-end.
  • Graph showing latency over time for user selected parameters (between regions, specific timeframes, etc.)
  • Refine the getLatestAvgs function in the API backend.
  • Add city/location names whenever a region name is displayed (e.g. us-east-2 = Ohio)
  • Add API key
  • Change averages calculation to include the average between 2 regions going both ways. This will avoid confusion of having us-east-1 -> us-east-2 having a different average than us-east-2 -> us-east-1.

Additional Notes

This project is in no way associated with Amazon or AWS. If you wish to report any issues with the project, please use the "Issues" feature within GitHub.

cloudping.co's People

Contributors

mda590 avatar willpan avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.