Skip to content

Commit 56e7456

Browse files
authored
feat: remove dcu variable and configurations (demeter-run#93)
1 parent 4285c70 commit 56e7456

File tree

9 files changed

+1
-170
lines changed

9 files changed

+1
-170
lines changed

bootstrap/feature/main.tf

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,6 @@ variable "metrics_delay" {
1010
default = "60"
1111
}
1212

13-
variable "per_min_dcus" {
14-
default = {
15-
"mainnet" : 36,
16-
"default" : 16,
17-
}
18-
}
19-
20-
variable "per_request_dcus" {
21-
default = {
22-
"mainnet" : 10,
23-
"default" : 5,
24-
}
25-
}
26-
27-
variable "track_dcu_usage" {
28-
default = "true"
29-
}
30-
3113
variable "api_key_salt" {
3214
type = string
3315
}

bootstrap/feature/operator.tf

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,6 @@ resource "kubernetes_deployment_v1" "operator" {
5050
value = var.metrics_delay
5151
}
5252

53-
env {
54-
name = "DCU_PER_REQUEST"
55-
value = "mainnet=${var.per_request_dcus["mainnet"]},preprod=${var.per_request_dcus["default"]},preview=${var.per_request_dcus["default"]},sanchonet=${var.per_request_dcus["default"]}"
56-
}
57-
58-
env {
59-
name = "TRACK_DCU_USAGE"
60-
value = var.track_dcu_usage
61-
}
62-
6353
env {
6454
name = "API_KEY_SALT"
6555
value = var.api_key_salt

bootstrap/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ module "kupo_feature" {
1212
extension_subdomain = var.extension_subdomain
1313
dns_zone = var.dns_zone
1414
api_key_salt = var.api_key_salt
15-
per_request_dcus = var.per_request_dcus
1615
namespace = var.namespace
1716
resources = var.operator_resources
1817
tolerations = var.operator_tolerations

bootstrap/variables.tf

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,6 @@ variable "metrics_delay" {
5656
default = "60"
5757
}
5858

59-
variable "per_min_dcus" {
60-
default = {
61-
"mainnet" : 36,
62-
"default" : 16,
63-
}
64-
}
65-
66-
variable "per_request_dcus" {
67-
default = {
68-
"mainnet" : 10,
69-
"default" : 5,
70-
}
71-
}
72-
73-
variable "track_dcu_usage" {
74-
default = "true"
75-
}
76-
7759
variable "api_key_salt" {
7860
type = string
7961
}

examples/manifest.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,6 @@ spec:
322322
value: "40"
323323
- name: PROMETHEUS_URL
324324
value: "http://prometheus/api/v1"
325-
- name: DCU_PER_REQUEST
326-
value: "preview=5,preprod=5,mainnet=5"
327325
---
328326
apiVersion: v1
329327
kind: Service

operator/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ This operator will create a key into the CRD to allow Kupo to be accessed extern
1111
| API_KEY_SALT | kupo-salt |
1212
| METRICS_DELAY | 40 |
1313
| PROMETHEUS_URL | |
14-
| DCU_PER_REQUEST | preview=5,preprod=5,mainnet=5 |
1514
| DEFAULT_KUPO_VERSION | 2 |
1615

1716
## Port CRD

operator/src/config.rs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use lazy_static::lazy_static;
2-
use std::{collections::HashMap, env, time::Duration};
2+
use std::{env, time::Duration};
33

44
lazy_static! {
55
static ref CONTROLLER_CONFIG: Config = Config::from_env();
@@ -16,7 +16,6 @@ pub struct Config {
1616
pub api_key_salt: String,
1717
pub metrics_delay: Duration,
1818
pub prometheus_url: String,
19-
pub dcu_per_request: HashMap<String, f64>,
2019
pub default_kupo_version: String,
2120
}
2221

@@ -33,18 +32,6 @@ impl Config {
3332
.expect("METRICS_DELAY must be a number"),
3433
),
3534
prometheus_url: env::var("PROMETHEUS_URL").expect("PROMETHEUS_URL must be set"),
36-
dcu_per_request: env::var("DCU_PER_REQUEST")
37-
.expect("DCU_PER_REQUEST must be set")
38-
.split(',')
39-
.map(|pair| {
40-
let parts: Vec<&str> = pair.split('=').collect();
41-
let dcu = parts[1]
42-
.parse::<f64>()
43-
.expect("DCU_PER_REQUEST must be NETWORK=NUMBER");
44-
45-
(parts[0].into(), dcu)
46-
})
47-
.collect(),
4835
default_kupo_version: env::var("DEFAULT_KUPO_VERSION").unwrap_or("v2".into()),
4936
}
5037
}

operator/src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ async fn main() -> io::Result<()> {
1313
let state = Arc::new(State::default());
1414

1515
metrics_collector::run_metrics_collector(state.clone());
16-
metrics_collector::run_kong_metrics_collector(state.clone());
1716
metrics_collector::run_metrics_server(state.clone());
1817

1918
controller::run(state.clone()).await;

operator/src/metrics.rs

Lines changed: 0 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,13 @@ use crate::{get_config, Config, Error, KupoPort, State};
1414

1515
#[derive(Clone)]
1616
pub struct Metrics {
17-
pub dcu: IntCounterVec,
1817
pub usage: IntCounterVec,
1918
pub reconcile_failures: IntCounterVec,
2019
pub metrics_failures: IntCounterVec,
2120
}
2221

2322
impl Default for Metrics {
2423
fn default() -> Self {
25-
let dcu = IntCounterVec::new(
26-
opts!("dmtr_consumed_dcus", "quantity of dcu consumed",),
27-
&["project", "service", "service_type", "tenancy"],
28-
)
29-
.unwrap();
30-
3124
let usage = IntCounterVec::new(
3225
opts!("usage", "Feature usage",),
3326
&["feature", "project", "resource_name", "tier"],
@@ -53,7 +46,6 @@ impl Default for Metrics {
5346
.unwrap();
5447

5548
Metrics {
56-
dcu,
5749
usage,
5850
reconcile_failures,
5951
metrics_failures,
@@ -65,7 +57,6 @@ impl Metrics {
6557
pub fn register(self, registry: &Registry) -> Result<Self, prometheus::Error> {
6658
registry.register(Box::new(self.reconcile_failures.clone()))?;
6759
registry.register(Box::new(self.metrics_failures.clone()))?;
68-
registry.register(Box::new(self.dcu.clone()))?;
6960
registry.register(Box::new(self.usage.clone()))?;
7061

7162
Ok(self)
@@ -83,18 +74,6 @@ impl Metrics {
8374
.inc()
8475
}
8576

86-
pub fn count_dcu_consumed(&self, project: &str, network: &str, dcu: f64) {
87-
let service = format!("{}-{}", KupoPort::kind(&()), network);
88-
let service_type = format!("{}.{}", KupoPort::plural(&()), KupoPort::group(&()));
89-
let tenancy = "proxy";
90-
91-
let dcu: u64 = dcu.ceil() as u64;
92-
93-
self.dcu
94-
.with_label_values(&[project, &service, &service_type, tenancy])
95-
.inc_by(dcu);
96-
}
97-
9877
pub fn count_usage(&self, project: &str, resource_name: &str, tier: &str, value: f64) {
9978
let feature = &KupoPort::kind(&());
10079
let value: u64 = value.ceil() as u64;
@@ -248,24 +227,8 @@ pub fn run_metrics_collector(state: Arc<State>) {
248227
warn!(instance, "invalid network to the regex");
249228
continue;
250229
}
251-
let network_captures = network_captures.unwrap();
252-
let network = network_captures.get(1).unwrap().as_str();
253230
let tier = result.metric.tier.unwrap();
254231

255-
let dcu_per_request = config.dcu_per_request.get(network);
256-
if dcu_per_request.is_none() {
257-
let error = Error::ConfigError(format!(
258-
"dcu_per_request not configured to {} network",
259-
network
260-
));
261-
error!(error = error.to_string());
262-
state.metrics.metrics_failure(&error);
263-
continue;
264-
}
265-
let dcu_per_request = dcu_per_request.unwrap();
266-
267-
let dcu = result.value * dcu_per_request;
268-
state.metrics.count_dcu_consumed(project, network, dcu);
269232
state
270233
.metrics
271234
.count_usage(project, resource_name, &tier, result.value);
@@ -274,74 +237,6 @@ pub fn run_metrics_collector(state: Arc<State>) {
274237
});
275238
}
276239

277-
#[instrument("kong metrics collector run", skip_all)]
278-
pub fn run_kong_metrics_collector(state: Arc<State>) {
279-
tokio::spawn(async move {
280-
info!("collecting kong metrics running");
281-
282-
let config = get_config();
283-
let regex = Regex::new(r"(.+)\.(\w+)-.+").unwrap();
284-
let mut last_execution = Utc::now();
285-
286-
loop {
287-
tokio::time::sleep(config.metrics_delay).await;
288-
289-
let end = Utc::now();
290-
let start = (end - last_execution).num_seconds();
291-
292-
last_execution = end;
293-
294-
let query = format!(
295-
"sum by (consumer) (increase(kong_http_requests_total{{service='kupo-v1-ingress-kong-proxy', code!~\"429|401|503\"}}[{start}s] @ {}))",
296-
end.timestamp_millis() / 1000
297-
);
298-
299-
let response = collect_prometheus_metrics(config, query).await;
300-
if let Err(err) = response {
301-
error!(error = err.to_string(), "error to make prometheus request");
302-
state.metrics.metrics_failure(&err);
303-
continue;
304-
}
305-
let response = response.unwrap();
306-
307-
for result in response.data.result {
308-
if result.value == 0.0 || result.metric.consumer.is_none() {
309-
continue;
310-
}
311-
312-
let consumer = result.metric.consumer.unwrap();
313-
314-
let captures = regex.captures(&consumer);
315-
if captures.is_none() {
316-
warn!(consumer, "invalid consumer to the regex");
317-
continue;
318-
}
319-
320-
let captures = captures.unwrap();
321-
let namespace = captures.get(1).unwrap().as_str();
322-
let network = captures.get(2).unwrap().as_str();
323-
324-
let dcu_per_request = config.dcu_per_request.get(network);
325-
if dcu_per_request.is_none() {
326-
let error = Error::ConfigError(format!(
327-
"dcu_per_request not configured to {} network",
328-
network
329-
));
330-
error!(error = error.to_string());
331-
state.metrics.metrics_failure(&error);
332-
continue;
333-
}
334-
let dcu_per_request = dcu_per_request.unwrap();
335-
336-
let dcu = result.value * dcu_per_request;
337-
338-
let project = namespace.split_once("prj-").unwrap().1;
339-
state.metrics.count_dcu_consumed(project, network, dcu);
340-
}
341-
}
342-
});
343-
}
344-
345240
#[derive(Debug, Deserialize)]
346241
struct PrometheusDataResultMetric {
347242
consumer: Option<String>,

0 commit comments

Comments
 (0)