mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Setting per cluster for mountpoints in the filesystem metrics
Signed-off-by: Piotr Roszatycki <piotr.roszatycki@gmail.com>
This commit is contained in:
parent
f1a960fd78
commit
4ff49bdbd7
@ -125,6 +125,7 @@ export interface ClusterPrometheusPreferences {
|
||||
prometheusProvider?: {
|
||||
type: string;
|
||||
};
|
||||
filesystemMountpoints?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -69,6 +69,7 @@ const addMetricsRouteInjectable = getRouteInjectable({
|
||||
const queryParams: Partial<Record<string, string>> = Object.fromEntries(query.entries());
|
||||
const prometheusMetadata: ClusterPrometheusMetadata = {};
|
||||
const prometheusHandler = di.inject(prometheusHandlerInjectable, cluster);
|
||||
const mountpoints = cluster.preferences.filesystemMountpoints || "/";
|
||||
|
||||
try {
|
||||
const { prometheusPath, provider } = await prometheusHandler.getPrometheusDetails();
|
||||
@ -99,7 +100,7 @@ const addMetricsRouteInjectable = getRouteInjectable({
|
||||
const data = payload as Record<string, Record<string, string>>;
|
||||
const queries = object.entries(data)
|
||||
.map(([queryName, queryOpts]) => (
|
||||
provider.getQuery(queryOpts, queryName)
|
||||
provider.getQuery({ ...queryOpts, mountpoints }, queryName)
|
||||
));
|
||||
|
||||
const result = await loadMetrics(queries, cluster, prometheusPath, queryParams);
|
||||
|
||||
@ -32,6 +32,7 @@ interface Dependencies {
|
||||
|
||||
@observer
|
||||
class NonInjectedClusterPrometheusSetting extends React.Component<ClusterPrometheusSettingProps & Dependencies> {
|
||||
@observable mountpoints = "";
|
||||
@observable path = "";
|
||||
@observable selectedOption: ProviderValue = autoDetectPrometheus;
|
||||
@observable loading = true;
|
||||
@ -68,7 +69,7 @@ class NonInjectedClusterPrometheusSetting extends React.Component<ClusterPrometh
|
||||
componentDidMount() {
|
||||
disposeOnUnmount(this,
|
||||
autorun(() => {
|
||||
const { prometheus, prometheusProvider } = this.props.cluster.preferences;
|
||||
const { prometheus, prometheusProvider, filesystemMountpoints } = this.props.cluster.preferences;
|
||||
|
||||
if (prometheus) {
|
||||
const prefix = prometheus.prefix || "";
|
||||
@ -83,6 +84,10 @@ class NonInjectedClusterPrometheusSetting extends React.Component<ClusterPrometh
|
||||
} else {
|
||||
this.selectedOption = autoDetectPrometheus;
|
||||
}
|
||||
|
||||
if (filesystemMountpoints) {
|
||||
this.mountpoints = filesystemMountpoints;
|
||||
}
|
||||
}),
|
||||
);
|
||||
|
||||
@ -122,6 +127,10 @@ class NonInjectedClusterPrometheusSetting extends React.Component<ClusterPrometh
|
||||
this.props.cluster.preferences.prometheus = this.parsePrometheusPath();
|
||||
};
|
||||
|
||||
onSaveMountpoints = () => {
|
||||
this.props.cluster.preferences.filesystemMountpoints = this.mountpoints;
|
||||
};
|
||||
|
||||
render() {
|
||||
return (
|
||||
<>
|
||||
@ -165,6 +174,22 @@ class NonInjectedClusterPrometheusSetting extends React.Component<ClusterPrometh
|
||||
</section>
|
||||
</>
|
||||
)}
|
||||
<>
|
||||
<hr />
|
||||
<section>
|
||||
<SubTitle title="Filesystem mountpoints" />
|
||||
<Input
|
||||
theme="round-black"
|
||||
value={this.mountpoints}
|
||||
onChange={(value) => this.mountpoints = value}
|
||||
onBlur={this.onSaveMountpoints}
|
||||
placeholder="/"
|
||||
/>
|
||||
<small className="hint">
|
||||
{`A regexp for the label with the filesystem mountpoints that will create a graph for disk usage. For the root disk only use "/" and for all disks use ".*".`}
|
||||
</small>
|
||||
</section>
|
||||
</>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@ -50,9 +50,9 @@ export const getHelmLikeQueryFor =
|
||||
case "podAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{node=~"${opts.nodes}", resource="pods"}) by (component)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint="/"} - node_filesystem_avail_bytes{node=~"${opts.nodes}", mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
}
|
||||
break;
|
||||
case "nodes":
|
||||
@ -72,9 +72,9 @@ export const getHelmLikeQueryFor =
|
||||
case "cpuAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{resource="cpu"}) by (node)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
}
|
||||
break;
|
||||
case "pods":
|
||||
|
||||
@ -50,9 +50,9 @@ export const getLensLikeQueryFor =
|
||||
case "podAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{node=~"${opts.nodes}", resource="pods"}) by (component)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{kubernetes_node=~"${opts.nodes}", mountpoint="/"}) by (kubernetes_node)`;
|
||||
return `sum(node_filesystem_size_bytes{kubernetes_node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (kubernetes_node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{kubernetes_node=~"${opts.nodes}", mountpoint="/"} - node_filesystem_avail_bytes{kubernetes_node=~"${opts.nodes}", mountpoint="/"}) by (kubernetes_node)`;
|
||||
return `sum(node_filesystem_size_bytes{kubernetes_node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{kubernetes_node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (kubernetes_node)`;
|
||||
}
|
||||
break;
|
||||
case "nodes":
|
||||
@ -72,9 +72,9 @@ export const getLensLikeQueryFor =
|
||||
case "cpuAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{resource="cpu"}) by (node)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"}) by (kubernetes_node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"}) by (kubernetes_node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) by (kubernetes_node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{mountpoint=~"${opts.mountpoints}"}) by (kubernetes_node)`;
|
||||
}
|
||||
break;
|
||||
case "pods":
|
||||
|
||||
@ -50,9 +50,9 @@ export const getOperatorLikeQueryFor =
|
||||
case "podAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{node=~"${opts.nodes}", resource="pods"})`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"})`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"})`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"} - node_filesystem_avail_bytes{mountpoint="/"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"})`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"} - node_filesystem_avail_bytes{mountpoint=~"${opts.mountpoints}"} * on (pod,namespace) group_left(node) kube_pod_info{node=~"${opts.nodes}"})`;
|
||||
}
|
||||
break;
|
||||
case "nodes":
|
||||
@ -72,9 +72,9 @@ export const getOperatorLikeQueryFor =
|
||||
case "cpuAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{resource="cpu"}) by (node)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} * on (pod,namespace) group_left(node) kube_pod_info) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} * on (pod,namespace) group_left(node) kube_pod_info) by (node)`;
|
||||
case "fsUsage":
|
||||
return `sum((node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) * on (pod, namespace) group_left(node) kube_pod_info) by (node)`;
|
||||
return `sum((node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{mountpoint=~"${opts.mountpoints}"}) * on (pod, namespace) group_left(node) kube_pod_info) by (node)`;
|
||||
}
|
||||
break;
|
||||
case "pods":
|
||||
|
||||
@ -50,9 +50,9 @@ export const getStacklightLikeQueryFor =
|
||||
case "podAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{node=~"${opts.nodes}", resource="pods"}) by (component)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint="/"} - node_filesystem_avail_bytes{node=~"${opts.nodes}", mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{node=~"${opts.nodes}", mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
}
|
||||
break;
|
||||
case "nodes":
|
||||
@ -72,9 +72,9 @@ export const getStacklightLikeQueryFor =
|
||||
case "cpuAllocatableCapacity":
|
||||
return `sum(kube_node_status_allocatable{resource="cpu"}) by (node)`;
|
||||
case "fsSize":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
case "fsUsage":
|
||||
return `sum(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) by (node)`;
|
||||
return `sum(node_filesystem_size_bytes{mountpoint=~"${opts.mountpoints}"} - node_filesystem_avail_bytes{mountpoint=~"${opts.mountpoints}"}) by (node)`;
|
||||
}
|
||||
break;
|
||||
case "pods":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user