This is an automated email from the ASF dual-hosted git repository. andytaylor pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/artemis-console.git
commit f20d624a09f5f4ae7abff739bf490444965a71a5 Author: gchuf <[email protected]> AuthorDate: Fri Apr 10 13:59:58 2026 +0200 ARTEMIS-5998 - Add disk usage donut chart --- .../artemis-console-plugin/src/artemis-service.ts | 14 ++++++- .../artemis-console-plugin/src/status/Status.tsx | 47 +++++++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts index cc2ca74..3dbfdd0 100644 --- a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts +++ b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts @@ -48,6 +48,8 @@ export type BrokerInfo = { globalMaxSizeMB: number addressMemoryUsage: number addressMemoryUsed: number + diskStoreUsagePercentage: number + maxDiskUsage: number haPolicy: string | InaccessibleValue networkTopology: BrokerNetworkTopology } @@ -174,7 +176,9 @@ const jolokiaAttributes = [ "Uptime", "GlobalMaxSize", "AddressMemoryUsage", - "HAPolicy" + "HAPolicy", + "DiskStoreUsage", + "MaxDiskUsage" ]; /** @@ -256,6 +260,8 @@ class ArtemisService { const addressMemoryUsage = response.AddressMemoryUsage as number; const uptime = response.Uptime as string | InaccessibleValue; const haPolicy = response.HAPolicy as string | InaccessibleValue; + const diskStoreUsage = response.DiskStoreUsage as number; + const maxDiskUsage = response.MaxDiskUsage as number; const globalMaxSizeMB = globalMaxSize / 1048576; let used = 0; let addressMemoryUsageMB = 0; @@ -263,6 +269,10 @@ class ArtemisService { addressMemoryUsageMB = addressMemoryUsage / 1048576; used = addressMemoryUsageMB / globalMaxSizeMB * 100 } + let diskStoreUsagePercentage = 0; + if (diskStoreUsage > 0) { + diskStoreUsagePercentage = diskStoreUsage * 100; + } const topology = await jolokiaService.execute(brokerObjectName, LIST_NETWORK_TOPOLOGY_SIG).catch(e => { eventService.notify({type: 'warning', message: jolokiaService.errorMessage(e) }) return "{}" @@ -277,6 +287,8 @@ class ArtemisService { globalMaxSizeMB: globalMaxSizeMB, addressMemoryUsage: addressMemoryUsageMB, addressMemoryUsed: used, + diskStoreUsagePercentage: diskStoreUsagePercentage, + maxDiskUsage: maxDiskUsage, haPolicy: haPolicy, networkTopology: new BrokerNetworkTopology(JSON.parse(topology)) }; diff --git a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/status/Status.tsx b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/status/Status.tsx index 7d77844..27ddc00 100644 --- a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/status/Status.tsx +++ b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/status/Status.tsx @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ChartDonutUtilization } from "@patternfly/react-charts" +import { ChartDonutUtilization,ChartDonutThreshold } from "@patternfly/react-charts" import { Alert, Card, @@ -135,6 +135,10 @@ export const Status: React.FunctionComponent = () => { setShowOperationsDialog(true); } + const diskSpaceUsed = brokerInfo?.diskStoreUsagePercentage ?? 0; + const diskSpaceMax = brokerInfo?.maxDiskUsage ?? 0; + const diskSpaceRemaining = diskSpaceMax - diskSpaceUsed; + const statusActions = ( <Dropdown onSelect={onBrokerInfoSelect} @@ -231,6 +235,47 @@ export const Status: React.FunctionComponent = () => { </CardBody> </Card> </GridItem> + <GridItem span={3} rowSpan={3}> + <Card isFullHeight={true}> + <CardHeader> + <CardTitle>Disk Used</CardTitle> + </CardHeader> + <CardBody> + <Divider /> + <ChartDonutThreshold + ariaDesc="Disk Used" + ariaTitle="Disk Used" + constrainToVisibleArea + padding={{ + bottom: 20, + left: 20, + right: 20, + top: 20 + }} + data={[ + { x: 'Usable at maxDiskUsage%', y: diskSpaceMax }, + { x: 'Max at 100%', y: 100 } + ]} + labels={[ + `Max disk usage: ${diskSpaceMax}%`, + `Reserved disk space: ${100 - diskSpaceMax}%` + ]} + name="chart101" + width={350}> + <ChartDonutUtilization + data={{ x: 'Used:', y: diskSpaceUsed }} + labels={[ + diskSpaceRemaining < 0 + ? "No space remaining, broker is blocking producers!" + : `Usable disk space remaining: ${diskSpaceRemaining.toFixed(2)}/${diskSpaceMax}%` + ]} + thresholds={[{ value: (diskSpaceMax - 10) }, { value: diskSpaceMax }]} // warning on 10% disk remaining, critical on 0% + subTitle="Disk Used" + title={diskSpaceUsed.toFixed(2) + "%"}/> + </ChartDonutThreshold> + </CardBody> + </Card> + </GridItem> </Grid> <ExpandableSection toggleTextExpanded="Acceptors" toggleTextCollapsed="Acceptors"> <Grid hasGutter span={4}> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
