diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md
index a4683cf4..009a31cf 100644
--- a/docs/content.en/docs/release-notes/_index.md
+++ b/docs/content.en/docs/release-notes/_index.md
@@ -21,6 +21,7 @@ Information about release notes of INFINI Console is provided here.
### Improvements
- Update agent config with cluster name (#148)
+- Support viewing logs for cluster, node, index health change events (#150)
## 1.28.2 (2025-02-15)
diff --git a/docs/content.zh/docs/release-notes/_index.md b/docs/content.zh/docs/release-notes/_index.md
index 36481fc2..6989451f 100644
--- a/docs/content.zh/docs/release-notes/_index.md
+++ b/docs/content.zh/docs/release-notes/_index.md
@@ -21,6 +21,8 @@ title: "版本历史"
### Improvements
- 优化下发给 Agent 的配置,增加集群名称 (#148)
+- 集群,节点,索引健康状态变更支持查看日志 (#150)
+
## 1.28.2 (2025-02-15)
diff --git a/web/src/locales/en-US.js b/web/src/locales/en-US.js
index a50e799d..4863bb07 100644
--- a/web/src/locales/en-US.js
+++ b/web/src/locales/en-US.js
@@ -121,6 +121,7 @@ export default {
"form.button.restart": "Restart",
"form.button.verify": "Verify",
"form.button.clean": "Clean",
+ "form.button.view_logs": "View Logs",
"form.button.clean.confim.desc": "Are you sure to clean data that is {status}?",
"form.button.clean.unavailable.nodes": "Clean unavailable nodes",
"form.button.clean.unavailable.nodes.desc": "Are you sure to clean nodes that are unavailable within seven days?",
diff --git a/web/src/locales/zh-CN.js b/web/src/locales/zh-CN.js
index aa22f362..80441dfb 100644
--- a/web/src/locales/zh-CN.js
+++ b/web/src/locales/zh-CN.js
@@ -126,6 +126,7 @@ export default {
"form.button.restart": "重启",
"form.button.verify": "校验",
"form.button.clean": "清除",
+ "form.button.view_logs": "View Logs",
"form.button.clean.confim.desc": "确定删除状态为 {status} 的数据吗?",
"form.button.clean.unavailable.nodes": "清除不可用节点",
"form.button.clean.unavailable.nodes.desc": "确定清除7天内不可用的节点吗?",
diff --git a/web/src/pages/Overview/components/Activities/GenerateDesc.jsx b/web/src/pages/Overview/components/Activities/GenerateDesc.jsx
index bc01e034..b601c793 100644
--- a/web/src/pages/Overview/components/Activities/GenerateDesc.jsx
+++ b/web/src/pages/Overview/components/Activities/GenerateDesc.jsx
@@ -24,6 +24,10 @@ export default (props) => {
if (indexName && indexName.includes("%")) {
indexNameEncode = encodeURIComponent(indexName);
}
+ const logStartTime = moment(timestamp).add(-3, "m");
+ const logEndTime = moment(timestamp).add(3, "m");
+ const logTimeRangeStr = encodeURIComponent(JSON.stringify({min:logStartTime.toISOString(),max:logEndTime.toISOString()}))
+
switch (name) {
case "index_state_change":
@@ -90,10 +94,20 @@ export default (props) => {
{" "}
{opers[type]} from {hit._source.metadata.labels.from} to{" "}
{hit._source.metadata.labels.to}
+
+
+ {formatMessage({ id: "form.button.view_logs" })}
+
+
>
);
case "cluster_health_change":
- return
+ return
case "node_health_change":
return (
<>
@@ -110,6 +124,15 @@ export default (props) => {
{hit._source.metadata.labels.cluster_name}
{" "}
{opers[type]} to {hit._source.metadata.labels.to}
+
+
+ {formatMessage({ id: "form.button.view_logs" })}
+
>
);
case "node_state_change":
@@ -216,12 +239,11 @@ export default (props) => {
};
const ClusterHealthChange = (props) => {
- const { hit, type, timeRangeStr } = props;
+ const { hit, type, timeRangeStr, logTimeRangeStr } = props;
const status = hit._source.metadata.labels.to
const hasAllocationExplain = status === 'red'
const [active, setActive] = useState(false)
-
const content = (
{
{formatMessage({ id: "form.button.detail" })}
) : null}
+
+
+ {formatMessage({ id: "form.button.view_logs" })}
+
)