This commit is contained in:
parent
9403581be5
commit
064f6d88ba
@ -202,7 +202,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
}
|
||||
|
||||
let _ = Command::new("helm")
|
||||
.args(&[
|
||||
.args([
|
||||
"repo",
|
||||
"add",
|
||||
"grafana-operator",
|
||||
@ -213,13 +213,13 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
.unwrap();
|
||||
|
||||
let _ = Command::new("helm")
|
||||
.args(&["repo", "update"])
|
||||
.args(["repo", "update"])
|
||||
.output()
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let output = Command::new("helm")
|
||||
.args(&[
|
||||
.args([
|
||||
"install",
|
||||
"grafana-operator",
|
||||
"grafana-operator/grafana-operator",
|
||||
@ -243,30 +243,30 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
|
||||
Ok(Outcome::success(format!(
|
||||
"installed grafana operator in ns {}",
|
||||
self.sender.namespace.clone().clone()
|
||||
self.sender.namespace.clone()
|
||||
)))
|
||||
}
|
||||
|
||||
async fn install_prometheus(&self, client: &Arc<K8sClient>) -> Result<Outcome, InterpretError> {
|
||||
debug!(
|
||||
"installing crd-prometheuses in namespace {}",
|
||||
self.sender.namespace.clone().clone()
|
||||
self.sender.namespace.clone()
|
||||
);
|
||||
debug!("building role/rolebinding/serviceaccount for crd-prometheus");
|
||||
let rolename = format!("{}-prom", self.sender.namespace.clone().clone());
|
||||
let sa_name = format!("{}-prom-sa", self.sender.namespace.clone().clone());
|
||||
let role = build_prom_role(rolename.clone(), self.sender.namespace.clone().clone());
|
||||
let rolename = format!("{}-prom", self.sender.namespace.clone());
|
||||
let sa_name = format!("{}-prom-sa", self.sender.namespace.clone());
|
||||
let role = build_prom_role(rolename.clone(), self.sender.namespace.clone());
|
||||
let rolebinding = build_prom_rolebinding(
|
||||
rolename.clone(),
|
||||
self.sender.namespace.clone().clone(),
|
||||
self.sender.namespace.clone(),
|
||||
sa_name.clone(),
|
||||
);
|
||||
let sa = build_prom_service_account(sa_name.clone(), self.sender.namespace.clone().clone());
|
||||
let sa = build_prom_service_account(sa_name.clone(), self.sender.namespace.clone());
|
||||
let prom_spec = PrometheusSpec {
|
||||
alerting: Some(PrometheusSpecAlerting {
|
||||
alertmanagers: Some(vec![AlertmanagerEndpoints {
|
||||
name: Some(format!("alertmanager-operated")),
|
||||
namespace: Some(format!("{}", self.sender.namespace.clone().clone())),
|
||||
namespace: Some(format!("{}", self.sender.namespace.clone())),
|
||||
port: Some("web".into()),
|
||||
scheme: Some("http".into()),
|
||||
}]),
|
||||
@ -275,7 +275,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
service_monitor_namespace_selector: Some(LabelSelector {
|
||||
match_labels: BTreeMap::from([(
|
||||
"kubernetes.io/metadata.name".to_string(),
|
||||
format!("{}", self.sender.namespace.clone().clone()),
|
||||
format!("{}", self.sender.namespace.clone()),
|
||||
)]),
|
||||
match_expressions: vec![],
|
||||
}),
|
||||
@ -299,25 +299,25 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
rule_namespace_selector: Some(LabelSelector {
|
||||
match_labels: BTreeMap::from([(
|
||||
"kubernetes.io/metadata.name".to_string(),
|
||||
format!("{}", self.sender.namespace.clone().clone()),
|
||||
format!("{}", self.sender.namespace.clone()),
|
||||
)]),
|
||||
match_expressions: vec![],
|
||||
}),
|
||||
};
|
||||
let prom = Prometheus {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(self.sender.namespace.clone().clone()),
|
||||
name: Some(self.sender.namespace.clone()),
|
||||
labels: Some(std::collections::BTreeMap::from([
|
||||
("alertmanagerConfig".to_string(), "enabled".to_string()),
|
||||
("client".to_string(), "prometheus".to_string()),
|
||||
])),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: prom_spec,
|
||||
};
|
||||
client
|
||||
.apply(&role, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(&role, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
info!(
|
||||
@ -326,7 +326,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
role.metadata.namespace.unwrap()
|
||||
);
|
||||
client
|
||||
.apply(&rolebinding, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(&rolebinding, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
info!(
|
||||
@ -335,7 +335,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
rolebinding.metadata.namespace.unwrap()
|
||||
);
|
||||
client
|
||||
.apply(&sa, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(&sa, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
info!(
|
||||
@ -344,7 +344,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
sa.metadata.namespace.unwrap()
|
||||
);
|
||||
client
|
||||
.apply(&prom, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(&prom, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
info!(
|
||||
@ -365,18 +365,18 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
) -> Result<Outcome, InterpretError> {
|
||||
let am = Alertmanager {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(self.sender.namespace.clone().clone()),
|
||||
name: Some(self.sender.namespace.clone()),
|
||||
labels: Some(std::collections::BTreeMap::from([(
|
||||
"alertmanagerConfig".to_string(),
|
||||
"enabled".to_string(),
|
||||
)])),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: AlertmanagerSpec::default(),
|
||||
};
|
||||
client
|
||||
.apply(&am, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(&am, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
Ok(Outcome::success(format!(
|
||||
@ -391,7 +391,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
) -> Result<Outcome, InterpretError> {
|
||||
let default_service_monitor = ServiceMonitor {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(self.sender.namespace.clone().clone()),
|
||||
name: Some(self.sender.namespace.clone()),
|
||||
labels: Some(std::collections::BTreeMap::from([
|
||||
("alertmanagerConfig".to_string(), "enabled".to_string()),
|
||||
("client".to_string(), "prometheus".to_string()),
|
||||
@ -400,7 +400,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
"kube-state-metrics".to_string(),
|
||||
),
|
||||
])),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: ServiceMonitorSpec::default(),
|
||||
@ -408,7 +408,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
monitors.push(default_service_monitor);
|
||||
for monitor in monitors.iter() {
|
||||
client
|
||||
.apply(monitor, Some(&self.sender.namespace.clone().clone()))
|
||||
.apply(monitor, Some(&self.sender.namespace.clone()))
|
||||
.await
|
||||
.map_err(|e| InterpretError::new(e.to_string()))?;
|
||||
}
|
||||
@ -434,12 +434,12 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
prom_rule_spec.groups.push(default_rules_group);
|
||||
let prom_rules = PrometheusRule {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(self.sender.namespace.clone().clone()),
|
||||
name: Some(self.sender.namespace.clone()),
|
||||
labels: Some(std::collections::BTreeMap::from([
|
||||
("alertmanagerConfig".to_string(), "enabled".to_string()),
|
||||
("role".to_string(), "prometheus-rule".to_string()),
|
||||
])),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: prom_rule_spec,
|
||||
@ -475,7 +475,7 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
};
|
||||
let mut json_data = BTreeMap::new();
|
||||
json_data.insert("timeInterval".to_string(), "5s".to_string());
|
||||
let namespace = self.sender.namespace.clone().clone();
|
||||
let namespace = self.sender.namespace.clone();
|
||||
|
||||
let json = build_default_dashboard(&namespace);
|
||||
|
||||
@ -483,9 +483,9 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(format!(
|
||||
"grafana-datasource-{}",
|
||||
self.sender.namespace.clone().clone()
|
||||
self.sender.namespace.clone()
|
||||
)),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: GrafanaDatasourceSpec {
|
||||
@ -496,11 +496,11 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
database: Some("prometheus".to_string()),
|
||||
json_data: Some(json_data),
|
||||
//this is fragile
|
||||
name: format!("prometheus-{}-0", self.sender.namespace.clone().clone()),
|
||||
name: format!("prometheus-{}-0", self.sender.namespace.clone()),
|
||||
r#type: "prometheus".to_string(),
|
||||
url: format!(
|
||||
"http://prometheus-operated.{}.svc.cluster.local:9090",
|
||||
self.sender.namespace.clone().clone()
|
||||
self.sender.namespace.clone()
|
||||
),
|
||||
},
|
||||
},
|
||||
@ -515,9 +515,9 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(format!(
|
||||
"grafana-dashboard-{}",
|
||||
self.sender.namespace.clone().clone()
|
||||
self.sender.namespace.clone()
|
||||
)),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
spec: GrafanaDashboardSpec {
|
||||
@ -534,8 +534,8 @@ impl K8sPrometheusCRDAlertingInterpret {
|
||||
|
||||
let grafana = Grafana {
|
||||
metadata: ObjectMeta {
|
||||
name: Some(format!("grafana-{}", self.sender.namespace.clone().clone())),
|
||||
namespace: Some(self.sender.namespace.clone().clone()),
|
||||
name: Some(format!("grafana-{}", self.sender.namespace.clone())),
|
||||
namespace: Some(self.sender.namespace.clone()),
|
||||
labels: Some(label.clone()),
|
||||
..Default::default()
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user