Skip to content
Draft
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
8 changes: 8 additions & 0 deletions python/tests/integration/resources/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ module "cos" {
source = "git::https://github.com/canonical/observability-stack//terraform/cos-lite?ref=cd55b1d"
model_uuid = var.cos_model_uuid
internal_tls = false
alertmanager = { revision = 191 }
catalogue = { revision = 113 }
grafana = { revision = 180 }
loki = { revision = 217 }
prometheus = { revision = 287 }
traefik = { revision = 281 }


}

resource "juju_model" "spark" {
Expand Down
2 changes: 1 addition & 1 deletion terraform/charms/azure-storage-integrator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ To be contributed upstream.

| Name | Version |
|------|---------|
| <a name="provider_juju"></a> [juju](#provider\_juju) | 1.3.1 |
| <a name="provider_juju"></a> [juju](#provider\_juju) | >=1.0.0 |

### Modules

Expand Down
2 changes: 1 addition & 1 deletion terraform/charms/s3-integrator-v1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ To be contributed upstream.

| Name | Version |
|------|---------|
| <a name="provider_juju"></a> [juju](#provider\_juju) | 1.3.1 |
| <a name="provider_juju"></a> [juju](#provider\_juju) | >=1.0.0 |

### Modules

Expand Down
2 changes: 1 addition & 1 deletion terraform/charms/zookeeper/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ To be contributed upstream.

| Name | Version |
|------|---------|
| <a name="provider_juju"></a> [juju](#provider\_juju) | 1.3.1 |
| <a name="provider_juju"></a> [juju](#provider\_juju) | >=1.0.0 |

### Modules

Expand Down
30 changes: 15 additions & 15 deletions terraform/components/observability/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ As such, it is easier to define our own component module for now.

| Name | Version |
|------|---------|
| <a name="provider_juju"></a> [juju](#provider\_juju) | 1.3.1 |
| <a name="provider_juju"></a> [juju](#provider\_juju) | >=1.0.0 |

### Modules

Expand All @@ -34,23 +34,23 @@ No modules.
| Name | Type |
|------|------|
| [juju_application.cos_configuration](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource |
| [juju_application.grafana_agent](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource |
| [juju_application.opentelemetry_collector](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource |
| [juju_application.pushgateway](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource |
| [juju_application.scrape_config](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource |
| [juju_integration.cos_configuration_grafana_agent](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.grafana_agent_grafana_dashboards](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.grafana_agent_loki](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.grafana_agent_prometheus](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_grafana_agent_dashboard](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_grafana_agent_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_grafana_agent_metrics](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.integration_hub_grafana_agent_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.cos_configuration_opentelemetry_collector](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_opentelemetry_collector_dashboard](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_opentelemetry_collector_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.history_server_opentelemetry_collector_metrics](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.integration_hub_opentelemetry_collector_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.integration_hub_pushgateway](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_grafana_agent_dashboards](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_grafana_agent_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_grafana_agent_metrics](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_opentelemetry_collector_dashboards](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_opentelemetry_collector_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.kyuubi_opentelemetry_collector_metrics](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.opentelemetry_collector_grafana_dashboards](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.opentelemetry_collector_loki](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.opentelemetry_collector_prometheus](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.pushgateway_scrape_config](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.scrape_config_grafana_agent](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_integration.scrape_config_opentelemetry_collector](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource |
| [juju_offer.grafana_dashboards](https://registry.terraform.io/providers/juju/juju/latest/docs/data-sources/offer) | data source |
| [juju_offer.loki_logging](https://registry.terraform.io/providers/juju/juju/latest/docs/data-sources/offer) | data source |
| [juju_offer.prometheus_receive_remote_write](https://registry.terraform.io/providers/juju/juju/latest/docs/data-sources/offer) | data source |
Expand All @@ -61,7 +61,6 @@ No modules.
|------|-------------|------|---------|:--------:|
| <a name="input_cos_configuration"></a> [cos\_configuration](#input\_cos\_configuration) | n/a | <pre>object({<br/> app_name = optional(string, "cos-configuration")<br/> base = optional(string, "ubuntu@22.04")<br/> channel = optional(string, "1/stable")<br/> config = optional(map(string), {<br/> git_branch = "main"<br/> git_depth = 1<br/> git_repo = "https://github.com/canonical/spark-k8s-bundle"<br/> grafana_dashboards_path = "resources/grafana/"<br/> })<br/> constraints = optional(string, "arch=amd64")<br/> resources = optional(map(string), {})<br/> revision = optional(number)<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_dashboards_offer"></a> [dashboards\_offer](#input\_dashboards\_offer) | URL of the `grafana_dashboard` interface offer. | `string` | n/a | yes |
| <a name="input_grafana_agent"></a> [grafana\_agent](#input\_grafana\_agent) | n/a | <pre>object({<br/> app_name = optional(string, "grafana-agent")<br/> base = optional(string, "ubuntu@22.04")<br/> channel = optional(string, "1/stable")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> resources = optional(map(string), {})<br/> revision = optional(number)<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_history_server_dashboard_endpoint"></a> [history\_server\_dashboard\_endpoint](#input\_history\_server\_dashboard\_endpoint) | In-model endpoint for the History Server dashboard integration. | <pre>object({<br/> name = string<br/> endpoint = string<br/> })</pre> | n/a | yes |
| <a name="input_history_server_logging_endpoint"></a> [history\_server\_logging\_endpoint](#input\_history\_server\_logging\_endpoint) | In-model endpoint for the History Server logging integration. | <pre>object({<br/> name = string<br/> endpoint = string<br/> })</pre> | n/a | yes |
| <a name="input_history_server_metrics_endpoint"></a> [history\_server\_metrics\_endpoint](#input\_history\_server\_metrics\_endpoint) | In-model endpoint for the History Server metrics integration. | <pre>object({<br/> name = string<br/> endpoint = string<br/> })</pre> | n/a | yes |
Expand All @@ -73,6 +72,7 @@ No modules.
| <a name="input_logging_offer"></a> [logging\_offer](#input\_logging\_offer) | URL of the `loki_push_api` interface offer. | `string` | n/a | yes |
| <a name="input_metrics_offer"></a> [metrics\_offer](#input\_metrics\_offer) | URL of the `prometheus_remote_write` interface offer. | `string` | n/a | yes |
| <a name="input_model_uuid"></a> [model\_uuid](#input\_model\_uuid) | Reference to an existing model uuid. | `string` | n/a | yes |
| <a name="input_opentelemetry_collector"></a> [opentelemetry\_collector](#input\_opentelemetry\_collector) | n/a | <pre>object({<br/> app_name = optional(string, "otelcol")<br/> base = optional(string, "ubuntu@24.04")<br/> channel = optional(string, "2/stable")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> resources = optional(map(string), {})<br/> revision = optional(number)<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_pushgateway"></a> [pushgateway](#input\_pushgateway) | n/a | <pre>object({<br/> app_name = optional(string, "pushgateway")<br/> base = optional(string, "ubuntu@22.04")<br/> channel = optional(string, "1/stable")<br/> config = optional(map(string), {})<br/> constraints = optional(string, "arch=amd64")<br/> resources = optional(map(string), {})<br/> revision = optional(number)<br/> storage_directives = optional(map(string), {<br/> pushgateway-store = "10G"<br/> })<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |
| <a name="input_scrape_config"></a> [scrape\_config](#input\_scrape\_config) | n/a | <pre>object({<br/> app_name = optional(string, "scrape-config")<br/> base = optional(string, "ubuntu@22.04")<br/> channel = optional(string, "1/stable")<br/> config = optional(map(string), {<br/> scrape_interval = "10s"<br/> })<br/> constraints = optional(string, "arch=amd64")<br/> resources = optional(map(string), {})<br/> revision = optional(number)<br/> units = optional(number, 1)<br/> })</pre> | `{}` | no |

Expand Down
14 changes: 7 additions & 7 deletions terraform/components/observability/applications.tf
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Copyright 2026 Canonical Ltd.
# See LICENSE file for licensing details.

resource "juju_application" "grafana_agent" {
name = var.grafana_agent.app_name
resource "juju_application" "opentelemetry_collector" {
name = var.opentelemetry_collector.app_name
model_uuid = var.model_uuid

charm {
name = "grafana-agent-k8s"
channel = var.grafana_agent.channel
revision = var.grafana_agent.revision != null ? var.grafana_agent.revision : local.revisions.grafana_agent
name = "opentelemetry-collector-k8s"
channel = var.opentelemetry_collector.channel
revision = var.opentelemetry_collector.revision != null ? var.opentelemetry_collector.revision : local.revisions.opentelemetry_collector
}

constraints = var.grafana_agent.constraints
constraints = var.opentelemetry_collector.constraints
trust = true
units = var.grafana_agent.units
units = var.opentelemetry_collector.units
}

resource "juju_application" "cos_configuration" {
Expand Down
86 changes: 43 additions & 43 deletions terraform/components/observability/integrations.tf
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ data "juju_offer" "loki_logging" {

## Component internal integrations

resource "juju_integration" "cos_configuration_grafana_agent" {
resource "juju_integration" "cos_configuration_opentelemetry_collector" {
model_uuid = var.model_uuid

application {
Expand All @@ -24,7 +24,7 @@ resource "juju_integration" "cos_configuration_grafana_agent" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "grafana-dashboards-consumer"
}
}
Expand All @@ -43,7 +43,7 @@ resource "juju_integration" "pushgateway_scrape_config" {
}
}

resource "juju_integration" "scrape_config_grafana_agent" {
resource "juju_integration" "scrape_config_opentelemetry_collector" {
model_uuid = var.model_uuid

application {
Expand All @@ -52,18 +52,18 @@ resource "juju_integration" "scrape_config_grafana_agent" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "metrics-endpoint"
}
}

## Cross-model COS integrations

resource "juju_integration" "grafana_agent_grafana_dashboards" {
resource "juju_integration" "opentelemetry_collector_grafana_dashboards" {
model_uuid = var.model_uuid

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "grafana-dashboards-provider"
}

Expand All @@ -73,20 +73,20 @@ resource "juju_integration" "grafana_agent_grafana_dashboards" {

lifecycle {
replace_triggered_by = [
juju_application.grafana_agent.name,
juju_application.grafana_agent.model,
juju_application.grafana_agent.constraints,
juju_application.grafana_agent.placement,
juju_application.grafana_agent.charm.name,
juju_application.opentelemetry_collector.name,
juju_application.opentelemetry_collector.model,
juju_application.opentelemetry_collector.constraints,
juju_application.opentelemetry_collector.placement,
juju_application.opentelemetry_collector.charm.name,
]
}
}

resource "juju_integration" "grafana_agent_prometheus" {
resource "juju_integration" "opentelemetry_collector_prometheus" {
model_uuid = var.model_uuid

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "send-remote-write"
}

Expand All @@ -96,21 +96,21 @@ resource "juju_integration" "grafana_agent_prometheus" {

lifecycle {
replace_triggered_by = [
juju_application.grafana_agent.name,
juju_application.grafana_agent.model,
juju_application.grafana_agent.constraints,
juju_application.grafana_agent.placement,
juju_application.grafana_agent.charm.name,
juju_application.opentelemetry_collector.name,
juju_application.opentelemetry_collector.model,
juju_application.opentelemetry_collector.constraints,
juju_application.opentelemetry_collector.placement,
juju_application.opentelemetry_collector.charm.name,
]
}
}

resource "juju_integration" "grafana_agent_loki" {
resource "juju_integration" "opentelemetry_collector_loki" {
model_uuid = var.model_uuid

application {
name = juju_application.grafana_agent.name
endpoint = "logging-consumer"
name = juju_application.opentelemetry_collector.name
endpoint = "send-loki-logs"
}

application {
Expand All @@ -119,18 +119,18 @@ resource "juju_integration" "grafana_agent_loki" {

lifecycle {
replace_triggered_by = [
juju_application.grafana_agent.name,
juju_application.grafana_agent.model,
juju_application.grafana_agent.constraints,
juju_application.grafana_agent.placement,
juju_application.grafana_agent.charm.name,
juju_application.opentelemetry_collector.name,
juju_application.opentelemetry_collector.model,
juju_application.opentelemetry_collector.constraints,
juju_application.opentelemetry_collector.placement,
juju_application.opentelemetry_collector.charm.name,
]
}
}

## Spark components integrations

resource "juju_integration" "history_server_grafana_agent_dashboard" {
resource "juju_integration" "history_server_opentelemetry_collector_dashboard" {
model_uuid = var.model_uuid

application {
Expand All @@ -139,12 +139,12 @@ resource "juju_integration" "history_server_grafana_agent_dashboard" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "grafana-dashboards-consumer"
}
}

resource "juju_integration" "history_server_grafana_agent_logging" {
resource "juju_integration" "history_server_opentelemetry_collector_logging" {
model_uuid = var.model_uuid

application {
Expand All @@ -153,12 +153,12 @@ resource "juju_integration" "history_server_grafana_agent_logging" {
}

application {
name = juju_application.grafana_agent.name
endpoint = "logging-provider"
name = juju_application.opentelemetry_collector.name
endpoint = "receive-loki-logs"
}
}

resource "juju_integration" "history_server_grafana_agent_metrics" {
resource "juju_integration" "history_server_opentelemetry_collector_metrics" {
model_uuid = var.model_uuid

application {
Expand All @@ -167,7 +167,7 @@ resource "juju_integration" "history_server_grafana_agent_metrics" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "metrics-endpoint"
}
}
Expand All @@ -186,7 +186,7 @@ resource "juju_integration" "integration_hub_pushgateway" {
}
}

resource "juju_integration" "integration_hub_grafana_agent_logging" {
resource "juju_integration" "integration_hub_opentelemetry_collector_logging" {
model_uuid = var.model_uuid

application {
Expand All @@ -195,12 +195,12 @@ resource "juju_integration" "integration_hub_grafana_agent_logging" {
}

application {
name = juju_application.grafana_agent.name
endpoint = "logging-provider"
name = juju_application.opentelemetry_collector.name
endpoint = "receive-loki-logs"
}
}

resource "juju_integration" "kyuubi_grafana_agent_metrics" {
resource "juju_integration" "kyuubi_opentelemetry_collector_metrics" {
model_uuid = var.model_uuid

application {
Expand All @@ -209,12 +209,12 @@ resource "juju_integration" "kyuubi_grafana_agent_metrics" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "metrics-endpoint"
}
}

resource "juju_integration" "kyuubi_grafana_agent_dashboards" {
resource "juju_integration" "kyuubi_opentelemetry_collector_dashboards" {
model_uuid = var.model_uuid

application {
Expand All @@ -223,12 +223,12 @@ resource "juju_integration" "kyuubi_grafana_agent_dashboards" {
}

application {
name = juju_application.grafana_agent.name
name = juju_application.opentelemetry_collector.name
endpoint = "grafana-dashboards-consumer"
}
}

resource "juju_integration" "kyuubi_grafana_agent_logging" {
resource "juju_integration" "kyuubi_opentelemetry_collector_logging" {
model_uuid = var.model_uuid

application {
Expand All @@ -237,8 +237,8 @@ resource "juju_integration" "kyuubi_grafana_agent_logging" {
}

application {
name = juju_application.grafana_agent.name
endpoint = "logging-provider"
name = juju_application.opentelemetry_collector.name
endpoint = "receive-loki-logs"
}
}

8 changes: 4 additions & 4 deletions terraform/components/observability/locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

locals {
revisions = {
cos_configuration = 65
grafana_agent = 164
pushgateway = 27
scrape_config = 67
cos_configuration = 65
opentelemetry_collector = 162
pushgateway = 27
scrape_config = 67
}
}
Loading
Loading