Skip to content
Merged
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
4 changes: 2 additions & 2 deletions terraform/cos/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ This is a Terraform module facilitating the deployment of COS solution, using th
| <a name="module_alertmanager"></a> [alertmanager](#module\_alertmanager) | git::https://github.com/canonical/alertmanager-k8s-operator//terraform | n/a |
| <a name="module_catalogue"></a> [catalogue](#module\_catalogue) | git::https://github.com/canonical/catalogue-k8s-operator//terraform | n/a |
| <a name="module_grafana"></a> [grafana](#module\_grafana) | git::https://github.com/canonical/grafana-k8s-operator//terraform | n/a |
| <a name="module_grafana_agent"></a> [grafana\_agent](#module\_grafana\_agent) | git::https://github.com/canonical/grafana-agent-k8s-operator//terraform | n/a |
| <a name="module_loki"></a> [loki](#module\_loki) | git::https://github.com/canonical/observability-stack//terraform/loki | n/a |
| <a name="module_mimir"></a> [mimir](#module\_mimir) | git::https://github.com/canonical/observability-stack//terraform/mimir | n/a |
| <a name="module_opentelemetry_collector"></a> [opentelemetry\_collector](#module\_opentelemetry\_collector) | git::https://github.com/canonical/opentelemetry-collector-k8s-operator//terraform | n/a |
| <a name="module_ssc"></a> [ssc](#module\_ssc) | git::https://github.com/canonical/self-signed-certificates-operator//terraform | n/a |
| <a name="module_tempo"></a> [tempo](#module\_tempo) | git::https://github.com/canonical/observability-stack//terraform/tempo | n/a |
| <a name="module_traefik"></a> [traefik](#module\_traefik) | git::https://github.com/canonical/traefik-k8s-operator//terraform | n/a |
Expand All @@ -44,7 +44,6 @@ This is a Terraform module facilitating the deployment of COS solution, using th
| <a name="input_cloud"></a> [cloud](#input\_cloud) | Kubernetes cloud or environment where this COS module will be deployed (e.g self-managed, aws) | `string` | `"self-managed"` | no |
| <a name="input_external_certificates_offer_url"></a> [external\_certificates\_offer\_url](#input\_external\_certificates\_offer\_url) | A Juju offer URL of a CA providing the 'tls\_certificates' integration for Traefik to supply it with server certificates | `string` | `null` | no |
| <a name="input_grafana"></a> [grafana](#input\_grafana) | Application configuration for Grafana. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> app_name = optional(string, "grafana")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_grafana_agent"></a> [grafana\_agent](#input\_grafana\_agent) | Application configuration for Grafana Agent. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> app_name = optional(string, "grafana-agent")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_internal_tls"></a> [internal\_tls](#input\_internal\_tls) | Specify whether to use TLS or not for internal COS communication. By default, TLS is enabled using self-signed-certificates | `bool` | `true` | no |
| <a name="input_loki_bucket"></a> [loki\_bucket](#input\_loki\_bucket) | Loki bucket name | `string` | n/a | yes |
| <a name="input_loki_coordinator"></a> [loki\_coordinator](#input\_loki\_coordinator) | Application configuration for Loki Coordinator. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 3)<br/> })</pre> | `{}` | no |
Expand All @@ -53,6 +52,7 @@ This is a Terraform module facilitating the deployment of COS solution, using th
| <a name="input_mimir_coordinator"></a> [mimir\_coordinator](#input\_mimir\_coordinator) | Application configuration for Mimir Coordinator. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 3)<br/> })</pre> | `{}` | no |
| <a name="input_mimir_worker"></a> [mimir\_worker](#input\_mimir\_worker) | Application configuration for all Mimir Workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> backend_config = optional(map(string), {})<br/> read_config = optional(map(string), {})<br/> write_config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> backend_units = optional(number, 3)<br/> read_units = optional(number, 3)<br/> write_units = optional(number, 3)<br/> })</pre> | `{}` | no |
| <a name="input_model"></a> [model](#input\_model) | Reference to an existing model resource or data source for the model to deploy to | `string` | n/a | yes |
| <a name="input_opentelemetry_colector"></a> [opentelemetry\_colector](#input\_opentelemetry\_colector) | Application configuration for OpenTelemetry Collector. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> app_name = optional(string, "otelcol")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, null)<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_s3_access_key"></a> [s3\_access\_key](#input\_s3\_access\_key) | S3 access-key credential | `string` | n/a | yes |
| <a name="input_s3_endpoint"></a> [s3\_endpoint](#input\_s3\_endpoint) | S3 endpoint | `string` | n/a | yes |
| <a name="input_s3_integrator"></a> [s3\_integrator](#input\_s3\_integrator) | Application configuration for all S3-integrators in coordinated workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application | <pre>object({<br/> channel = optional(string, "2/edge")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> revision = optional(number, 157) # FIXME: https://github.com/canonical/observability/issues/342<br/> storage_directives = optional(map(string), {})<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
Expand Down
24 changes: 12 additions & 12 deletions terraform/cos/applications.tf
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,6 @@ module "grafana" {
units = var.grafana.units
}

module "grafana_agent" {
source = "git::https://github.com/canonical/grafana-agent-k8s-operator//terraform"
app_name = var.grafana_agent.app_name
channel = var.channel
config = var.grafana_agent.config
constraints = var.grafana_agent.constraints
model = var.model
revision = var.grafana_agent.revision
storage_directives = var.grafana_agent.storage_directives
units = var.grafana_agent.units
}

module "loki" {
source = "git::https://github.com/canonical/observability-stack//terraform/loki"
anti_affinity = var.anti_affinity
Expand Down Expand Up @@ -108,6 +96,18 @@ module "mimir" {
write_units = var.mimir_worker.write_units
}

module "opentelemetry_collector" {
source = "git::https://github.com/canonical/opentelemetry-collector-k8s-operator//terraform"
app_name = var.opentelemetry_colector.app_name
channel = var.channel
config = var.opentelemetry_colector.config
constraints = var.opentelemetry_colector.constraints
model = var.model
revision = var.opentelemetry_colector.revision
storage_directives = var.opentelemetry_colector.storage_directives
units = var.opentelemetry_colector.units
}

module "ssc" {
count = var.internal_tls ? 1 : 0
source = "git::https://github.com/canonical/self-signed-certificates-operator//terraform"
Expand Down
87 changes: 43 additions & 44 deletions terraform/cos/integrations.tf
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ resource "juju_integration" "loki_alertmanager" {
}
}

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

application {
Expand All @@ -51,8 +51,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 @@ -100,7 +100,7 @@ resource "juju_integration" "mimir_grafana_source" {
}
}

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

application {
Expand All @@ -109,13 +109,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 @@ -124,13 +124,12 @@ 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 @@ -139,8 +138,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 @@ -174,7 +173,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 @@ -183,12 +182,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 @@ -197,12 +196,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 @@ -211,8 +210,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
}
}
# -------------- # Provided by Tempo --------------
Expand All @@ -231,7 +230,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 @@ -240,12 +239,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 @@ -254,12 +253,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 @@ -268,8 +267,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 @@ -445,9 +444,9 @@ resource "juju_integration" "tempo_ingress" {
}
}

# -------------- # Provided by Grafana agent --------------
# -------------- # Provided by OpenTelemetry Collector --------------

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

application {
Expand All @@ -456,12 +455,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 @@ -470,14 +469,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 @@ -486,8 +485,8 @@ 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
}
}

Expand Down Expand Up @@ -538,7 +537,7 @@ resource "juju_integration" "grafana_certificates" {
}
}

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

Expand All @@ -548,8 +547,8 @@ resource "juju_integration" "grafana_agent_certificates" {
}

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

Expand Down
18 changes: 9 additions & 9 deletions terraform/cos/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ output "offers" {

output "components" {
value = {
alertmanager = module.alertmanager
catalogue = module.catalogue
grafana = module.grafana
grafana_agent = module.grafana_agent
loki = module.loki
mimir = module.mimir
ssc = module.ssc
tempo = module.tempo
traefik = module.traefik
alertmanager = module.alertmanager
catalogue = module.catalogue
grafana = module.grafana
opentelemetry_collector = module.opentelemetry_collector
loki = module.loki
mimir = module.mimir
ssc = module.ssc
tempo = module.tempo
traefik = module.traefik
}
description = "All Terraform charm modules which make up this product module"
}
27 changes: 14 additions & 13 deletions terraform/cos/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -126,19 +126,6 @@ variable "grafana" {
description = "Application configuration for Grafana. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application"
}

variable "grafana_agent" {
type = object({
app_name = optional(string, "grafana-agent")
config = optional(map(string), {})
constraints = optional(string, "arch=amd64")
revision = optional(number, null)
storage_directives = optional(map(string), {})
units = optional(number, 1)
})
default = {}
description = "Application configuration for Grafana Agent. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application"
}

variable "loki_coordinator" {
type = object({
config = optional(map(string), {})
Expand Down Expand Up @@ -195,6 +182,20 @@ variable "mimir_worker" {
description = "Application configuration for all Mimir Workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application"
}

variable "opentelemetry_colector" {
type = object({
app_name = optional(string, "otelcol")
config = optional(map(string), {})
constraints = optional(string, "arch=amd64")
revision = optional(number, null)
storage_directives = optional(map(string), {})
units = optional(number, 1)
})
default = {}
description = "Application configuration for OpenTelemetry Collector. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application"
}


variable "ssc" {
type = object({
app_name = optional(string, "ca")
Expand Down