diff --git a/armonik/README.md b/armonik/README.md index 74cfe2120..d8ae5fbab 100644 --- a/armonik/README.md +++ b/armonik/README.md @@ -131,7 +131,7 @@ | [metrics\_server\_chart\_name](#input\_metrics\_server\_chart\_name) | Name of the metrics-server Helm chart | `string` | `"metrics-server"` | no | | [namespace](#input\_namespace) | Namespace of ArmoniK resources | `string` | n/a | yes | | [partition\_metrics\_exporter\_secret\_name](#input\_partition\_metrics\_exporter\_secret\_name) | the name of the partition metrics exporter secret | `string` | `"partition-metrics-exporter"` | no | -| [pod\_deletion\_cost](#input\_pod\_deletion\_cost) | value |
object({
image = string
tag = string
image_pull_policy = optional(string, "IfNotPresent")
image_pull_secrets = optional(string, "")
node_selector = optional(any, {})
annotations = optional(any, {})
name = optional(string, "pdc-update")
label_app = optional(string, "armonik")
prometheus_url = optional(string)
metrics_name = optional(string)
frequency = optional(number)
ignore_younger_than = optional(number)
concurrency = optional(number)
extra_conf = optional(map(string), {})

limits = optional(object({
cpu = optional(string)
memory = optional(string)
}))
requests = optional(object({
cpu = optional(string)
memory = optional(string)
}))
})
| `null` | no | +| [pod\_deletion\_cost](#input\_pod\_deletion\_cost) | value |
object({
image = string
tag = string
image_pull_policy = optional(string, "IfNotPresent")
image_pull_secrets = optional(string, "")
node_selector = optional(any, {})
annotations = optional(any, {})
name = optional(string, "pdc-update")
label_app = optional(string, "armonik")
prometheus_url = optional(string)
metrics_name = optional(string)
period = optional(number)
ignore_younger_than = optional(number)
concurrency = optional(number)
extra_conf = optional(map(string), {})

limits = optional(object({
cpu = optional(string)
memory = optional(string)
}))
requests = optional(object({
cpu = optional(string)
memory = optional(string)
}))
})
| `null` | no | | [prometheus\_secret\_name](#input\_prometheus\_secret\_name) | the name of the prometheus secret | `string` | `"prometheus"` | no | | [pvc\_name](#input\_pvc\_name) | Name for the pvc to be used | `string` | `"nfsvolume"` | no | | [s3\_secret\_name](#input\_s3\_secret\_name) | the name of the S3 secret | `string` | `"s3"` | no | diff --git a/armonik/pdc.tf b/armonik/pdc.tf index 5e6819d66..19fb195c5 100644 --- a/armonik/pdc.tf +++ b/armonik/pdc.tf @@ -1,11 +1,10 @@ locals { pdc_env = var.pod_deletion_cost != null ? merge({ - PrometheusUrl = coalesce(var.pod_deletion_cost.prometheus_url, "http://prometheus.${var.namespace}.svc:9090/") - MetricsName = var.pod_deletion_cost.metrics_name - Period = var.pod_deletion_cost.period - IgnoreYoungerThan = var.pod_deletion_cost.ignore_younger_than - KubernetesNamespace = var.namespace - Concurrency = var.pod_deletion_cost.concurrency + PrometheusUrl = coalesce(var.pod_deletion_cost.prometheus_url, "http://prometheus.${var.namespace}.svc:9090/") + MetricsName = var.pod_deletion_cost.metrics_name + Period = var.pod_deletion_cost.period + IgnoreYoungerThan = var.pod_deletion_cost.ignore_younger_than + Concurrency = var.pod_deletion_cost.concurrency }, var.pod_deletion_cost.extra_conf) : {} } diff --git a/images/pdc-update/src/main.rs b/images/pdc-update/src/main.rs index 6653a062c..f68f40a67 100644 --- a/images/pdc-update/src/main.rs +++ b/images/pdc-update/src/main.rs @@ -38,10 +38,6 @@ struct Cli { #[arg(short, long, env = "IgnoreYoungerThan", default_value_t = 10.0)] ignore_younger_than: f64, - /// Namespace where the pods are located - #[arg(short, long, env = "KubernetesNamespace", default_value = "default")] - namespace: String, - /// Number of concurrent requests to Kubernetes #[arg(short, long, env = "Concurrency", default_value_t = 10)] concurrency: u32, @@ -54,12 +50,9 @@ async fn main() -> Result<(), Box> { let cost_model: Box = Box::new(cost::age::AgeCost::new(cli.ignore_younger_than, 1.0)); - let metrics_scraper: Box = - Box::new(metrics::prometheus::PrometheusScraper::new( - &cli.prometheus_url, - &cli.metrics_name, - &cli.namespace, - )?); + let metrics_scraper: Box = Box::new( + metrics::prometheus::PrometheusScraper::new(&cli.prometheus_url, &cli.metrics_name)?, + ); let worker_updater: Box = Box::new(updater::pod::PodUpdater::new(cli.concurrency as usize).await?); let mut cost_map = HashMap::new(); diff --git a/images/pdc-update/src/metrics/prometheus.rs b/images/pdc-update/src/metrics/prometheus.rs index 870106f62..86046e7c3 100644 --- a/images/pdc-update/src/metrics/prometheus.rs +++ b/images/pdc-update/src/metrics/prometheus.rs @@ -7,8 +7,6 @@ use super::{MetricsScraper, MetricsValue}; pub struct PrometheusScraper { /// Query URL for Prometheus query: reqwest::Url, - /// Namespace of the workers - namespace: String, } impl PrometheusScraper { @@ -16,14 +14,10 @@ impl PrometheusScraper { pub fn new( url: &str, metrics_name: &str, - namespace: &str, ) -> Result> { let mut query = reqwest::Url::parse(url)?.join("api/v1/query")?; query.query_pairs_mut().append_pair("query", metrics_name); - Ok(Self { - query, - namespace: namespace.to_owned(), - }) + Ok(Self { query }) } } @@ -63,7 +57,7 @@ impl MetricsScraper for PrometheusScraper { Some(MetricsValue { name: result.metric.kubernetes_pod_name.to_owned(), - namespace: self.namespace.clone(), + namespace: result.metric.kubernetes_namespace.to_owned(), timestamp: result.value.0, value, }) @@ -106,6 +100,7 @@ struct PrometheusMetric<'a> { name: &'a str, instance: &'a str, job: &'a str, + kubernetes_namespace: &'a str, kubernetes_pod_name: &'a str, kubernetes_pod_node_name: &'a str, } diff --git a/monitoring/onpremise/prometheus/prometheus-configmap.tf b/monitoring/onpremise/prometheus/prometheus-configmap.tf index 60351ea3b..6054b796f 100644 --- a/monitoring/onpremise/prometheus/prometheus-configmap.tf +++ b/monitoring/onpremise/prometheus/prometheus-configmap.tf @@ -119,6 +119,9 @@ scrape_configs: - source_labels: [__meta_kubernetes_pod_label_service] action: keep regex: "control-plane" + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_node_name] action: replace target_label: kubernetes_pod_node_name @@ -139,6 +142,9 @@ scrape_configs: - source_labels: [__meta_kubernetes_pod_label_service] action: keep regex: "compute-plane" + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_node_name] action: replace target_label: kubernetes_pod_node_name