fix: optimize host's monitor (#13)

Co-authored-by: yaojiping <yaojiping@infini.ltd>
This commit is contained in:
yaojp123 2024-12-07 17:11:30 +08:00 committed by GitHub
parent 852420281d
commit 9812249268
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 98 additions and 42 deletions

View File

@ -113,12 +113,6 @@ const Monitor = (props) => {
return monitor_configs?.node_stats?.enabled === false && monitor_configs?.index_stats?.enabled === false return monitor_configs?.node_stats?.enabled === false && monitor_configs?.index_stats?.enabled === false
}, [JSON.stringify(selectedCluster?.monitor_configs)]) }, [JSON.stringify(selectedCluster?.monitor_configs)])
console.log("spinning")
console.log(spinning)
console.log("state.refresh")
console.log(state.refresh)
return ( return (
<div> <div>
<BreadcrumbList data={breadcrumbList} /> <BreadcrumbList data={breadcrumbList} />

View File

@ -356,7 +356,6 @@ export function getCurrentMethodAndTokenPaths(
// mark the url as completed. // mark the url as completed.
ret.urlTokenPath.push(URL_PATH_END_MARKER); ret.urlTokenPath.push(URL_PATH_END_MARKER);
} }
debugger
if (t && t.type === "method") { if (t && t.type === "method") {
ret.method = t.value; ret.method = t.value;
@ -593,7 +592,6 @@ export default function({ coreEditor: editor }: { coreEditor: CoreEditor }) {
switch ((t || ({} as Token)).type) { switch ((t || ({} as Token)).type) {
case "method": case "method":
// we moved one back // we moved one back
debugger
return "path"; return "path";
default: default:
if (isUrlPathToken(t)) { if (isUrlPathToken(t)) {
@ -1110,7 +1108,6 @@ export default function({ coreEditor: editor }: { coreEditor: CoreEditor }) {
} else { } else {
components = getUnmatchedEndpointComponents(); components = getUnmatchedEndpointComponents();
} }
debugger
populateContext(ret.bodyTokenPath, context, editor, true, components); populateContext(ret.bodyTokenPath, context, editor, true, components);
return context; return context;

View File

@ -8,6 +8,24 @@ import QueueMetric from "../../components/queue_metric";
import { ESPrefix } from "@/services/common"; import { ESPrefix } from "@/services/common";
import { SearchEngines } from "@/lib/search_engines"; import { SearchEngines } from "@/lib/search_engines";
export const shouldHaveModelInferenceBreaker = (cluster) => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(cluster?.distribution)) return false;
const versions = cluster?.version?.split('.') || []
if (parseInt(versions[0]) > 8 || (parseInt(versions[0]) === 8 && parseInt(versions[1]) >= 6 )) {
return true
}
return false
}
export const isVersionGTE6 = (cluster) => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(cluster?.distribution)) return true;
const main = cluster?.version?.split('.')[0]
if (main && parseInt(main) >= 6) {
return true
}
return false
}
export default ({ export default ({
selectedCluster, selectedCluster,
clusterID, clusterID,
@ -29,14 +47,13 @@ export default ({
refresh refresh
} }
const isVersionGTE6 = useMemo(() => { const isVersionGTE8_6 = useMemo(() => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true; return shouldHaveModelInferenceBreaker(selectedCluster)
const main = selectedCluster?.version?.split('.')[0] }, [selectedCluster])
if (main && parseInt(main) >= 6) {
return true const versionGTE6 = useMemo(() => {
} return isVersionGTE6(selectedCluster)
return false }, [selectedCluster])
}, [selectedCluster?.version])
const [param, setParam] = useState({ const [param, setParam] = useState({
tab: "cluster", tab: "cluster",
@ -141,8 +158,8 @@ export default ({
"fielddata_breaker", "fielddata_breaker",
"request_breaker", "request_breaker",
"in_flight_requests_breaker", "in_flight_requests_breaker",
"model_inference_breaker" isVersionGTE8_6 ? "model_inference_breaker" : undefined
] ].filter((item) => !!item)
], ],
[ [
"io", "io",
@ -314,7 +331,7 @@ export default ({
param={param} param={param}
setParam={setParam} setParam={setParam}
metrics={[ metrics={[
isVersionGTE6 ? [ versionGTE6 ? [
"thread_pool_write", "thread_pool_write",
[ [
"write_active", "write_active",
@ -340,7 +357,7 @@ export default ({
"search_threads" "search_threads"
] ]
], ],
!isVersionGTE6 ? [ !versionGTE6 ? [
"thread_pool_bulk", "thread_pool_bulk",
[ [
"bulk_active", "bulk_active",

View File

@ -16,14 +16,22 @@ export default (props) => {
return null; return null;
} }
const hasAgent = !!props.data?._source?.agent_id; const isAgent = !!props.data?._source?.agent_id;
return ( return (
<> <>
<Metrics <Metrics
metricAction={`/host/${id}/metrics`} metricAction={`/host/${id}/metrics`}
metrics={[
'cpu_used_percent',
'memory_used_percent',
'disk_used_percent',
isAgent ? 'network_summary' : undefined,
isAgent ? 'disk_read_rate' : undefined,
isAgent ? 'disk_write_rate' : undefined
].filter((item) => !!item)}
renderExtraMetric={() => renderExtraMetric={() =>
!hasAgent && ( !isAgent && (
<div <div
style={{ style={{
height: 150, height: 150,
@ -56,7 +64,7 @@ export default (props) => {
) )
} }
extra={ extra={
hasAgent && ( isAgent && (
<> <>
<Agent id={id} /> <Agent id={id} />
<Process id={id} /> <Process id={id} />

View File

@ -3,24 +3,46 @@ import { Button } from 'antd';
import InstallAgent from '@/components/Overview/Monitor/InstallAgent'; import InstallAgent from '@/components/Overview/Monitor/InstallAgent';
import { formatMessage } from "umi/locale"; import { formatMessage } from "umi/locale";
const timezone = "local";
export default ({ export default ({
hostID, hostID,
timeRange, timeRange,
handleTimeChange, handleTimeChange,
info info,
bucketSize,
timezone,
timeout,
refresh,
}) => { }) => {
const isAgent = info?.agent_id
return ( return (
<ClusterMetric <ClusterMetric
timezone={timezone} timezone={timezone}
timeRange={timeRange} timeRange={timeRange}
timeout={timeout}
bucketSize={bucketSize}
refresh={refresh}
handleTimeChange={handleTimeChange} handleTimeChange={handleTimeChange}
fetchUrl={`/host/${hostID}/metrics`} fetchUrl={`/host/${hostID}/metrics`}
renderExtra={() => { renderExtra={() => {
if (info?.agent_id) return; if (isAgent) return;
return <InstallAgent height={226} desc={formatMessage({ id: "cluster.metrics.host.uninstall_agent" })}/> return <InstallAgent height={226} desc={formatMessage({ id: "cluster.metrics.host.uninstall_agent" })}/>
}} }}
metrics={[
'cpu_used_percent',
'memory_used_percent',
'disk_used_percent',
isAgent ? 'network_summary' : undefined,
isAgent ? 'disk_read_rate' : undefined,
isAgent ? 'disk_write_rate' : undefined,
isAgent ? 'system_load' : undefined,
isAgent ? 'cpu_iowait' : undefined,
isAgent ? 'swap_memory_used_percent' : undefined,
isAgent ? 'network_packets_summary' : undefined,
isAgent ? 'disk_partition_usage' : undefined,
isAgent ? 'network_interface_output_rate' : undefined,
].filter((item) => !!item)}
/> />
); );
} }

View File

@ -15,6 +15,7 @@ const panes = [
export default (props) => { export default (props) => {
return ( return (
<Monitor <Monitor
selectedCluster={{}}
formatState={(state) => { formatState={(state) => {
return { return {
...state, ...state,

View File

@ -9,19 +9,36 @@ export default ({
hostID, hostID,
timeRange, timeRange,
handleTimeChange, handleTimeChange,
info info,
bucketSize,
timezone,
timeout,
refresh,
}) => { }) => {
const isAgent = info?.agent_id
return ( return (
<ClusterMetric <ClusterMetric
timezone={timezone} timezone={timezone}
timeRange={timeRange} timeRange={timeRange}
timeout={timeout}
bucketSize={bucketSize}
refresh={refresh}
handleTimeChange={handleTimeChange} handleTimeChange={handleTimeChange}
overview={1} overview={1}
fetchUrl={`/host/${hostID}/metrics`} fetchUrl={`/host/${hostID}/metrics`}
renderExtra={() => { renderExtra={() => {
if (info?.agent_id) return; if (isAgent) return;
return <InstallAgent height={226} desc={formatMessage({ id: "cluster.metrics.host.uninstall_agent" })}/> return <InstallAgent height={226} desc={formatMessage({ id: "cluster.metrics.host.uninstall_agent" })}/>
}} }}
metrics={[
'cpu_used_percent',
'memory_used_percent',
'disk_used_percent',
isAgent ? 'network_summary' : undefined,
isAgent ? 'disk_read_rate' : undefined,
isAgent ? 'disk_write_rate' : undefined
].filter((item) => !!item)}
/> />
); );
} }

View File

@ -4,6 +4,7 @@ import NodeMetric from "../../components/node_metric";
import QueueMetric from "../../components/queue_metric"; import QueueMetric from "../../components/queue_metric";
import { formatMessage } from "umi/locale"; import { formatMessage } from "umi/locale";
import { SearchEngines } from "@/lib/search_engines"; import { SearchEngines } from "@/lib/search_engines";
import { isVersionGTE6, shouldHaveModelInferenceBreaker } from "../../Cluster/Monitor/advanced";
export default ({ export default ({
selectedCluster, selectedCluster,
@ -27,13 +28,12 @@ export default ({
refresh refresh
} }
const isVersionGTE6 = useMemo(() => { const isVersionGTE8_6 = useMemo(() => {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(selectedCluster?.distribution)) return true; return shouldHaveModelInferenceBreaker(selectedCluster)
const main = selectedCluster?.version?.split('.')[0] }, [selectedCluster])
if (main && parseInt(main) >= 6) {
return true const versionGTE6 = useMemo(() => {
} return isVersionGTE6(selectedCluster)
return false
}, [selectedCluster]) }, [selectedCluster])
const [param, setParam] = useState({ const [param, setParam] = useState({
@ -120,8 +120,8 @@ export default ({
"fielddata_breaker", "fielddata_breaker",
"request_breaker", "request_breaker",
"in_flight_requests_breaker", "in_flight_requests_breaker",
"model_inference_breaker" isVersionGTE8_6 ? "model_inference_breaker" : undefined
] ].filter((item) => !!item)
], ],
[ [
"io", "io",
@ -215,7 +215,7 @@ export default ({
param={param} param={param}
setParam={setParam} setParam={setParam}
metrics={[ metrics={[
isVersionGTE6 ? [ versionGTE6 ? [
"thread_pool_write", "thread_pool_write",
[ [
"write_active", "write_active",
@ -241,7 +241,7 @@ export default ({
"search_threads" "search_threads"
] ]
], ],
!isVersionGTE6 ? [ !versionGTE6 ? [
"thread_pool_bulk", "thread_pool_bulk",
[ [
"bulk_active", "bulk_active",
@ -286,7 +286,7 @@ export default ({
"force_merge_threads" "force_merge_threads"
] ]
] ]
].filter((item) => !!item)} ]}
/> />
</Tabs.TabPane> </Tabs.TabPane>
</Tabs> </Tabs>