Integrate SD-Core with Canonical Observability Stack¶
One of the key aspects considered while developing Charmed Aether SD-Core was making it easily observable. To achieve this, each Charmed Aether SD-Core Terraform module includes Grafana Agent application, which allows for integration with the Canonical Observability Stack (COS).
This how-to guide outlines the process of integrating Charmed Aether SD-Core with COS.
Steps described in this guide can be performed as both Day 1 and Day 2 operations.
Note
Deploying Canonical Observability Stack will increase the resources consumption on the K8s cluster. Make sure your Kubernetes cluster is capable of handling the load from both Charmed Aether SD-Core and COS before proceeding.
1. Add COS to the solution Terraform module¶
Update your solution Terraform module (here it’s named main.tf
):
cat << EOF > main.tf
module "cos" {
source = "git::https://github.com/canonical/terraform-juju-sdcore//modules/external/cos-lite"
model_name = "cos-lite"
deploy_cos_configuration = true
cos_configuration_config = {
git_repo = "https://github.com/canonical/sdcore-cos-configuration"
git_branch = "main"
grafana_dashboards_path = "grafana_dashboards/sdcore/"
}
}
resource "juju_integration" "prometheus-remote-write" {
model = "YOUR_CHARMED_AETHER_SD_CORE_MODEL_NAME"
application {
name = module.sdcore.grafana_agent_app_name
endpoint = module.sdcore.send_remote_write_endpoint
}
application {
offer_url = module.cos.prometheus_remote_write_offer_url
}
}
resource "juju_integration" "loki-logging" {
model = "YOUR_CHARMED_AETHER_SD_CORE_MODEL_NAME"
application {
name = module.sdcore.grafana_agent_app_name
endpoint = module.sdcore.logging_consumer_endpoint
}
application {
offer_url = module.cos.loki_logging_offer_url
}
}
EOF
Note
In this guide it is assumed, that the Terraform module responsible for deploying Charmed Aether SD-Core is named sdcore
.
If you use different name, please make sure it’s reflected in COS integrations.
2. Apply the changes¶
Fetch COS module:
terraform init
Apply new configuration:
terraform apply -auto-approve
3. Example of a complete solution Terraform module including Charmed Aether SD-Core integrated with COS¶
resource "juju_model" "sdcore" {
name = "sdcore"
}
module "sdcore" {
source = "git::https://github.com/canonical/terraform-juju-sdcore-k8s//modules/sdcore-k8s"
model_name = juju_model.sdcore.name
create_model = false
}
module "cos" {
source = "git::https://github.com/canonical/terraform-juju-sdcore//modules/external/cos-lite"
model_name = "cos-lite"
deploy_cos_configuration = true
cos_configuration_config = {
git_repo = "https://github.com/canonical/sdcore-cos-configuration"
git_branch = "main"
grafana_dashboards_path = "grafana_dashboards/sdcore/"
}
}
resource "juju_integration" "prometheus-remote-write" {
model = juju_model.sdcore.name
application {
name = module.sdcore.grafana_agent_app_name
endpoint = module.sdcore.send_remote_write_endpoint
}
application {
offer_url = module.cos.prometheus_remote_write_offer_url
}
}
resource "juju_integration" "loki-logging" {
model = juju_model.sdcore.name
application {
name = module.sdcore.grafana_agent_app_name
endpoint = module.sdcore.logging_consumer_endpoint
}
application {
offer_url = module.cos.loki_logging_offer_url
}
}