Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
214 changes: 170 additions & 44 deletions terraform/cos/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ module "grafana" {
revision = var.grafana_revision
}

module "grafana_agent" {
source = "git::https://github.com/canonical/grafana-agent-k8s-operator//terraform"
app_name = "grafana-agent"
module "opentelemetry_collector" {
source = "git::https://github.com/canonical/opentelemetry-collector-k8s-operator//terraform"
app_name = "otelcol"
model = var.model
channel = var.channel
revision = var.grafana_agent_revision
revision = var.opentelemetry_collector_revision
}

module "loki" {
Expand Down Expand Up @@ -155,7 +155,7 @@ resource "juju_integration" "loki_alertmanager" {
}
}

resource "juju_integration" "agent_alertmanager_metrics" {
resource "juju_integration" "otelcol_alertmanager_metrics" {
model = var.model

application {
Expand All @@ -164,8 +164,8 @@ resource "juju_integration" "agent_alertmanager_metrics" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.metrics_endpoint
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.metrics_endpoint
}
}

Expand Down Expand Up @@ -213,7 +213,9 @@ resource "juju_integration" "mimir_grafana_source" {
}
}

resource "juju_integration" "mimir_tracing_grafana_agent_tracing_provider" {
# TODO: Add charm_tracing to opentelemetry-collector

resource "juju_integration" "mimir_tracing_otelcol_tracing_provider" {
model = var.model

application {
Expand All @@ -222,13 +224,13 @@ resource "juju_integration" "mimir_tracing_grafana_agent_tracing_provider" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.tracing_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_traces
}
}


resource "juju_integration" "mimir_self_metrics_endpoint_grafana_agent_metrics_endpoint" {
resource "juju_integration" "mimir_self_metrics_endpoint_otelcol_metrics_endpoint" {
model = var.model

application {
Expand All @@ -237,13 +239,13 @@ resource "juju_integration" "mimir_self_metrics_endpoint_grafana_agent_metrics_e
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.metrics_endpoint
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.metrics_endpoint
}
}


resource "juju_integration" "mimir_logging_consumer_grafana_agent_logging_provider" {
resource "juju_integration" "mimir_logging_consumer_otelcol_logging_provider" {
model = var.model

application {
Expand All @@ -252,8 +254,8 @@ resource "juju_integration" "mimir_logging_consumer_grafana_agent_logging_provid
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.logging_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_loki_logs
}
}

Expand Down Expand Up @@ -288,7 +290,7 @@ resource "juju_integration" "loki_grafana_source" {
}
}

resource "juju_integration" "loki_logging_consumer_grafana_agent_logging_provider" {
resource "juju_integration" "loki_logging_consumer_otelcol_logging_provider" {
model = var.model

application {
Expand All @@ -297,12 +299,12 @@ resource "juju_integration" "loki_logging_consumer_grafana_agent_logging_provide
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.logging_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_loki_logs
}
}

resource "juju_integration" "loki_logging_grafana_agent_logging_consumer" {
resource "juju_integration" "loki_logging_otelcol_logging_consumer" {
model = var.model

application {
Expand All @@ -311,12 +313,12 @@ resource "juju_integration" "loki_logging_grafana_agent_logging_consumer" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.logging_consumer
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.send_loki_logs
}
}

resource "juju_integration" "loki_tracing_grafana_agent_traicing_provider" {
resource "juju_integration" "loki_tracing_otelcol_traicing_provider" {
model = var.model

application {
Expand All @@ -325,8 +327,8 @@ resource "juju_integration" "loki_tracing_grafana_agent_traicing_provider" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.tracing_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_traces
}
}

Expand All @@ -345,7 +347,7 @@ resource "juju_integration" "tempo_grafana_source" {
}
}

resource "juju_integration" "tempo_tracing_grafana_agent_tracing" {
resource "juju_integration" "tempo_tracing_otelcol_tracing" {
model = var.model

application {
Expand All @@ -354,12 +356,12 @@ resource "juju_integration" "tempo_tracing_grafana_agent_tracing" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.tracing
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.send_traces
}
}

resource "juju_integration" "tempo_metrics_endpoint_grafana_agent_metrics_endpoint" {
resource "juju_integration" "tempo_metrics_endpoint_otelcol_metrics_endpoint" {
model = var.model

application {
Expand All @@ -368,12 +370,12 @@ resource "juju_integration" "tempo_metrics_endpoint_grafana_agent_metrics_endpoi
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.metrics_endpoint
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.metrics_endpoint
}
}

resource "juju_integration" "tempo_logging_grafana_agent_logging_provider" {
resource "juju_integration" "tempo_logging_otelcol_logging_provider" {
model = var.model

application {
Expand All @@ -382,8 +384,8 @@ resource "juju_integration" "tempo_logging_grafana_agent_logging_provider" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.logging_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_loki_logs
}
}

Expand Down Expand Up @@ -559,9 +561,9 @@ resource "juju_integration" "tempo_ingress" {
}
}

# Grafana agent
# OpenTelemetry Collector

resource "juju_integration" "agent_loki_metrics" {
resource "juju_integration" "opentelemetry_collector_loki_metrics" {
model = var.model

application {
Expand All @@ -570,12 +572,12 @@ resource "juju_integration" "agent_loki_metrics" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.metrics_endpoint
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.metrics_endpoint
}
}

resource "juju_integration" "agent_mimir_metrics" {
resource "juju_integration" "opentelemetry_collector_mimir_metrics" {
model = var.model

application {
Expand All @@ -584,14 +586,14 @@ resource "juju_integration" "agent_mimir_metrics" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.send_remote_write
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.send_remote_write
}
}

# Provided by Grafana

resource "juju_integration" "grafana_tracing_grafana_agent_traicing_provider" {
resource "juju_integration" "grafana_tracing_otelcol_traicing_provider" {
model = var.model

application {
Expand All @@ -600,8 +602,132 @@ resource "juju_integration" "grafana_tracing_grafana_agent_traicing_provider" {
}

application {
name = module.grafana_agent.app_name
endpoint = module.grafana_agent.endpoints.tracing_provider
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_traces
}
}

# Provided by Self-Signed-Certificates

resource "juju_integration" "alertmanager_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.alertmanager.app_name
endpoint = module.alertmanager.endpoints.certificates
}
}

resource "juju_integration" "catalogue_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.catalogue.app_name
endpoint = module.catalogue.endpoints.certificates
}
}

resource "juju_integration" "grafana_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.grafana.app_name
endpoint = module.grafana.endpoints.certificates
}
}

resource "juju_integration" "opentelemetry_collector_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.opentelemetry_collector.app_name
endpoint = module.opentelemetry_collector.endpoints.receive_server_cert
}
}



resource "juju_integration" "loki_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.loki.app_names.loki_coordinator
endpoint = module.loki.endpoints.certificates
}
}

resource "juju_integration" "mimir_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.mimir.app_names.mimir_coordinator
endpoint = module.mimir.endpoints.certificates
}
}

resource "juju_integration" "tempo_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.tempo.app_names.tempo_coordinator
endpoint = module.tempo.endpoints.certificates
}
}

resource "juju_integration" "traefik_certificates" {
count = var.use_tls ? 1 : 0
model = var.model

application {
name = module.ssc[0].app_name
endpoint = module.ssc[0].provides.certificates
}

application {
name = module.traefik.app_name
endpoint = module.traefik.endpoints.certificates
}
}

Expand Down
Loading