1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Add more file system metrics to the pod and container graphs (#3961)

This commit is contained in:
Marc Bachmann 2021-11-26 16:03:12 +01:00 committed by GitHub
parent 2148dbda7c
commit b3723de3ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 63 additions and 1 deletions

View File

@ -110,6 +110,8 @@ export function getMetricsForDaemonSets(daemonsets: DaemonSet[], namespace: stri
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -83,6 +83,8 @@ export function getMetricsForDeployments(deployments: Deployment[], namespace: s
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -133,6 +133,8 @@ export function getMetricsForJobs(jobs: Job[], namespace: string, selector = "")
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -65,6 +65,8 @@ export interface IResourceMetrics<T extends IMetrics> {
cpuUsage: T; cpuUsage: T;
memoryUsage: T; memoryUsage: T;
fsUsage: T; fsUsage: T;
fsWrites: T;
fsReads: T;
networkReceive: T; networkReceive: T;
networkTransmit: T; networkTransmit: T;
} }

View File

@ -63,6 +63,8 @@ export function getMetricsForNamespace(namespace: string, selector = ""): Promis
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -46,6 +46,8 @@ export function getMetricsForPods(pods: Pod[], namespace: string, selector = "po
memoryRequests: opts, memoryRequests: opts,
memoryLimits: opts, memoryLimits: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {
@ -57,7 +59,9 @@ export interface IPodMetrics<T = IMetrics> {
[metric: string]: T; [metric: string]: T;
cpuUsage: T; cpuUsage: T;
memoryUsage: T; memoryUsage: T;
fsUsage: T; fsUsage: T,
fsWrites: T,
fsReads: T,
networkReceive: T; networkReceive: T;
networkTransmit: T; networkTransmit: T;
cpuRequests?: T; cpuRequests?: T;

View File

@ -59,6 +59,8 @@ export function getMetricsForReplicaSets(replicasets: ReplicaSet[], namespace: s
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -62,6 +62,8 @@ export function getMetricsForStatefulSets(statefulSets: StatefulSet[], namespace
cpuUsage: opts, cpuUsage: opts,
memoryUsage: opts, memoryUsage: opts,
fsUsage: opts, fsUsage: opts,
fsWrites: opts,
fsReads: opts,
networkReceive: opts, networkReceive: opts,
networkTransmit: opts, networkTransmit: opts,
}, { }, {

View File

@ -109,6 +109,10 @@ export class PrometheusLens extends PrometheusProvider {
return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}",resource="memory",namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}",resource="memory",namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsUsage": case "fsUsage":
return `sum(container_fs_usage_bytes{container!="POD",container!="",pod=~"${opts.pods}",namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(container_fs_usage_bytes{container!="POD",container!="",pod=~"${opts.pods}",namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsWrites":
return `sum(rate(container_fs_writes_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "fsReads":
return `sum(rate(container_fs_reads_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkReceive": case "networkReceive":
return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}",namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`; return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}",namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkTransmit": case "networkTransmit":

View File

@ -109,6 +109,10 @@ export class PrometheusOperator extends PrometheusProvider {
return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}", resource="memory", namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}", resource="memory", namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsUsage": case "fsUsage":
return `sum(container_fs_usage_bytes{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(container_fs_usage_bytes{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsWrites":
return `sum(rate(container_fs_writes_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "fsReads":
return `sum(rate(container_fs_reads_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkReceive": case "networkReceive":
return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`; return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkTransmit": case "networkTransmit":

View File

@ -109,6 +109,10 @@ export class PrometheusStacklight extends PrometheusProvider {
return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}",resource="memory",namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(kube_pod_container_resource_limits{pod=~"${opts.pods}",resource="memory",namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsUsage": case "fsUsage":
return `sum(container_fs_usage_bytes{container!="POD",container!="",pod=~"${opts.pods}",namespace="${opts.namespace}"}) by (${opts.selector})`; return `sum(container_fs_usage_bytes{container!="POD",container!="",pod=~"${opts.pods}",namespace="${opts.namespace}"}) by (${opts.selector})`;
case "fsWrites":
return `sum(rate(container_fs_writes_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "fsReads":
return `sum(rate(container_fs_reads_bytes_total{container!="", pod=~"${opts.pods}", namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkReceive": case "networkReceive":
return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}",namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`; return `sum(rate(container_network_receive_bytes_total{pod=~"${opts.pods}",namespace="${opts.namespace}"}[${this.rateAccuracy}])) by (${opts.selector})`;
case "networkTransmit": case "networkTransmit":

View File

@ -46,6 +46,8 @@ export const ContainerCharts = observer(() => {
memoryRequests, memoryRequests,
memoryLimits, memoryLimits,
fsUsage, fsUsage,
fsWrites,
fsReads
} = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values); } = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values);
const datasets = [ const datasets = [
@ -106,6 +108,20 @@ export const ContainerCharts = observer(() => {
borderColor: "#ffc63d", borderColor: "#ffc63d",
data: fsUsage.map(([x, y]) => ({ x, y })), data: fsUsage.map(([x, y]) => ({ x, y })),
}, },
{
id: "fsWrites",
label: `Writes`,
tooltip: `Bytes written on this filesystem`,
borderColor: "#ff963d",
data: fsWrites.map(([x, y]) => ({ x, y })),
},
{
id: "fsReads",
label: `Reads`,
tooltip: `Bytes read on this filesystem`,
borderColor: "#fff73d",
data: fsReads.map(([x, y]) => ({ x, y })),
},
], ],
]; ];

View File

@ -51,6 +51,8 @@ export const PodCharts = observer(() => {
cpuUsage, cpuUsage,
memoryUsage, memoryUsage,
fsUsage, fsUsage,
fsWrites,
fsReads,
networkReceive, networkReceive,
networkTransmit, networkTransmit,
} = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values); } = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values);
@ -102,6 +104,20 @@ export const PodCharts = observer(() => {
borderColor: "#ffc63d", borderColor: "#ffc63d",
data: fsUsage.map(([x, y]) => ({ x, y })), data: fsUsage.map(([x, y]) => ({ x, y })),
}, },
{
id: `${id}-fsWrites`,
label: `Writes`,
tooltip: `Bytes written on this filesystem`,
borderColor: "#ff963d",
data: fsWrites.map(([x, y]) => ({ x, y })),
},
{
id: `${id}-fsReads`,
label: `Reads`,
tooltip: `Bytes read on this filesystem`,
borderColor: "#fff73d",
data: fsReads.map(([x, y]) => ({ x, y })),
},
], ],
]; ];