Skip to content

Commit

Permalink
Integade alertManager for Monitoring
Browse files Browse the repository at this point in the history
 - Added kubenetes manisfest for alert manger
 - config file from config/prmetheus
  • Loading branch information
Venkata Challa committed Feb 26, 2024
1 parent af227d3 commit ef688d8
Show file tree
Hide file tree
Showing 5 changed files with 376 additions and 0 deletions.
165 changes: 165 additions & 0 deletions cluster/terraform_kubernetes/alertmanager.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
data "azurerm_key_vault" "key_vault_slack" {
name = var.cluster_kv
resource_group_name = var.resource_group_name
}
data "azurerm_key_vault_secret" "slack_secret" {
key_vault_id = data.azurerm_key_vault.key_vault_slack.id
name = "SLACK-SECRET"
}

locals {
alertmanager_config_path = "${path.module}/config/prometheus/alertmanager-config.yaml"
alertmanager_config_content = templatefile(local.alertmanager_config_path, {
slack_secret = data.azurerm_key_vault_secret.slack_secret.value,
slack_channel = var.slack_channel
})

template_files = {
"default.tmpl" = "${path.module}/config/prometheus/alertmanager-default.yaml",
"slack.tmpl" = "${path.module}/config/prometheus/alertmanager-slack.yaml"
}

alertmanager_templates = { for k, v in local.template_files : k => file(v) }
}

resource "kubernetes_manifest" "configmap_monitoring_alertmanager_config" {
manifest = {
apiVersion = "v1"
kind = "ConfigMap"
metadata = {
name = "alertmanager-config"
namespace = var.namespace
}
data = {
"config.yml" = local.alertmanager_config_content
}
}
}

resource "kubernetes_manifest" "configmap_monitoring_alertmanager_templates" {
manifest = {
apiVersion = "v1"
kind = "ConfigMap"
metadata = {
name = "alertmanager-templates"
namespace = var.namespace
}
data = local.alertmanager_templates
}
}

# Deployment for AlertManager
resource "kubernetes_manifest" "deployment_monitoring_alertmanager" {
manifest = {
"apiVersion" = "apps/v1"
"kind" = "Deployment"
"metadata" = {
"name" = "alertmanager"
"namespace" = var.namespace
}
"spec" = {
"replicas" = 1
"selector" = {
"matchLabels" = {
"app" = "alertmanager"
}
}
"template" = {
"metadata" = {
"labels" = {
"app" = "alertmanager"
}
}
"spec" = {
"containers" = [
{
"args" = [
"--config.file=/etc/alertmanager/config.yml",
"--storage.path=/alertmanager",
]
"image" = "prom/alertmanager:${var.alertmanager_image_version}"
"name" = "alertmanager"
"ports" = [
{
"containerPort" = 9093
"name" = "alertmanager"
},
]
"resources" = {
"limits" = {
"cpu" = var.alertmanager_cpu_limit
"memory" = var.alertmanager_memory_limit
}
"requests" = {
"cpu" = var.alertmanager_cpu_request
"memory" = var.alertmanager_memory_request
}
}
"volumeMounts" = [
{
"mountPath" = "/etc/alertmanager"
"name" = "config-volume"
},
{
"mountPath" = "/etc/alertmanager-templates"
"name" = "templates-volume"
},
{
"mountPath" = "/alertmanager"
"name" = "alertmanager"
},
]
},
]
"volumes" = [
{
"configMap" = {
"name" = "alertmanager-config"
}
"name" = "config-volume"
},
{
"configMap" = {
"name" = "alertmanager-templates"
}
"name" = "templates-volume"
},
{
"emptyDir" = {}
"name" = "alertmanager"
},
]
}
}
}
}
}

# Service for AlertManager
resource "kubernetes_manifest" "service_monitoring_alertmanager" {
manifest = {
"apiVersion" = "v1"
"kind" = "Service"
"metadata" = {
"annotations" = {
"prometheus.io/port" = "9093"
"prometheus.io/scrape" = "true"
}
"name" = "alertmanager"
"namespace" = var.namespace
}
"spec" = {
"ports" = [
{
"nodePort" = 31000
"port" = 9093
"targetPort" = 9093
},
]
"selector" = {
"app" = "alertmanager"
}
"type" = "NodePort"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
global:
templates:
- '/etc/alertmanager/*.tmpl'
route:
receiver: alert-default
group_by: ['alertname', 'priority']
group_wait: 10s
repeat_interval: 30m
routes:
- receiver: slack_demo
match:
severity: slack
group_wait: 10s
repeat_interval: 1m
receivers:
- name: alert-default
- name: slack_demo
slack_configs:
- api_url: '${slack_secret}'
channel: '${slack_channel}'
send_resolved: true
Loading

0 comments on commit ef688d8

Please sign in to comment.