{"id":13707320,"url":"https://github.com/terraform-aws-modules/terraform-aws-cloudwatch","last_synced_at":"2025-10-09T19:33:06.348Z","repository":{"id":38094354,"uuid":"192407569","full_name":"terraform-aws-modules/terraform-aws-cloudwatch","owner":"terraform-aws-modules","description":"Terraform module to create AWS Cloudwatch resources 🇺🇦","archived":false,"fork":false,"pushed_at":"2025-03-11T21:49:03.000Z","size":203,"stargazers_count":169,"open_issues_count":0,"forks_count":201,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-10-09T19:31:58.711Z","etag":null,"topics":["aws","aws-cloudwatch","cis-benchmarks","cloudwatch","cloudwatch-alarms","cloudwatch-logs","cloudwatch-metrics","terraform-module"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/terraform-aws-modules/cloudwatch/aws","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/terraform-aws-modules.png","metadata":{"funding":{"github":["antonbabenko"],"custom":"https://www.paypal.me/antonbabenko"},"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-17T19:37:42.000Z","updated_at":"2025-10-06T09:28:05.000Z","dependencies_parsed_at":"2023-12-16T15:38:26.449Z","dependency_job_id":"c823a500-3240-4f47-804e-0813776ae1c3","html_url":"https://github.com/terraform-aws-modules/terraform-aws-cloudwatch","commit_stats":{"total_commits":86,"total_committers":20,"mean_commits":4.3,"dds":0.7093023255813953,"last_synced_commit":"a40a4b1d76f650198757bce10f8427b3f4adcb29"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/terraform-aws-modules/terraform-aws-cloudwatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terraform-aws-modules%2Fterraform-aws-cloudwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terraform-aws-modules%2Fterraform-aws-cloudwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terraform-aws-modules%2Fterraform-aws-cloudwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terraform-aws-modules%2Fterraform-aws-cloudwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/terraform-aws-modules","download_url":"https://codeload.github.com/terraform-aws-modules/terraform-aws-cloudwatch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terraform-aws-modules%2Fterraform-aws-cloudwatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001964,"owners_count":26083244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-cloudwatch","cis-benchmarks","cloudwatch","cloudwatch-alarms","cloudwatch-logs","cloudwatch-metrics","terraform-module"],"created_at":"2024-08-02T22:01:27.260Z","updated_at":"2025-10-09T19:33:06.330Z","avatar_url":"https://github.com/terraform-aws-modules.png","language":"HCL","funding_links":["https://github.com/sponsors/antonbabenko","https://www.paypal.me/antonbabenko"],"categories":["HCL"],"sub_categories":[],"readme":"# AWS Cloudwatch Terraform module\n\nTerraform module which creates Cloudwatch resources on AWS.\n\n## Usage\n\n### Log metric filter\n\n```hcl\nmodule \"log_metric_filter\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-metric-filter\"\n  version = \"~\u003e 3.0\"\n\n  log_group_name = \"my-application-logs\"\n\n  name    = \"error-metric\"\n  pattern = \"ERROR\"\n\n  metric_transformation_namespace = \"MyApplication\"\n  metric_transformation_name      = \"ErrorCount\"\n}\n```\n\nRead [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html) for explanation of `pattern`.\n\n### Log group\n\n```hcl\nmodule \"log_group\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-group\"\n  version = \"~\u003e 3.0\"\n\n  name              = \"my-app\"\n  retention_in_days = 120\n}\n```\n\n### Log stream\n\n```hcl\nmodule \"log_stream\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-stream\"\n  version = \"~\u003e 3.0\"\n\n  name           = \"stream1\"\n  log_group_name = \"my-app\"\n}\n```\n\n### Metric alarm\n\n```hcl\nmodule \"metric_alarm\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/metric-alarm\"\n  version = \"~\u003e 3.0\"\n\n  alarm_name          = \"my-application-logs-errors\"\n  alarm_description   = \"Bad errors in my-application-logs\"\n  comparison_operator = \"GreaterThanOrEqualToThreshold\"\n  evaluation_periods  = 1\n  threshold           = 10\n  period              = 60\n  unit                = \"Count\"\n\n  namespace   = \"MyApplication\"\n  metric_name = \"ErrorCount\"\n  statistic   = \"Maximum\"\n\n  alarm_actions = [\"arn:aws:sns:eu-west-1:835367859852:my-sns-queue\"]\n}\n```\n\n### Metric alarms by multiple dimensions\n\nThis submodule is useful when you need to create very similar alarms where only dimensions are different (eg, multiple AWS Lambda functions), but the rest of arguments are the same.\n\n```hcl\nmodule \"metric_alarms\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/metric-alarms-by-multiple-dimensions\"\n  version = \"~\u003e 3.0\"\n\n  alarm_name          = \"lambda-duration-\"\n  alarm_description   = \"Lambda duration is too high\"\n  comparison_operator = \"GreaterThanOrEqualToThreshold\"\n  evaluation_periods  = 1\n  threshold           = 10\n  period              = 60\n  unit                = \"Milliseconds\"\n\n  namespace   = \"AWS/Lambda\"\n  metric_name = \"Duration\"\n  statistic   = \"Maximum\"\n\n  dimensions = {\n    \"lambda1\" = {\n      FunctionName = \"index\"\n    },\n    \"lambda2\" = {\n      FunctionName = \"signup\"\n    },\n  }\n\n  alarm_actions = [\"arn:aws:sns:eu-west-1:835367859852:my-sns-queue\"]\n}\n```\n\nCheck out [list of all AWS services that publish CloudWatch metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) for detailed information about each supported service.\n\n### CIS AWS Foundations Controls: Metrics + Alarms\n\n```hcl\nmodule \"cis_alarms\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/cis-alarms\"\n  version = \"~\u003e 3.0\"\n\n  log_group_name = \"my-cloudtrail-logs\"\n  alarm_actions  = [\"arn:aws:sns:eu-west-1:835367859852:my-sns-queue\"]\n}\n```\n\nAWS CloudTrail normally publishes logs into AWS CloudWatch Logs. This module creates log metric filters together with metric alarms according to [CIS AWS Foundations Benchmark v1.4.0 (05-28-2021)](https://www.cisecurity.org/benchmark/amazon_web_services/). Read more about [CIS AWS Foundations Controls](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-cis-controls.html).\n\n### Log Group Data Protection Policy\n\n```hcl\nmodule \"log_group_data_protection\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-data-protection-policy\"\n  version = \"~\u003e 4.0\"\n\n  log_group_name  = \"my-log-group\"\n  create_log_data_protection_policy = true\n  log_data_protection_policy_name   = \"RedactAddress\"\n\n  data_identifiers                          = [\"arn:aws:dataprotection::aws:data-identifier/Address\"]\n  findings_destination_cloudwatch_log_group = \"audit-log-group\"\n}\n```\n\n### Log Subscription Filter\n\n```hcl\nmodule \"log_subscription_filter\" {\n  source = \"terraform-aws-modules/cloudwatch/aws//modules/log-subscription-filter\"\n\n  name            = \"my-filter\"\n  destination_arn = \"arn:aws:firehose:eu-west-1:835367859852:deliverystream/cw-logs\"\n  filter_pattern  = \"%test%\"\n  log_group_name  = \"my-log-group\"\n  role_arn        = \"arn:aws:iam::835367859852:role/cw-logs-to-firehose\"\n}\n```\n\n### Metric Stream\n\n```hcl\nmodule \"metric_stream\" {\n  name          = \"metric-stream\"\n  firehose_arn  = \"arn:aws:firehose:eu-west-1:835367859852:deliverystream/metric-stream-example\"\n  output_format = \"json\"\n  role_arn      = \"arn:aws:iam::835367859852:role/metric-stream-to-firehose-20240113005123755300000002\"\n\n  # conflicts with exclude_filter\n  include_filter = {\n    ec2 = {\n      namespace    = \"AWS/EC2\"\n      metric_names = [\"CPUUtilization\", \"NetworkIn\"]\n    }\n  }\n\n  statistics_configuration = [\n    {\n      additional_statistics = [\"p99\"]\n      include_metric = [\n        {\n          namespace   = \"AWS/EC2\"\n          metric_name = \"CPUUtilization\"\n        },\n        {\n          namespace   = \"AWS/EC2\"\n          metric_name = \"NetworkIn\"\n        }\n      ]\n    },\n    {\n      additional_statistics = [\"p90\", \"TM(10%:90%)\"]\n      include_metric = [\n        {\n          namespace   = \"AWS/EC2\"\n          metric_name = \"CPUUtilization\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Query Definition\n\n```hcl\nmodule \"query_definition\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/query-definition\"\n  version = \"~\u003e 4.0\"\n\n  name = \"my-query-definition\"\n  log_group_names = [\"my-log-group-name\"]\n  query_string = \u003c\u003cEOF\nfields @timestamp, @message\n| sort @timestamp desc\n| limit 25\nEOF\n}\n```\n\n### Composite Alarm\n\n```hcl\nmodule \"composite_alarm\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/composite-alarm\"\n  version = \"~\u003e 4.0\"\n\n  alarm_name        = \"composite-alarm\"\n  alarm_description = \"Example of a composite alarm\"\n\n  alarm_actions = [\"arn:aws:sns:eu-west-1:835367859852:my-sns-topic\"]\n  ok_actions    = [\"arn:aws:sns:eu-west-1:835367859852:my-sns-topic\"]\n\n  alarm_rule = join(\" AND \", tolist([\n    \"ALARM(metric-alarm-1)\",\n    \"ALARM(metric-alarm-2)\"\n  ]))\n\n  actions_suppressor = {\n    alarm            = \"suppressor\"\n    extension_period = 20\n    wait_period      = 10\n  }\n}\n```\n\n### Log Account Policy\n\n```hcl\nmodule \"log_account_policy\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-account-policy\"\n  version = \"~\u003e 4.0\"\n\n  log_account_policy_name           = \"account-data-protection\"\n  log_account_policy_type           = \"DATA_PROTECTION_POLICY\"\n  create_log_data_protection_policy = true\n  log_data_protection_policy_name   = \"redact-addresses\"\n\n  data_identifiers                          = [\"arn:aws:dataprotection::aws:data-identifier/Address\"]\n  findings_destination_cloudwatch_log_group = \"my-cloudwatch-audit-log-group\"\n}\n```\n\n### Log Anomaly Detector\n\n```hcl\nmodule \"log_anomaly_detector\" {\n  source  = \"terraform-aws-modules/cloudwatch/aws//modules/log-anomaly-detector\"\n  version = \"~\u003e 4.0\"\n\n  detector_name           = \"anomaly-detector\"\n  log_group_arns          = [\"arn:aws:logs:eu-west-1:835367859852:log-group:my-log-group\"]\n  anomaly_visibility_time = 7\n  enabled                 = true\n  evaluation_frequency    = \"FIVE_MIN\"\n  filter_pattern          = \"%test%\"\n  kms_key_id              = \"arn:aws:kms:eu-west-1:835367859852:key/9051f3e7-17b8-4543-8070-50e22599966\"\n}\n```\n\n## Examples\n\n- [Complete Cloudwatch log metric filter and alarm](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/complete-log-metric-filter-and-alarm)\n- [Cloudwatch log group with log stream](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/log-group-with-log-stream)\n- [Cloudwatch metric alarms for AWS Lambda](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/lambda-metric-alarm)\n- [Cloudwatch metric alarms for AWS Lambda with multiple dimensions](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/multiple-lambda-metric-alarm)\n- [CIS AWS Foundations Controls: Metrics + Alarms](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/cis-alarms)\n- [Cloudwatch query definition](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/query-definition)\n- [Cloudwatch Metric Stream](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/metric-stream)\n- [Cloudwatch Composite Alarm](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/composite-alarm)\n- [Cloudwatch log subscription filter](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/log-subscription-filter)\n- [Cloudwatch log data protection policy](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/log-group-with-data-protection-policy)\n- [Cloudwatch Log Account Policy](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/log-account-policy)\n- [Cloudwatch Log Anomaly Detector](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/examples/log-anomaly-detector)\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n\n## Authors\n\nModule is maintained by [Anton Babenko](https://github.com/antonbabenko) with help from [these awesome contributors](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/graphs/contributors).\n\n## License\n\nApache 2 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraform-aws-cloudwatch/tree/master/LICENSE) for full details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterraform-aws-modules%2Fterraform-aws-cloudwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fterraform-aws-modules%2Fterraform-aws-cloudwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterraform-aws-modules%2Fterraform-aws-cloudwatch/lists"}