Skip to content

terakoya76/modd

Repository files navigation

modd

test Coverage Status

monitor of datadog monitors

modd uniformly targets the resources belonging to the metrics monitored by Datadog monitors, and detects their leakage.

How to use

# Filters out monitors with arbitrary metrics name prefixes.
$ ./modd | jq '.Monitors[] | select(.Name | contains("aws.rds"))'
{
  "Name": "aws.rds.burst_balance",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.disk_queue_depth",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.total_storage_space",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.database_connections",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.free_storage_space",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.cpuutilization",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}
{
  "Name": "aws.rds.replica_lag",
  "NotMonitored": [
    "test-db-1",
    "test-db-2"
  ]
}

Requirements

To run modd, datadog API/App keys environment variables are required.

export DD_CLIENT_API_KEY=xxxx
export DD_CLIENT_APP_KEY=yyyy

Also, permissions to get resources that should be monitored are required.

# for AWS
aws sts get-caller-identity
{
    "UserId": "xxxxxx:yyyyyy@example.com",
    "Account": "zzzzzz",
    "Arn": "arn:aws:sts::zzzzzz:assumed-role/my-role/xxxxxx:yyyyyy@example.com"
}

Tag Matcher Configuration

In some cases, it is necessary to control in detail whether a resource that belongs to a metric is a resource that should be monitored or not. For example, the metrics of aws rds are different by db engine.

In this case, it can be controlled by setting up rules for matching monitor tags with resource tags from environment variables.

export AWS_RDS_AWS_TAG_KEY=dbengine
export AWS_RDS_DATADOG_TAG_KEY=dbengine

Supported Integration

AWS

  • API Gateway
  • AutoScalingGroup
  • DynamoDB
  • Elasticache
  • ELB (CLB, ALB, NLB)
  • Firehose
  • Kinesis
  • OpenSearch Service
  • RDS
  • SNS
  • StepFunction
  • SQS