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 = {