项目作者: globalbao

项目描述 :
Terraform module for managing Azure Monitor metric alerts by @jesseloudon
高级语言: HCL
项目地址: git://github.com/globalbao/terraform-azurerm-monitor.git
创建时间: 2020-10-24T06:33:30Z
项目社区:https://github.com/globalbao/terraform-azurerm-monitor

开源协议:MIT License

下载


AzureRM Monitor - Terraform parent module

Terraform resources/variables

See child module READMEs

Example usage to call child modules

  1. terraform {
  2. required_version = "~> 0.13.0"
  3. required_providers {
  4. azurerm = "~> 2.25.0"
  5. }
  6. }
  7. provider "azurerm" {
  8. features {
  9. }
  10. }
  11. module "azmonitor-action-groups" {
  12. source = "git::ssh://git@https://github.com/globalbao/terraform-azurerm-monitor//modules/AzMonitor-ActionGroups?ref=v1.0"
  13. tags = {
  14. Application = "Azure Monitor Alerts"
  15. CostCentre = "123"
  16. Environment = "dev"
  17. ManagedBy = "Jesse Loudon"
  18. Owner = "Jesse Loudon"
  19. Support = "coder_au@outlook.com"
  20. }
  21. actionGroups = {
  22. "group1" = {
  23. actionGroupName = "AlertEscalationGroup"
  24. actionGroupShortName = "alertesc"
  25. actionGroupRGName = "AzMonitorAlertGroups"
  26. actionGroupEnabled = "true"
  27. actionGroupEmailReceiver = [
  28. {
  29. name = "jloudon"
  30. email_address = "coder_au@outlook.com"
  31. use_common_alert_schema = "true"
  32. }
  33. ]
  34. },
  35. "group2" = {
  36. actionGroupName = "AlertOperationsGroup"
  37. actionGroupShortName = "alertops"
  38. actionGroupRGName = "AzMonitorAlertGroups"
  39. actionGroupEnabled = "true"
  40. actionGroupEmailReceiver = [
  41. {
  42. name = "jloudon"
  43. email_address = "coder_au@outlook.com"
  44. use_common_alert_schema = "true"
  45. }
  46. ]
  47. }
  48. }
  49. }
  50. module "azmonitor-metric-alerts" {
  51. source = "git::ssh://git@https://github.com/globalbao/terraform-azurerm-monitor//modules/AzMonitor-MetricAlerts?ref=v1.0"
  52. tags = {
  53. Application = "Azure Monitor Alerts"
  54. CostCentre = "123"
  55. Environment = "dev"
  56. ManagedBy = "Jesse Loudon"
  57. Owner = "Jesse Loudon"
  58. Support = "coder_au@outlook.com"
  59. }
  60. alertScope = {
  61. "resource1" = {
  62. resourceName = "azmonloadbalancer1"
  63. resourceGroup = "DevResources"
  64. resourceType = "Microsoft.Network/loadBalancers"
  65. },
  66. "resource2" = {
  67. resourceName = "azmonappgateway1"
  68. resourceGroup = "DevResources"
  69. resourceType = "Microsoft.Network/appGateway"
  70. },
  71. "resource3" = {
  72. resourceName = "azmonsqldb1"
  73. resourceGroup = "DevResources"
  74. resourceType = "Microsoft.Sql/servers/databases"
  75. }
  76. }
  77. metricAlerts = {
  78. "alert1" = {
  79. alertName = "azmonloadbalancer1-DipAvailability"
  80. alertResourceGroupName = "DevResources"
  81. alertScopes = [
  82. module.azmonitor-metric-alerts.alert-scope["0"].resource1.resources[0].id
  83. ]
  84. alertDescription = "Average Load Balancer health probe status per time duration"
  85. alertEnabled = "true"
  86. alertAutoMitigate = "true"
  87. alertFrequency = "PT15M"
  88. alertWindowSize = "PT1H"
  89. alertSeverity = "2"
  90. alertTargetResourceType = "Microsoft.Network/loadBalancers"
  91. alertTargetResourceLoc = "australiaeast"
  92. dynCriteriaMetricNamespace = "Microsoft.Network/loadBalancers"
  93. dynCriteriaMetricName = "DipAvailability"
  94. dynCriteriaAggregation = "Average"
  95. dynCriteriaOperator = "LessThan"
  96. dynCriteriaAlertSensitivity = "Medium"
  97. dynCriteriaDimensions = [
  98. {
  99. name = "ProtocolType"
  100. operator = "Include"
  101. values = "*"
  102. },
  103. {
  104. name = "FrontendIPAddress"
  105. operator = "Include"
  106. values = "*"
  107. },
  108. {
  109. name = "BackendIPAddress"
  110. operator = "Include"
  111. values = "*"
  112. },
  113. ]
  114. actionGroupID = module.azmonitor-action-groups.ag["0"].group1.id
  115. },
  116. "alert2" = {
  117. alertName = "azmonloadbalancer1-VipAvailability"
  118. alertResourceGroupName = "DevResources"
  119. alertScopes = [
  120. module.azmonitor-metric-alerts.alert-scope["0"].resource1.resources[0].id
  121. ]
  122. alertDescription = "Average Load Balancer data path availability per time duration"
  123. alertEnabled = "true"
  124. alertAutoMitigate = "true"
  125. alertFrequency = "PT15M"
  126. alertWindowSize = "PT1H"
  127. alertSeverity = "2"
  128. alertTargetResourceType = "Microsoft.Network/loadBalancers"
  129. alertTargetResourceLoc = "australiaeast"
  130. dynCriteriaMetricNamespace = "Microsoft.Network/loadBalancers"
  131. dynCriteriaMetricName = "VipAvailability"
  132. dynCriteriaAggregation = "Average"
  133. dynCriteriaOperator = "LessThan"
  134. dynCriteriaAlertSensitivity = "Medium"
  135. dynCriteriaDimensions = [
  136. {
  137. name = "FrontendPort"
  138. operator = "Include"
  139. values = "*"
  140. },
  141. {
  142. name = "FrontendIPAddress"
  143. operator = "Include"
  144. values = "*"
  145. },
  146. ]
  147. actionGroupID = module.azmonitor-action-groups.ag["0"].group2.id
  148. },
  149. "alert3" = {
  150. alertName = "azmonappgateway1-UnhealthyHostcount"
  151. alertResourceGroupName = "DevResources"
  152. alertScopes = [
  153. module.azmonitor-metric-alerts.alert-scope["0"].resource2.resources[0].id
  154. ]
  155. alertDescription = "Current UnhealthyHostcount of the Application Gateway"
  156. alertEnabled = "true"
  157. alertAutoMitigate = "true"
  158. alertFrequency = "PT15M"
  159. alertWindowSize = "PT1H"
  160. alertSeverity = "2"
  161. alertTargetResourceType = "Microsoft.Network/applicationGateways"
  162. alertTargetResourceLoc = "australiaeast"
  163. dynCriteriaMetricNamespace = "Microsoft.Network/applicationGateways"
  164. dynCriteriaMetricName = "UnhealthyHostcount"
  165. dynCriteriaAggregation = "Average"
  166. dynCriteriaOperator = "GreaterThan"
  167. dynCriteriaAlertSensitivity = "Medium"
  168. dynCriteriaDimensions = [
  169. {
  170. name = "BackendSettingsPool"
  171. operator = "Include"
  172. values = "*"
  173. }
  174. ]
  175. actionGroupID = module.azmonitor-action-groups.ag["0"].group1.id
  176. },
  177. "alert4" = {
  178. alertName = "azmonappgateway1-FailedRequests"
  179. alertResourceGroupName = "DevResources"
  180. alertScopes = [
  181. module.azmonitor-metric-alerts.alert-scope["0"].resource2.resources[0].id
  182. ]
  183. alertDescription = "Count of failed requests that Application Gateway has served"
  184. alertEnabled = "true"
  185. alertAutoMitigate = "true"
  186. alertFrequency = "PT15M"
  187. alertWindowSize = "PT1H"
  188. alertSeverity = "2"
  189. alertTargetResourceType = "Microsoft.Network/applicationGateways"
  190. alertTargetResourceLoc = "australiaeast"
  191. dynCriteriaMetricNamespace = "Microsoft.Network/applicationGateways"
  192. dynCriteriaMetricName = "FailedRequests"
  193. dynCriteriaAggregation = "Total"
  194. dynCriteriaOperator = "GreaterThan"
  195. dynCriteriaAlertSensitivity = "Medium"
  196. dynCriteriaDimensions = [
  197. {
  198. name = "BackendSettingsPool"
  199. operator = "Include"
  200. values = "*"
  201. }
  202. ]
  203. actionGroupID = module.azmonitor-action-groups.ag["0"].group1.id
  204. }
  205. }
  206. metricAlerts-noDimensions = {
  207. "alert1" = {
  208. alertName = "azmonsqldb1-avg_cpu_percent"
  209. alertResourceGroupName = "DevResources"
  210. alertScopes = [
  211. module.azmonitor-metric-alerts.alert-scope["0"].resource3.resources[0].id
  212. ]
  213. alertDescription = "Average CPU percentage"
  214. alertEnabled = "true"
  215. alertAutoMitigate = "true"
  216. alertFrequency = "PT15M"
  217. alertWindowSize = "PT1H"
  218. alertSeverity = "3"
  219. alertTargetResourceType = "Microsoft.Sql/managedInstances"
  220. alertTargetResourceLoc = "australiaeast"
  221. dynCriteriaMetricNamespace = "Microsoft.Sql/managedInstances"
  222. dynCriteriaMetricName = "avg_cpu_percent"
  223. dynCriteriaAggregation = "Average"
  224. dynCriteriaOperator = "GreaterThan"
  225. dynCriteriaAlertSensitivity = "Medium"
  226. actionGroupID = module.azmonitor-action-groups.ag["0"].group2.id
  227. }
  228. }
  229. }

Modifying this repository

  • If changes are made to .tf files it’s best practice to use terraform fmt and terrform validate afterwards.
  1. terraform fmt -recursive
  2. terraform validate