mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-10-13 06:11:28 +08:00

* feat: added new tab for infra metrics in logs detailed page * feat: added yaxis unit for the charts * chore: cleanup query_range params * fix: clusterName, podName variables not working * feat: added skeleton for each charts in infra metrics tab * change card height to 300px * fix: updated the test cases * feat: added new sub-tabs node and pod for infra metrics tab * feat: added new components for node and pod metrics * feat: added card titles for host metrics and handled empty state * fix: updated the constant for host name * feat: added vertical dotted line to all panels and updated y axis units for all panels * feat: removed other panel types other than graph from host metrics query payload * fix: updated the query payload for node metrics * feat: moved the label of vertical dotted line to top * feat: added console statement to check query payload * fix: added pod name instead of node name in pod query payload * fix: added key as pod name instead of node name in file system usage * fix: updated query payload for file system usage in pod metrics and removed label from dotted line * fix: updated the y axis units for network io * fix: custom date time issue while plotting the graph * feat: compare end time and current time update the end time accordingly * feat: added the start and end time in query payloads * refactor: removed the comments and unused variables * chore: added a todo to make common component for sub-tabs * fix: addressed review comments --------- Co-authored-by: Ankit Nayan <ankit@signoz.io>
95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
import './InfraMetrics.styles.scss';
|
|
|
|
import { Empty, Radio } from 'antd';
|
|
import { RadioChangeEvent } from 'antd/lib';
|
|
import { History, Table } from 'lucide-react';
|
|
import { useState } from 'react';
|
|
|
|
import { VIEW_TYPES } from './constants';
|
|
import NodeMetrics from './NodeMetrics';
|
|
import PodMetrics from './PodMetrics';
|
|
|
|
interface MetricsDataProps {
|
|
podName: string;
|
|
nodeName: string;
|
|
hostName: string;
|
|
clusterName: string;
|
|
logLineTimestamp: string;
|
|
}
|
|
|
|
function InfraMetrics({
|
|
podName,
|
|
nodeName,
|
|
hostName,
|
|
clusterName,
|
|
logLineTimestamp,
|
|
}: MetricsDataProps): JSX.Element {
|
|
const [selectedView, setSelectedView] = useState<string>(() =>
|
|
podName ? VIEW_TYPES.POD : VIEW_TYPES.NODE,
|
|
);
|
|
|
|
const handleModeChange = (e: RadioChangeEvent): void => {
|
|
setSelectedView(e.target.value);
|
|
};
|
|
|
|
if (!podName && !nodeName && !hostName) {
|
|
return (
|
|
<div className="empty-container">
|
|
<Empty
|
|
image={Empty.PRESENTED_IMAGE_SIMPLE}
|
|
description="No data available. Please select a valid log line containing a pod, node, or host attributes to view metrics."
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div className="infra-metrics-container">
|
|
<Radio.Group
|
|
className="views-tabs"
|
|
onChange={handleModeChange}
|
|
value={selectedView}
|
|
>
|
|
<Radio.Button
|
|
className={selectedView === VIEW_TYPES.NODE ? 'selected_view tab' : 'tab'}
|
|
value={VIEW_TYPES.NODE}
|
|
>
|
|
<div className="view-title">
|
|
<Table size={14} />
|
|
Node
|
|
</div>
|
|
</Radio.Button>
|
|
{podName && (
|
|
<Radio.Button
|
|
className={selectedView === VIEW_TYPES.POD ? 'selected_view tab' : 'tab'}
|
|
value={VIEW_TYPES.POD}
|
|
>
|
|
<div className="view-title">
|
|
<History size={14} />
|
|
Pod
|
|
</div>
|
|
</Radio.Button>
|
|
)}
|
|
</Radio.Group>
|
|
{/* TODO(Rahul): Make a common config driven component for this and other infra metrics components */}
|
|
{selectedView === VIEW_TYPES.NODE && (
|
|
<NodeMetrics
|
|
nodeName={nodeName}
|
|
clusterName={clusterName}
|
|
hostName={hostName}
|
|
logLineTimestamp={logLineTimestamp}
|
|
/>
|
|
)}
|
|
{selectedView === VIEW_TYPES.POD && podName && (
|
|
<PodMetrics
|
|
podName={podName}
|
|
clusterName={clusterName}
|
|
logLineTimestamp={logLineTimestamp}
|
|
/>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default InfraMetrics;
|