diff --git a/web/src/components/CollectStatus/index.js b/web/src/components/CollectStatus/index.js
new file mode 100644
index 00000000..0f43c040
--- /dev/null
+++ b/web/src/components/CollectStatus/index.js
@@ -0,0 +1,114 @@
+import request from "@/utils/request"
+import { firstUpperCase, formatToUniversalTime } from "@/utils/utils";
+import { Descriptions, Icon, Tooltip } from "antd";
+import moment from "moment";
+import { useEffect, useMemo, useRef, useState } from "react";
+import styles from "./index.less";
+import { formatMessage } from "umi/locale";
+
+const STATUS_ICONS = {
+ 'ok': (
+
-
-
- {
- handleTimeChange({ start, end })
- }}
- {...refresh}
- onRefreshChange={setRefresh}
- onRefresh={handleTimeChange}
- showTimeSetting={true}
- showTimeInterval={true}
- timeInterval={state.timeInterval}
- showTimeout={true}
- timeout={state.timeout}
- onTimeSettingChange={(timeSetting) => {
- localStorage.setItem(TIMEOUT_CACHE_KEY, timeSetting.timeout)
- setState({
- ...state,
- timeInterval: timeSetting.timeInterval,
- timeout: timeSetting.timeout
- });
- }}
- timeZone={timeZone}
- onTimeZoneChange={setTimeZone}
- recentlyUsedRangesKey={'monitor'}
- />
-
+
+ {
+ handleTimeChange({ start, end })
+ }}
+ {...refresh}
+ onRefreshChange={setRefresh}
+ onRefresh={handleTimeChange}
+ showTimeSetting={true}
+ showTimeInterval={true}
+ timeInterval={state.timeInterval}
+ showTimeout={true}
+ timeout={state.timeout}
+ onTimeSettingChange={(timeSetting) => {
+ localStorage.setItem(TIMEOUT_CACHE_KEY, timeSetting.timeout)
+ setState({
+ ...state,
+ timeInterval: timeSetting.timeInterval,
+ timeout: timeSetting.timeout
+ });
+ }}
+ timeZone={timeZone}
+ onTimeZoneChange={setTimeZone}
+ recentlyUsedRangesKey={'monitor'}
+ />
+
diff --git a/web/src/locales/en-US/cluster.js b/web/src/locales/en-US/cluster.js
index f62ac297..280f8ae7 100644
--- a/web/src/locales/en-US/cluster.js
+++ b/web/src/locales/en-US/cluster.js
@@ -39,6 +39,7 @@ export default {
"cluster.manage.monitor_configs.cluster_stats": "Cluster stats",
"cluster.manage.monitor_configs.node_stats": "Node stats",
"cluster.manage.monitor_configs.index_stats": "Index stats",
+ "cluster.manage.monitor_configs.shard_stats": "Shard stats",
"cluster.manage.metadata_configs.health_check": "Health check",
"cluster.manage.metadata_configs.node_availability_check":
"Node availability check",
@@ -349,5 +350,8 @@ export default {
"cluster.providers.ecloud": "Ecloud",
"cluster.metrics.request.copy": "Copy request",
- "cluster.metrics.request.copy.success": "Copy request successfully"
+ "cluster.metrics.request.copy.success": "Copy request successfully",
+
+ "cluster.collect.last_active_at": "Last Active At",
+
};
diff --git a/web/src/locales/zh-CN/cluster.js b/web/src/locales/zh-CN/cluster.js
index a3b564dd..37f67338 100644
--- a/web/src/locales/zh-CN/cluster.js
+++ b/web/src/locales/zh-CN/cluster.js
@@ -39,6 +39,7 @@ export default {
"cluster.manage.monitor_configs.cluster_stats": "集群指标",
"cluster.manage.monitor_configs.node_stats": "节点指标",
"cluster.manage.monitor_configs.index_stats": "索引指标",
+ "cluster.manage.monitor_configs.shard_stats": "分片指标",
"cluster.manage.metadata_configs.health_check": "健康检查",
"cluster.manage.metadata_configs.node_availability_check": "节点可用性检查",
"cluster.manage.metadata_configs.metadata_refresh": "元数据同步",
@@ -334,5 +335,8 @@ export default {
"cluster.providers.ecloud": "移动云",
"cluster.metrics.request.copy": "复制请求",
- "cluster.metrics.request.copy.success": "复制请求成功"
+ "cluster.metrics.request.copy.success": "复制请求成功",
+
+ "cluster.collect.last_active_at": "最后活动时间",
+
};
diff --git a/web/src/pages/Platform/Overview/Indices/Monitor/shards.jsx b/web/src/pages/Platform/Overview/Indices/Monitor/shards.jsx
index 55f65e00..d6801cd8 100644
--- a/web/src/pages/Platform/Overview/Indices/Monitor/shards.jsx
+++ b/web/src/pages/Platform/Overview/Indices/Monitor/shards.jsx
@@ -10,6 +10,7 @@ import { formatter } from "@/utils/format";
import { filterSearchValue, sorter, formatUtcTimeToLocal } from "@/utils/utils";
import { formatTimeRange } from "@/lib/elasticsearch/util";
import IconText from "@/components/infini/IconText";
+import AutoTextEllipsis from "@/components/AutoTextEllipsis";
const { Search } = Input;
diff --git a/web/src/pages/Platform/Overview/Node/Monitor/shards.jsx b/web/src/pages/Platform/Overview/Node/Monitor/shards.jsx
index 98e25ca1..f2a0f704 100644
--- a/web/src/pages/Platform/Overview/Node/Monitor/shards.jsx
+++ b/web/src/pages/Platform/Overview/Node/Monitor/shards.jsx
@@ -10,6 +10,7 @@ import { formatter } from "@/utils/format";
import { filterSearchValue, sorter, formatUtcTimeToLocal } from "@/utils/utils";
import { formatTimeRange } from "@/lib/elasticsearch/util";
import IconText from "@/components/infini/IconText";
+import AutoTextEllipsis from "@/components/AutoTextEllipsis";
const { Search } = Input;
diff --git a/web/src/utils/utils.js b/web/src/utils/utils.js
index 5770fa30..ed0ec208 100644
--- a/web/src/utils/utils.js
+++ b/web/src/utils/utils.js
@@ -422,3 +422,8 @@ export const firstUpperCase = (val) => {
}
return val;
};
+
+export const formatToUniversalTime = (time, format, timezone) => {
+ if (!time) return '-';
+ return moment(time).tz(timezone || getTimezone()).format(format || "YYYY-MM-DD HH:mm:ss (G[M]TZ)")
+}