diff --git a/modules/ecs_fargate/README.md b/modules/ecs_fargate/README.md index 1a1e932..c99dded 100644 --- a/modules/ecs_fargate/README.md +++ b/modules/ecs_fargate/README.md @@ -36,6 +36,23 @@ module "ecs_fargate_task" { dd_log_collection = { enabled = true + fluentbit_config = { + # Optional: Mount additional volumes to the log router + mountPoints = [ + { + sourceVolume = "config-volume" + containerPath = "/fluent-bit/config" + readOnly = true + } + ] + # Optional: Add dependencies for the log router + dependsOn = [ + { + containerName = "config-init" + condition = "SUCCESS" + } + ] + } } # Task Configuration @@ -231,7 +248,7 @@ No modules. | [dd\_health\_check](#input\_dd\_health\_check) | Datadog Agent health check configuration |
object({
command = optional(list(string))
interval = optional(number)
retries = optional(number)
start_period = optional(number)
timeout = optional(number)
})
|
{
"command": [
"CMD-SHELL",
"/probe.sh"
],
"interval": 15,
"retries": 3,
"start_period": 60,
"timeout": 5
}
| no | | [dd\_image\_version](#input\_dd\_image\_version) | Datadog Agent image version | `string` | `"latest"` | no | | [dd\_is\_datadog\_dependency\_enabled](#input\_dd\_is\_datadog\_dependency\_enabled) | Whether the Datadog Agent container is a dependency for other containers | `bool` | `false` | no | -| [dd\_log\_collection](#input\_dd\_log\_collection) | Configuration for Datadog Log Collection |
object({
enabled = optional(bool, false)
fluentbit_config = optional(object({
registry = optional(string, "public.ecr.aws/aws-observability/aws-for-fluent-bit")
image_version = optional(string, "stable")
cpu = optional(number)
memory_limit_mib = optional(number)
is_log_router_essential = optional(bool, false)
is_log_router_dependency_enabled = optional(bool, false)
environment = optional(list(map(string)), [{}])
log_router_health_check = optional(object({
command = optional(list(string))
interval = optional(number)
retries = optional(number)
start_period = optional(number)
timeout = optional(number)
}),
{
command = ["CMD-SHELL", "exit 0"]
interval = 5
retries = 3
start_period = 15
timeout = 5
}
)
firelens_options = optional(object({
config_file_type = optional(string)
config_file_value = optional(string)
}))
log_driver_configuration = optional(object({
host_endpoint = optional(string, "http-intake.logs.datadoghq.com")
tls = optional(bool)
compress = optional(string)
service_name = optional(string)
source_name = optional(string)
message_key = optional(string)
}),
{
host_endpoint = "http-intake.logs.datadoghq.com"
}
)
}),
{
fluentbit_config = {
registry = "public.ecr.aws/aws-observability/aws-for-fluent-bit"
image_version = "stable"
log_driver_configuration = {
host_endpoint = "http-intake.logs.datadoghq.com"
}
}
}
)
})
|
{
"enabled": false,
"fluentbit_config": {
"is_log_router_essential": false,
"log_driver_configuration": {
"host_endpoint": "http-intake.logs.datadoghq.com"
}
}
}
| no | +| [dd\_log\_collection](#input\_dd\_log\_collection) | Configuration for Datadog Log Collection |
object({
enabled = optional(bool, false)
fluentbit_config = optional(object({
registry = optional(string, "public.ecr.aws/aws-observability/aws-for-fluent-bit")
image_version = optional(string, "stable")
cpu = optional(number)
memory_limit_mib = optional(number)
is_log_router_essential = optional(bool, false)
is_log_router_dependency_enabled = optional(bool, false)
environment = optional(list(object({
name = string
value = string
})), [])
log_router_health_check = optional(object({
command = optional(list(string))
interval = optional(number)
retries = optional(number)
start_period = optional(number)
timeout = optional(number)
}),
{
command = ["CMD-SHELL", "exit 0"]
interval = 5
retries = 3
start_period = 15
timeout = 5
}
)
firelens_options = optional(object({
config_file_type = optional(string)
config_file_value = optional(string)
}))
log_driver_configuration = optional(object({
host_endpoint = optional(string, "http-intake.logs.datadoghq.com")
tls = optional(bool)
compress = optional(string)
service_name = optional(string)
source_name = optional(string)
message_key = optional(string)
}),
{
host_endpoint = "http-intake.logs.datadoghq.com"
}
)
mountPoints = optional(list(object({
sourceVolume : string,
containerPath : string,
readOnly : bool
})), [])
dependsOn = optional(list(object({
containerName : string,
condition : string
})), [])
}),
{
fluentbit_config = {
registry = "public.ecr.aws/aws-observability/aws-for-fluent-bit"
image_version = "stable"
log_driver_configuration = {
host_endpoint = "http-intake.logs.datadoghq.com"
}
}
}
)
})
|
{
"enabled": false,
"fluentbit_config": {
"is_log_router_essential": false,
"log_driver_configuration": {
"host_endpoint": "http-intake.logs.datadoghq.com"
}
}
}
| no | | [dd\_memory\_limit\_mib](#input\_dd\_memory\_limit\_mib) | Datadog Agent container memory limit in MiB | `number` | `null` | no | | [dd\_registry](#input\_dd\_registry) | Datadog Agent image registry | `string` | `"public.ecr.aws/datadog/agent"` | no | | [dd\_service](#input\_dd\_service) | The task service name. Used for tagging (UST) | `string` | `null` | no | diff --git a/modules/ecs_fargate/datadog.tf b/modules/ecs_fargate/datadog.tf index 9f9fbd8..4a07cc1 100644 --- a/modules/ecs_fargate/datadog.tf +++ b/modules/ecs_fargate/datadog.tf @@ -365,11 +365,12 @@ locals { cpu = var.dd_log_collection.fluentbit_config.cpu memory_limit_mib = var.dd_log_collection.fluentbit_config.memory_limit_mib user = "0" - mountPoints = [] + mountPoints = var.dd_log_collection.fluentbit_config.mountPoints environment = local.dd_log_agent_env portMappings = [] systemControls = [] volumesFrom = [] + dependsOn = var.dd_log_collection.fluentbit_config.dependsOn }, var.dd_log_collection.fluentbit_config.log_router_health_check.command == null ? {} : { healthCheck = { diff --git a/modules/ecs_fargate/variables.tf b/modules/ecs_fargate/variables.tf index a0f16d2..0de5c4c 100644 --- a/modules/ecs_fargate/variables.tf +++ b/modules/ecs_fargate/variables.tf @@ -191,7 +191,10 @@ variable "dd_log_collection" { memory_limit_mib = optional(number) is_log_router_essential = optional(bool, false) is_log_router_dependency_enabled = optional(bool, false) - environment = optional(list(map(string)), [{}]) + environment = optional(list(object({ + name = string + value = string + })), []) log_router_health_check = optional(object({ command = optional(list(string)) interval = optional(number) @@ -223,6 +226,15 @@ variable "dd_log_collection" { host_endpoint = "http-intake.logs.datadoghq.com" } ) + mountPoints = optional(list(object({ + sourceVolume : string, + containerPath : string, + readOnly : bool + })), []) + dependsOn = optional(list(object({ + containerName : string, + condition : string + })), []) }), { fluentbit_config = {