metric_filters
Metric filters to create on the log group. Each filter transforms log data into CloudWatch metrics.
Example
metric_filters = [{name = "ErrorCount", pattern = "ERROR", metric_name = "ErrorCount", metric_namespace = "MyApp"}]Overview
Metric filters define how CloudWatch Logs transforms log data into CloudWatch metrics. Use metric filters to extract metric observations from ingested log events and create alarms.
Filter Object Structure
metric_filters = [
{
name = "error-count"
pattern = "ERROR"
metric_name = "ErrorCount"
metric_namespace = "MyApp"
metric_value = "1"
}
]
| Field | Required | Description |
|---|---|---|
| name | Yes | Unique name for the filter |
| pattern | Yes | Filter pattern to match log events |
| metric_name | Yes | Name of the CloudWatch metric |
| metric_namespace | Yes | Namespace for the metric |
| metric_value | No | Value to publish (default: “1”) |
Common Patterns
Error Counting
{
name = "errors"
pattern = "[timestamp, level=ERROR, ...]"
metric_name = "ErrorCount"
metric_namespace = "Application"
}
Latency Extraction
{
name = "latency"
pattern = "[timestamp, level, message, latency]"
metric_name = "RequestLatency"
metric_namespace = "Application"
metric_value = "$latency"
}
Best Practices
- Use descriptive filter names
- Group related metrics in the same namespace
- Create alarms on critical metrics
- Test patterns with sample log data first
Full Module Example
module "cloudwatch_logs" {
source = "registry.patterneddesigns.ca/essentials/cloudwatch-logs/aws"
version = "1.0.0"
# metric_filters
metric_filters = [{name = "ErrorCount", pattern = "ERROR", metric_name = "ErrorCount", metric_namespace = "MyApp"}]
# Other required inputs
log_group_name = "/aws/lambda/my-function"
}