Skip to content

Commit

Permalink
Added datadog agent for BEX ECS
Browse files Browse the repository at this point in the history
  • Loading branch information
Dhrubajyoti Sadhu committed Jan 22, 2024
1 parent da49cc1 commit adfde90
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 4 deletions.
6 changes: 6 additions & 0 deletions cloudwatch.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
* Licensed under the Apache License, Version 2.0 (the "License");
*/

resource "aws_cloudwatch_log_group" "ecs" {
count = var.hms_instance_type == "ecs" ? 1 : 0
name = local.instance_alias
tags = var.apiary_tags
}

data "template_file" "s3_widgets" {
count = length(local.schemas_info)

Expand Down
20 changes: 20 additions & 0 deletions common.tf
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,23 @@ data "aws_route53_zone" "apiary_zone" {
name = var.apiary_domain_name
vpc_id = var.vpc_id
}

data "aws_secretsmanager_secret" "datadog_key" {
count = length(var.datadog_key_secret_name) > 0 ? 1 : 0
name = var.datadog_key_secret_name
}

data "aws_secretsmanager_secret_version" "datadog_key" {
count = length(var.datadog_key_secret_name) > 0 ? 1 : 0
secret_id = data.aws_secretsmanager_secret.datadog_key[0].id
}

data "external" "datadog_key" {
count = length(var.datadog_key_secret_name) > 0 ? 1 : 0
program = ["echo", "${data.aws_secretsmanager_secret_version.datadog_key[0].secret_string}"]
}

provider "datadog" {
api_key = chomp(data.external.datadog_key[0].result["api_key"])
app_key = chomp(data.external.datadog_key[0].result["app_key"])
}
14 changes: 14 additions & 0 deletions templates.tf
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ locals{
mysql_permissions = "ALL"
mysql_master_cred_arn = var.external_database_host == "" ? aws_secretsmanager_secret.apiary_mysql_master_credentials[0].arn : null
mysql_user_cred_arn = data.aws_secretsmanager_secret.db_rw_user.arn

# Datadog variables
datadog_secret_key = length(var.datadog_key_secret_name) > 0 ? chomp(data.external.datadog_key[0].result["api_key"]) : ""
wd_instance_type = var.hms_instance_type
metrics_port = var.datadog_metrics_port
datadog_agent_version = var.datadog_agent_version
datadog_agent_enabled = var.datadog_agent_enabled
})

hms_readonly_template = templatefile("${path.module}/templates/apiary-hms-readonly.json", {
Expand Down Expand Up @@ -104,5 +111,12 @@ locals{
mysql_write_db = "${var.external_database_host == "" ? join("", aws_rds_cluster.apiary_cluster.*.endpoint) : var.external_database_host}"
mysql_master_cred_arn = var.external_database_host == "" ? aws_secretsmanager_secret.apiary_mysql_master_credentials[0].arn : null
mysql_user_cred_arn = data.aws_secretsmanager_secret.db_ro_user.arn

# Datadog variables
datadog_agent_enabled = var.datadog_agent_enabled
datadog_secret_key = length(var.datadog_key_secret_name) > 0 ? chomp(data.external.datadog_key[0].result["api_key"]) : ""
wd_instance_type = var.hms_instance_type
metrics_port = var.datadog_metrics_port
datadog_agent_version = var.datadog_agent_version
})
}
38 changes: 35 additions & 3 deletions templates/apiary-hms-readonly.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
],
"command": ["sh", "/allow-grant.sh"]
},
%{ endif }
%{ endif }
{
"name": "apiary-hms-readonly",
"image": "${hms_docker_image}:${hms_docker_version}",
Expand Down Expand Up @@ -73,7 +73,7 @@
"condition": "SUCCESS"
}
],
%{ endif }
%{ endif }
"environment":[
{
"name": "MYSQL_DB_HOST",
Expand Down Expand Up @@ -179,4 +179,36 @@
%{ endfor }
]
}
]
%{ if datadog_agent_enabled }
,{
"name": "datadog-agent",
"image": "public.ecr.aws/datadog/agent:${datadog_agent_version}",
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "${loggroup}",
"awslogs-region": "${region}",
"awslogs-stream-prefix": "/"
}
},
"environment": [
{
"name": "DD_API_KEY",
"value": "${datadog_secret_key}"
},
{
"name": "ECS_FARGATE",
"value": "true"
}
],
"healthCheck": {
"command": ["CMD-SHELL", "curl -f http://localhost:18000/actuator/health || exit 1"],
"interval": 5,
"retries": 3,
"startPeriod": 60,
"timeout": 5
}
}
%{ endif }
]
34 changes: 33 additions & 1 deletion templates/apiary-hms-readwrite.json
Original file line number Diff line number Diff line change
Expand Up @@ -231,4 +231,36 @@
%{ endfor }
]
}
]
%{ if datadog_agent_enabled }
,{
"name": "datadog-agent",
"image": "public.ecr.aws/datadog/agent:${datadog_agent_version}",
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "${loggroup}",
"awslogs-region": "${region}",
"awslogs-stream-prefix": "/"
}
},
"environment": [
{
"name": "DD_API_KEY",
"value": "${datadog_secret_key}"
},
{
"name": "ECS_FARGATE",
"value": "true"
}
],
"healthCheck": {
"command": ["CMD-SHELL", "curl -f http://localhost:18000/actuator/health || exit 1"],
"interval": 5,
"retries": 3,
"startPeriod": 60,
"timeout": 5
}
}
%{ endif }
]
18 changes: 18 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -715,3 +715,21 @@ variable "hms_ro_request_partition_limit" {
type = string
default = ""
}

variable "datadog_key_secret_name" {
description = "Name of the secret containing the DataDog API key. This needs to be created manually in AWS secrets manager. This is only applicable to ECS deployments."
type = string
default = null
}

variable "datadog_agent_version" {
description = "Version of the Datadog Agent running in the ECS cluster. This is only applicable to ECS deployments."
type = string
default = "7.50.3-jmx"
}

variable "datadog_agent_enabled" {
description = "Whether to include the datadog-agent container. This is only applicable to ECS deployments."
type = bool
default = false
}

0 comments on commit adfde90

Please sign in to comment.