Lambda cloudformation custom resource that sets up datadog alerts
Project description
# README #
### What is this repository for? ###
* To setup datadog monitoring via cloudformation
### What does it do? ###
It setups a lambda function that communicate with the monitors resource
on the datadog api
https://docs.datadoghq.com/api/#monitors
The lambda is invoked via cloudformation custom resource. This repo
supplies custom resource classes for all the 4 Monitor types.
Custom resources have the same exact data structure as the DD api
It uses https://bitbucket.org/nordcloud/cfn_encrypt to securely store
datadog api credentials
### How do I get set up? ###
* clone this repo
~~~~
git clone git@github.com.org:nordcloud/cfn-datadog.git
~~~~
* Build the lambda package
~~~~
chmod +x create_zip.sh && ./create_zip.sh
~~~~
* upload `datadog_lambda.zip` to an s3 bucket
* get your api and application keys from Datadog
* generate the lambda template
~~~~
python lambda-template.py > /tmp/lambda.template
~~~~
* If you have not already set up your encrypt stack do that now ( https://bitbucket.org/nordcloud/cfn_encrypt )
* create a stack from your `lambda.template` file
* The lambda is now set up and ready to use.
### How do i use it to monitor resources created in other stacks? ###
Install the cfn_datadog library
~~~~
pip install cfn-encrypt
~~~~
Import the custom resource classes you want to use
~~~~
from cfn_datadog import (
MetricAlert, MetricAlertOptions, Composite, CompositeOptions,
EventAlert, EvenAlertOptions, ServiceCheck, ServiceCheckOptions
)
~~~~
Add a parameter so that you can reference your lambda stack
~~~~
datadog_lambda_stackname = t.add_parameter(Parameter(
"DatadogLambdaStackname",
Type="String",
Description="Datadog lambda stackname",
))
~~~~
Add the custom resource to the template: For documentation see datadog api
~~~~
t.add_resource(MetricAlert(
'Alert2',
query=Join("",["avg(last_1h):avg:system.net.bytes_rcvd{host:",Ref(my_instance),"} < 40"]),
ServiceToken=ImportValue(
Sub("${DatadogLambdaStackname}-LambdaArn")),
name="Bytes received on mytesthost",
message="Some Message @MyDDHandle",
tags=["tag1", "tag2"],
options=MetricAlertOptions(
notify_no_data= True,
no_data_timeframe=50
)
))
~~~~
### What is this repository for? ###
* To setup datadog monitoring via cloudformation
### What does it do? ###
It setups a lambda function that communicate with the monitors resource
on the datadog api
https://docs.datadoghq.com/api/#monitors
The lambda is invoked via cloudformation custom resource. This repo
supplies custom resource classes for all the 4 Monitor types.
Custom resources have the same exact data structure as the DD api
It uses https://bitbucket.org/nordcloud/cfn_encrypt to securely store
datadog api credentials
### How do I get set up? ###
* clone this repo
~~~~
git clone git@github.com.org:nordcloud/cfn-datadog.git
~~~~
* Build the lambda package
~~~~
chmod +x create_zip.sh && ./create_zip.sh
~~~~
* upload `datadog_lambda.zip` to an s3 bucket
* get your api and application keys from Datadog
* generate the lambda template
~~~~
python lambda-template.py > /tmp/lambda.template
~~~~
* If you have not already set up your encrypt stack do that now ( https://bitbucket.org/nordcloud/cfn_encrypt )
* create a stack from your `lambda.template` file
* The lambda is now set up and ready to use.
### How do i use it to monitor resources created in other stacks? ###
Install the cfn_datadog library
~~~~
pip install cfn-encrypt
~~~~
Import the custom resource classes you want to use
~~~~
from cfn_datadog import (
MetricAlert, MetricAlertOptions, Composite, CompositeOptions,
EventAlert, EvenAlertOptions, ServiceCheck, ServiceCheckOptions
)
~~~~
Add a parameter so that you can reference your lambda stack
~~~~
datadog_lambda_stackname = t.add_parameter(Parameter(
"DatadogLambdaStackname",
Type="String",
Description="Datadog lambda stackname",
))
~~~~
Add the custom resource to the template: For documentation see datadog api
~~~~
t.add_resource(MetricAlert(
'Alert2',
query=Join("",["avg(last_1h):avg:system.net.bytes_rcvd{host:",Ref(my_instance),"} < 40"]),
ServiceToken=ImportValue(
Sub("${DatadogLambdaStackname}-LambdaArn")),
name="Bytes received on mytesthost",
message="Some Message @MyDDHandle",
tags=["tag1", "tag2"],
options=MetricAlertOptions(
notify_no_data= True,
no_data_timeframe=50
)
))
~~~~
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file cfn_datadog-0.0.12-py2.py3-none-any.whl
.
File metadata
- Download URL: cfn_datadog-0.0.12-py2.py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccb26f028f3b3179146d947c792dc286f6ac841b2c6fc27f74d3ec7492f6c98 |
|
MD5 | 11a794bdebe3260dc9a93a373f59db71 |
|
BLAKE2b-256 | 816b7ea054a635617034530f22bcce11ba3e61914807d37ba8242ca9379403a2 |