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.
Built Distribution
Close
Hashes for cfn_datadog-0.0.12-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccb26f028f3b3179146d947c792dc286f6ac841b2c6fc27f74d3ec7492f6c98 |
|
MD5 | 11a794bdebe3260dc9a93a373f59db71 |
|
BLAKE2-256 | 816b7ea054a635617034530f22bcce11ba3e61914807d37ba8242ca9379403a2 |