Broker.tsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React from 'react';
  2. import PageHeading from 'components/common/PageHeading/PageHeading';
  3. import * as Metrics from 'components/common/Metrics';
  4. import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted';
  5. import useAppParams from 'lib/hooks/useAppParams';
  6. import { translateLogdir } from 'components/Brokers/utils/translateLogdir';
  7. import { SmartTable } from 'components/common/SmartTable/SmartTable';
  8. import { TableColumn } from 'components/common/SmartTable/TableColumn';
  9. import { useTableState } from 'lib/hooks/useTableState';
  10. import { ClusterBrokerParam } from 'lib/paths';
  11. import useClusterStats from 'lib/hooks/useClusterStats';
  12. import useBrokers from 'lib/hooks/useBrokers';
  13. import useBrokersLogDirs from 'lib/hooks/useBrokersLogDirs';
  14. export interface BrokerLogdirState {
  15. name: string;
  16. error: string;
  17. topics: number;
  18. partitions: number;
  19. }
  20. const Broker: React.FC = () => {
  21. const { clusterName, brokerId } = useAppParams<ClusterBrokerParam>();
  22. const { data: clusterStats } = useClusterStats(clusterName);
  23. const { data: brokers } = useBrokers(clusterName);
  24. const { data: logDirs } = useBrokersLogDirs(clusterName, Number(brokerId));
  25. const preparedRows = logDirs?.map(translateLogdir) || [];
  26. const tableState = useTableState<BrokerLogdirState, string>(preparedRows, {
  27. idSelector: ({ name }) => name,
  28. totalPages: 0,
  29. });
  30. if (!clusterStats) return null;
  31. const brokerItem = brokers?.find(({ id }) => id === Number(brokerId));
  32. const brokerDiskUsage = clusterStats.diskUsage?.find(
  33. (item) => item.brokerId === Number(brokerId)
  34. );
  35. return (
  36. <>
  37. <PageHeading text={`Broker ${brokerId}`} />
  38. <Metrics.Wrapper>
  39. <Metrics.Section>
  40. <Metrics.Indicator label="Segment Size">
  41. <BytesFormatted value={brokerDiskUsage?.segmentSize} />
  42. </Metrics.Indicator>
  43. <Metrics.Indicator label="Segment Count">
  44. {brokerDiskUsage?.segmentCount}
  45. </Metrics.Indicator>
  46. <Metrics.Indicator label="Port">{brokerItem?.port}</Metrics.Indicator>
  47. <Metrics.Indicator label="Host">{brokerItem?.host}</Metrics.Indicator>
  48. </Metrics.Section>
  49. </Metrics.Wrapper>
  50. <SmartTable
  51. tableState={tableState}
  52. placeholder="Log dir data not available"
  53. isFullwidth
  54. >
  55. <TableColumn title="Name" field="name" />
  56. <TableColumn title="Error" field="error" />
  57. <TableColumn title="Topics" field="topics" />
  58. <TableColumn title="Partitions" field="partitions" />
  59. </SmartTable>
  60. </>
  61. );
  62. };
  63. export default Broker;