Giter Site home page Giter Site logo

aws-cloudwatch-proxy's Introduction

AWS Cloudwatch proxy

Build Status

A simple Python service to get Metrics and Logs from CloudWatch. It wraps get_metric_data method to fetch metrics and start_query to fetch logs. Great to use as a bridge in integrations or when it's not possible to customize your logic or implement the AWS API Authentication directly.

If you run the service inside a AWS instance it just assume the current IAM role, otherwise you can use the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables to define your credentials.

The region should be passed as a http header (x-metrics-region) and the start/end time as URL parameters using epoch time.

Example:

Fetch ELB Metrics:

(POST) http://127.0.0.1:5000/getMetrics?start=${start_time_epoch_seconds}&end=${end_time_epoch_seconds} (HTTP Header) x-metrics-region: us-east-1

Payload (the same standard from the AWS MetricStat object):

{
            "Id": "m1",
            "MetricStat": {
                "Metric": {
                    "Namespace": "AWS/ApplicationELB",
                    "MetricName": "HTTPCode_Target_4XX_Count",
                    "Dimensions": [
                        {
                            "Name": "LoadBalancer",
                            "Value": "app/ami-demo/2g3g5f3e31dfe52fd2fdf3e2"
                        }
                    ]
                },
                "Period": 60,
                "Stat": "Average"
            }
        }

Fetch metrics with multiple dimensions:

(POST) http://127.0.0.1:5000/getMetrics?start=${start_time_epoch_seconds}&end=${end_time_epoch_seconds} (HTTP Header) x-metrics-region: us-east-1

Payload (the same standard from the AWS MetricStat object):

{
     "Id": "m1",
     "MetricStat": {
       "Metric": {
         "Namespace": "/aws/sagemaker/Endpoints",
         "MetricName": "MemoryUtilization",
         "Dimensions": [
           {
             "Name": "EndpointName",
             "Value": "lr-endpoint"
           },
           {
             "Name": "VariantName",
             "Value": "AllTraffic"
           }
         ]
       },
       "Period": 60,
       "Stat": "Average"
     }
   }

Fetch Logs from a specific EKS Pod:

(POST)http://127.0.0.1:5000/getLogs?start=${start_time_epoch_seconds}&end=${end_time_epoch_seconds} (HTTP Header) x-metrics-region: us-east-1

Payload (The query field represents a CloudWatch log insights query):

 {
  "customLogs": {
    "query": "fields @timestamp, msg, kubernetes.pod_name | filter kubernetes.pod_name = '${host}'",
    "log_group": "/eks/cluster-name/containers"
  }
}

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.