All Projects → narmi → cloudwatchmetricbeat

narmi / cloudwatchmetricbeat

Licence: other
A beat for AWS CloudWatch Metrics. Located in NYC? We are hiring: https://www.narmi.com/careers/

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
Makefile
30231 projects
Dockerfile
14818 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to cloudwatchmetricbeat

awesome-elastic-stack
Awesome Elastic Stack
Stars: ✭ 29 (+70.59%)
Mutual labels:  beats, elastic
icingabeat
Elastic Beat fetching events & status from Icinga 2
Stars: ✭ 36 (+111.76%)
Mutual labels:  beats, elastic
kafkabeat
Kafka event forwarder build on top of Elastic Beats platform
Stars: ✭ 13 (-23.53%)
Mutual labels:  beats, elastic
docker-metricbeat-example
Elasticsearch Metricbeat example configuration to monitor Host and Services with docker
Stars: ✭ 80 (+370.59%)
Mutual labels:  beats, metricbeat
pubsubbeat
An Elastic Beat to ingest data from Google Pub/Sub
Stars: ✭ 40 (+135.29%)
Mutual labels:  beats, elastic
django-eb-sqs-worker
Django Background Tasks for Amazon Elastic Beanstalk
Stars: ✭ 27 (+58.82%)
Mutual labels:  elastic
ELK-Hunting
Threat Hunting with ELK Workshop (InfoSecWorld 2017)
Stars: ✭ 58 (+241.18%)
Mutual labels:  elastic
app-search-javascript
Elastic App Search Official JavaScript Client
Stars: ✭ 56 (+229.41%)
Mutual labels:  elastic
hermes.cr
Datamapper like Crystal ORM and adapter for Elasticsearch
Stars: ✭ 36 (+111.76%)
Mutual labels:  elastic
ElasticEmail.WebApiClient-php
Easily send emails with Elastic Email using Web API PHP Client https://elasticemail.com/
Stars: ✭ 20 (+17.65%)
Mutual labels:  elastic
kbn circles vis
Kibana 4.4.1 D3 Circles Packing Visualization
Stars: ✭ 30 (+76.47%)
Mutual labels:  elastic
app-search-python
Elastic App Search Official Python Client
Stars: ✭ 34 (+100%)
Mutual labels:  elastic
yabr.os
Чтение скобочного формата файлов 1С (oscript)
Stars: ✭ 33 (+94.12%)
Mutual labels:  elastic
docker-elk-example
No description or website provided.
Stars: ✭ 58 (+241.18%)
Mutual labels:  metricbeat
bridgx
BridgX is an Open Source Cloud-Native infrastructure engine aimed to split and manage Hybrid-Cloud&Multi-Cloud computing power, schedule and scale Containers.
Stars: ✭ 204 (+1100%)
Mutual labels:  elastic
LogiEM
面向Elasticsearch研发与运维人员,围绕集群、索引构建的零侵入、多租户的Elasticsearch GUI管控平台
Stars: ✭ 209 (+1129.41%)
Mutual labels:  beats
CutAndDisplace
Boundary Element MATLAB code. Modelling faults and deformation
Stars: ✭ 40 (+135.29%)
Mutual labels:  elastic
area3d vis
3D Graph Visualization for Kibana 5
Stars: ✭ 28 (+64.71%)
Mutual labels:  elastic
enterprise-search-php
Elastic Enterprise Search Official PHP Client
Stars: ✭ 20 (+17.65%)
Mutual labels:  elastic
thremulation-station
Small-scale threat emulation and detection range built on Elastic and Atomic Redteam.
Stars: ✭ 28 (+64.71%)
Mutual labels:  elastic

Travis Build Status

Cloudwatchmetricbeat

Welcome to Cloudwatchmetricbeat. Based on previous work on Cloudwatch Logs and Metrics

Installation

Download a binary, and put it in a good spot on your system. Or use the Dockerfile to build a Docker image.

To run this beat with a given configuration, run:

./cloudwatchmetricbeat -c cloudwatchmetricbeat.yml -e -d "*"

Credentials and permissions

The CloudWatch Exporter uses the AWS Go SDK, which offers a variety of ways to provide credentials. This includes the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.

The cloudwatch:ListMetrics and cloudwatch:GetMetricStatistics IAM permissions are required.

Configuration

The configuration is in YAML, an example with common options:

---
aws_region: us-east-1
metrics:
 - aws_namespace: AWS/ELB
   aws_metric_name: RequestCount
   aws_dimensions: [AvailabilityZone, LoadBalancerName]
   aws_dimension_select:
     LoadBalancerName: [myLB]
   aws_statistics: [Sum]
Name Description
aws_region Required. The AWS region to connect to.
metrics Required. A list of CloudWatch metrics to retrieve and export
aws_namespace Required. Namespace of the CloudWatch metric.
aws_metric_name Required. Metric name of the CloudWatch metric.
aws_dimensions Optional. Which dimension to fan out over.
aws_dimension_select Optional. Which dimension values to filter. Specify a map from the dimension name to a list of values to select from that dimension.
aws_statistics Optional. A list of statistics to retrieve, values can include Sum, SampleCount, Minimum, Maximum, Average. Defaults to Average.
delay_seconds Optional. The newest data to request. Used to avoid collecting data that has not fully converged. Defaults to 300s.
range_seconds Optional. How far back to request data for. Useful for cases such as Billing metrics that are only set every few hours. Defaults to 600s.
period_seconds Optional. Period to request the metric for. Only the most recent data point is used. Defaults to 60s. Can be set globally and per metric.

CloudWatch has been observed to sometimes take minutes for reported values to converge. The default delay_seconds will result in data that is at least 5 minutes old being requested to mitigate this.

  • Data points with a period of less than 60 seconds are available for 3 hours. These data points are high-resolution metrics and are available only for custom metrics that have been defined with a StorageResolution of 1.
  • Data points with a period of 60 seconds (1-minute) are available for 15 days.
  • Data points with a period of 300 seconds (5-minute) are available for 63 days.
  • Data points with a period of 3600 seconds (1 hour) are available for 455 days (15 months).

Cost

Amazon charges for every API request, see the current charges.

Every metric retrieved requires one API request, which can include multiple statistics. In addition, when aws_dimensions is provided, the exporter needs to do API requests to determine what metrics to request. This should be negligible compared to the requests for the metrics themselves.

If you have 100 API requests every minute, with the price of USD$10 per million requests (as of Jan 2015), that is around $45 per month.

Getting Started with Cloudwatchmetricbeat

Requirements

Init Project

Clone this repository at the following location: ${GOPATH}/github.com/narmi/cloudwatchmetricbeat.

To get running with Cloudwatchmetricbeat and also install the dependencies, run the following command:

make setup

It will create a clean git history for each major step. Note that you can always rewrite the history if you wish before pushing your changes.

To push Cloudwatchmetricbeat in the git repository, run the following commands:

git remote set-url origin https://github.com/narmi/cloudwatchmetricbeat
git push origin master

For further development, check out the beat developer guide.

Build

To build the binary for Cloudwatchmetricbeat run the commands below. This will generate a binary in the same directory with the name cloudwatchmetricbeat.

make collect
make update
make

Run

To run Cloudwatchmetricbeat with debugging output enabled, run:

./cloudwatchmetricbeat -c cloudwatchmetricbeat.yml -e -d "*"

Test

To test Cloudwatchmetricbeat, run the following command:

make testsuite

alternatively:

make unit-tests
make system-tests
make integration-tests
make coverage-report

The test coverage is reported in the folder ./build/coverage/

Update

Each beat has a template for the mapping in elasticsearch and a documentation for the fields which is automatically generated based on etc/fields.yml. To generate etc/cloudwatchmetricbeat.template.json and etc/cloudwatchmetricbeat.asciidoc

make update

Cleanup

To clean Cloudwatchmetricbeat source code, run the following commands:

make fmt
make simplify

To clean up the build directory and generated artifacts, run:

make clean

Clone

To clone Cloudwatchmetricbeat from the git repository, run the following commands:

mkdir -p ${GOPATH}/github.com/narmi/cloudwatchmetricbeat
cd ${GOPATH}/github.com/narmi/cloudwatchmetricbeat
git clone https://github.com/narmi/cloudwatchmetricbeat

For further development, check out the beat developer guide.

Packaging

The beat frameworks provides tools to crosscompile and package your beat for different platforms. This requires docker and vendoring as described above. To build packages of your beat, run the following command:

make package

This will fetch and create all images required for the build process. The whole process to finish can take several minutes.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].