chore: check if the cluster version supports metric `transport_outbound_comnections` in monitor (#60)

* chore: check if the cluster version supports metric `transport_outbound_comnections`

* chore: update release notes

---------

Co-authored-by: yaojiping <yaojiping@infini.ltd>
This commit is contained in:
yaojp123 2024-12-26 19:37:58 +08:00 committed by GitHub
parent f11a565948
commit 59e88f7b03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 42 additions and 43 deletions

View File

@ -23,6 +23,7 @@ Information about release notes of INFINI Console is provided here.
- Adapter metrics query with cluster id and cluster uuid
- Optimize metric query bucket size (#59)
- Add suggestion to chart in monitor if is no data because the time interval is less than the collection interval.
- check if the cluster version supports metric transport_outbound_comnections in monitor.
## 1.27.0 (2024-12-09)

View File

@ -84,7 +84,7 @@ const Monitor = (props) => {
})
);
const [refresh, setRefresh] = useState({ isRefreshPaused: allTimeSettingsCache.isRefreshPaused || false, refreshInterval: allTimeSettingsCache.refreshInterval || 30000 });
const [refresh, setRefresh] = useState({ isRefreshPaused: typeof allTimeSettingsCache.isRefreshPaused !== 'undefined' ? allTimeSettingsCache.isRefreshPaused : true, refreshInterval: allTimeSettingsCache.refreshInterval || 30000 });
const [timeZone, setTimeZone] = useState(() => allTimeSettingsCache.timeZone || getTimezone());
useEffect(() => {

View File

@ -366,7 +366,7 @@ export const AgentRowDetail = ({ agentID, t }) => {
}}
tabBarExtraContent={
<div style={{ display: "flex", gap: 10 }}>
{state.processesTab == "unknown" ? (
{hasAuthority("agent.instance:all") && state.processesTab === "unknown" ? (
<Button
type="primary"
onClick={() => {

View File

@ -8,36 +8,42 @@ import QueueMetric from "../../components/queue_metric";
import { ESPrefix } from "@/services/common";
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 )) {
export const checkMetric = (key, cluster) => {
if (key === 'thread_pool_write') {
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
} else if (key === 'thread_pool_bulk') {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(cluster?.distribution)) return false;
const main = cluster?.version?.split('.')[0]
if (main && parseInt(main) >= 6) {
return false
}
return true
} else if (key === 'model_inference_breaker') {
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
} else if (key === 'transport_outbound_connections') {
if ([SearchEngines.Easysearch, SearchEngines.Opensearch].includes(cluster?.distribution)) return true;
const versions = cluster?.version?.split('.') || []
if (parseInt(versions[0]) > 7 || (parseInt(versions[0]) === 7 && parseInt(versions[1]) >= 1 )) {
return true
}
return false
}
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 (props) => {
const { selectedCluster, clusterID } = props
const isVersionGTE8_6 = useMemo(() => {
return shouldHaveModelInferenceBreaker(selectedCluster)
}, [selectedCluster])
const versionGTE6 = useMemo(() => {
return isVersionGTE6(selectedCluster)
}, [selectedCluster])
const [param, setParam] = useState({
tab: "cluster",
});
@ -141,7 +147,7 @@ export default (props) => {
"fielddata_breaker",
"request_breaker",
"in_flight_requests_breaker",
isVersionGTE8_6 ? "model_inference_breaker" : undefined
checkMetric("model_inference_breaker", selectedCluster) ? "model_inference_breaker" : undefined
].filter((item) => !!item)
],
[
@ -159,8 +165,8 @@ export default (props) => {
"transport_rx_rate",
"transport_tx_bytes",
"transport_tx_rate",
"transport_outbound_connections"
]
checkMetric("transport_outbound_connections", selectedCluster) ? "transport_outbound_connections" : undefined
].filter((item) => !!item)
],
[
"storage",
@ -314,7 +320,7 @@ export default (props) => {
param={param}
setParam={setParam}
metrics={[
versionGTE6 ? [
checkMetric("thread_pool_write", selectedCluster) ? [
"thread_pool_write",
[
"write_active",
@ -340,7 +346,7 @@ export default (props) => {
"search_threads"
]
],
!versionGTE6 ? [
checkMetric("thread_pool_bulk", selectedCluster) ? [
"thread_pool_bulk",
[
"bulk_active",

View File

@ -4,7 +4,7 @@ import NodeMetric from "../../components/node_metric";
import QueueMetric from "../../components/queue_metric";
import { formatMessage } from "umi/locale";
import { SearchEngines } from "@/lib/search_engines";
import { isVersionGTE6, shouldHaveModelInferenceBreaker } from "../../Cluster/Monitor/advanced";
import { checkMetric } from "../../Cluster/Monitor/advanced";
export default (props) => {
@ -14,14 +14,6 @@ export default (props) => {
nodeID,
} = props
const isVersionGTE8_6 = useMemo(() => {
return shouldHaveModelInferenceBreaker(selectedCluster)
}, [selectedCluster])
const versionGTE6 = useMemo(() => {
return isVersionGTE6(selectedCluster)
}, [selectedCluster])
const [param, setParam] = useState({
show_top: false,
node_name: nodeID,
@ -106,7 +98,7 @@ export default (props) => {
"fielddata_breaker",
"request_breaker",
"in_flight_requests_breaker",
isVersionGTE8_6 ? "model_inference_breaker" : undefined
checkMetric("model_inference_breaker", selectedCluster) ? "model_inference_breaker" : undefined
].filter((item) => !!item)
],
[
@ -124,8 +116,8 @@ export default (props) => {
"transport_rx_rate",
"transport_tx_bytes",
"transport_tx_rate",
"transport_outbound_connections"
]
checkMetric("transport_outbound_connections", selectedCluster) ? "transport_outbound_connections" : undefined
].filter((item) => !!item)
],
[
"storage",
@ -201,7 +193,7 @@ export default (props) => {
param={param}
setParam={setParam}
metrics={[
versionGTE6 ? [
checkMetric("thread_pool_write", selectedCluster) ? [
"thread_pool_write",
[
"write_active",
@ -227,7 +219,7 @@ export default (props) => {
"search_threads"
]
],
!versionGTE6 ? [
checkMetric("thread_pool_bulk", selectedCluster) ? [
"thread_pool_bulk",
[
"bulk_active",