Setup for Prometheus + Thanos on Cloudfoundry. This provides a path towards unlimited metrics storage. This module deploys a number of apps and services to provide Thanos
Important
This repository is managed as Philips Inner-source / Open-source. This repository is NOT endorsed or supported by HSSA&P or I&S Cloud Operations. You are expected to self-support or raise tickets on the Github project and NOT raise tickets in HSP ServiceNow.
- Deploys a Thanos instance with S3 Bucket as storage
- Deploys a Compactor instance
- Variant sidecar for scrape target and rule discovery
- Remote write support
- HSP Metrics exporter (optional)
- CF Metric exporter (optional)
module "thanos" {
source = "philips-labs/thanos/cloudfoundry"
version = "6.1.0"
cf_org_name = var.cf_org_name
cf_space_id = var.cf_space_id
cf_functional_account = {
api_endpoint = var.cf_api_url
username = var.cf_username
password = var.cf_password
}
}
| Name | Version |
|---|---|
| terraform | >= 1.3.0 |
| cloudfoundry | >= 0.15.5 |
| hsdp | >= 0.38.2 |
| random | >= 2.2.1 |
| Name | Version |
|---|---|
| cloudfoundry | >= 0.15.5 |
| hsdp | >= 0.38.2 |
| random | >= 2.2.1 |
| Name | Source | Version |
|---|---|---|
| proxy | ./modules/proxy | n/a |
| Name | Type |
|---|---|
| cloudfoundry_app.cfpaasexporter | resource |
| cloudfoundry_app.hsdp_metrics_exporter | resource |
| cloudfoundry_app.thanos | resource |
| cloudfoundry_app.thanos_compactor | resource |
| cloudfoundry_app.thanos_query | resource |
| cloudfoundry_app.thanos_store | resource |
| cloudfoundry_network_policy.thanos_query | resource |
| cloudfoundry_network_policy.thanos_store | resource |
| cloudfoundry_route.cfpaasexporter_internal | resource |
| cloudfoundry_route.hsdp_metrics_exporter_internal | resource |
| cloudfoundry_route.thanos | resource |
| cloudfoundry_route.thanos_internal | resource |
| cloudfoundry_route.thanos_query | resource |
| cloudfoundry_route.thanos_query_internal | resource |
| cloudfoundry_route.thanos_store_internal | resource |
| cloudfoundry_service_instance.s3 | resource |
| cloudfoundry_service_key.s3 | resource |
| random_id.id | resource |
| random_password.password | resource |
| cloudfoundry_domain.app_domain | data source |
| cloudfoundry_domain.apps_internal_domain | data source |
| cloudfoundry_service.s3 | data source |
| hsdp_config.cf | data source |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| alertmanagers_endpoints | List of endpoints of the alert managers | list(string) |
[] |
no |
| cf_functional_account | Configuration for the CloudFoundry function account. Required for variant and if enable_cf_exporter is set to true | object({ |
{ |
no |
| cf_paas_exporter_disk_quota | CF PaaS Exporter disk quota | number |
100 |
no |
| cf_paas_exporter_image | Image to use for cf paas exporter. Use a v* tagged version to prevent automatic updates | string |
"loafoe/paas-prometheus-exporter:v0.0.5" |
no |
| cf_paas_exporter_memory | CF PaaS Exporter memory | number |
256 |
no |
| cf_paas_exporter_timeout | CF PaaS Exporter timeout | number |
120 |
no |
| cf_space_id | Cloudfoundry SPACE id to use for deploying all Thanos components. | string |
n/a | yes |
| docker_password | Docker registry password | string |
"" |
no |
| docker_username | Docker registry username | string |
"" |
no |
| enable_cf_exporter | Enable the CloudFoundry metrics exporter and scrape it from Thanos | bool |
false |
no |
| enable_hsdp_metrics_exporter | Enable scraping of HSDP Metrics instances | bool |
false |
no |
| enable_prometheus_proxy | Enable the Prometheus proxy, protected by Basic Auth | bool |
false |
no |
| environment | Pass environment variable to the app | map(any) |
{} |
no |
| hsdp_metrics_exporter | HSDP Metrics exporter configuration | object({ |
{ |
no |
| name_postfix | The postfix string to append to the space, hostname, etc. Prevents namespace clashes | string |
"" |
no |
| spaces | The list of CF space GUIDs to scrape. When provided variant will only consider apps in these spaces | list(string) |
[] |
no |
| tenants | The list of tenants to scrape. When an app does not specify tenant then 'default' is used | list(string) |
[ |
no |
| thanos_compactor_disk_quota | Thanos disk quota | number |
5000 |
no |
| thanos_compactor_enabled | Enable or disable the Thanos compactor component | bool |
true |
no |
| thanos_compactor_image | Image to use for Thanos compactor. Use a v* tagged version to prevent automatic updates | string |
"ghcr.io/philips-labs/terraform-cloudfoundry-thanos:v6.5.0" |
no |
| thanos_compactor_memory | Thanos store memory | number |
1024 |
no |
| thanos_disk_quota | Thanos disk quota | number |
5000 |
no |
| thanos_extra_config | Any extra yaml config that will be merged into the prometheus config at runtime. Extra targets can be added here. | string |
"" |
no |
| thanos_file_sd_url | A URL that exposes a prometheus file_sd yaml file will be periodically downloaded and used for service discovery | string |
"" |
no |
| thanos_image | Image to use for Thanos app. Use a v* tagged version to prevent automatic updates | string |
"ghcr.io/philips-labs/terraform-cloudfoundry-thanos:v6.5.0" |
no |
| thanos_memory | Thanos memory | number |
1024 |
no |
| thanos_public_endpoints | Make Thanos public endpoint | bool |
false |
no |
| thanos_query_image | Image to use for Thanos query. Use a v* tagged version to prevent automatic updates | string |
"ghcr.io/philips-labs/terraform-cloudfoundry-thanos:v6.5.0" |
no |
| thanos_query_memory | Thanos memory | number |
1024 |
no |
| thanos_query_service_bindings | A list of service instances that should be bound to the thanos app | list(object({ service_instance = string })) |
[] |
no |
| thanos_service_bindings | A list of service instances that should be bound to the thanos app | list(object({ service_instance = string })) |
[] |
no |
| thanos_storage_tsdb_retention_time | Thanos storage tsdb retention time | string |
"2h" |
no |
| thanos_store_disk_quota | Thanos store disk quota | number |
5000 |
no |
| thanos_store_image | Image to use for Thanos store. Use a v* tagged version to prevent automatic updates | string |
"ghcr.io/philips-labs/terraform-cloudfoundry-thanos:v6.5.0" |
no |
| thanos_store_memory | Thanos store memory | number |
1536 |
no |
| thanos_store_service_bindings | A list of service instances that should be bound to the thanos_store app | list(object({ service_instance = string })) |
[] |
no |
| Name | Description |
|---|---|
| postfix | Cluster ID / Postfix of Thanos deployment |
| prometheus_proxy_endpoint | The Promethues proxy endpoint |
| prometheus_proxy_password | The Promethues proxy password |
| prometheus_proxy_username | The Promethues proxy username |
| thanos_app_id | App id for Thanos |
| thanos_endpoint | URL of Thanos deployment |
| thanos_query_app_id | App id for Thanos Query |
| thanos_query_endpoint | URL of Thanos query deployment |
| thanos_space_id | Cloud foundry space ID of Thanos |
| thanos_store_app_id | App id for Thanos Store |
| thanos_store_endpoint | Internal only URL of Thanos store deployment |
Please post your questions on the HSDP Slack #terraform channel, or start a discussion
License is MIT