From f2cf7b0891c6d09f01fab424e789e0efc829e608 Mon Sep 17 00:00:00 2001 From: wanghaohao Date: Mon, 28 Oct 2024 17:58:01 +0800 Subject: [PATCH] add rule list config --- web/src/api/prometheus.ts | 8 + web/src/types/host.ts | 12 + web/src/types/rule.ts | 17 ++ web/src/views/ruleForm/addRule.vue | 362 +++++++++++++++++++++++++++ web/src/views/ruleForm/customRule.ts | 30 +++ web/src/views/ruleList.vue | 9 + 6 files changed, 438 insertions(+) create mode 100644 web/src/types/host.ts create mode 100644 web/src/types/rule.ts create mode 100644 web/src/views/ruleForm/addRule.vue create mode 100644 web/src/views/ruleForm/customRule.ts diff --git a/web/src/api/prometheus.ts b/web/src/api/prometheus.ts index 257a33f..1a05bee 100644 --- a/web/src/api/prometheus.ts +++ b/web/src/api/prometheus.ts @@ -41,6 +41,14 @@ export function getRuleList(data: Object) { params: data, }); } +// 添加告警告警规则 +export function addConfigRule(data: object) { + return request({ + url: "/plugin/prometheus/ruleAdd", + method: "post", + data, + }); +} // 获取所有监控指标 export function getMetrics() { return request({ diff --git a/web/src/types/host.ts b/web/src/types/host.ts new file mode 100644 index 0000000..f27b4a1 --- /dev/null +++ b/web/src/types/host.ts @@ -0,0 +1,12 @@ +export interface Host { + hostId: number, + targetIp: string, + deptName: string, + agentStatus: string, + operatingSystem: string, + monitorAgentStatus: string, + version: string, + monitorVersion: string, + architecture: string, + registTime: string +} \ No newline at end of file diff --git a/web/src/types/rule.ts b/web/src/types/rule.ts new file mode 100644 index 0000000..cce61ff --- /dev/null +++ b/web/src/types/rule.ts @@ -0,0 +1,17 @@ +export interface ConfigRule { + id?: number; + metrics: string; + ips?: string[]; + batches: any[]; + batches_str: string; + alertTargets: any[]; + alertHostIds?: string; + alertLabel: string; + alertName: string; + duration: number | string; + severity: string; + input_severity?: string; + threshold: number | string; + desc: string; + [key: string]: unknown; +} diff --git a/web/src/views/ruleForm/addRule.vue b/web/src/views/ruleForm/addRule.vue new file mode 100644 index 0000000..e41b0a3 --- /dev/null +++ b/web/src/views/ruleForm/addRule.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/web/src/views/ruleForm/customRule.ts b/web/src/views/ruleForm/customRule.ts new file mode 100644 index 0000000..0aeac28 --- /dev/null +++ b/web/src/views/ruleForm/customRule.ts @@ -0,0 +1,30 @@ +// 自定义校验 + +// 校验阈值是否在0-100之间 +export const checkThreshold = (rule: any, value: any, callback: any) => { + setTimeout(() => { + if (!Number.isInteger(parseInt(value))) { + callback(new Error('请输入数字')) + } else { + if (value < 0 || value > 100) { + callback(new Error('请输入0-100之间的数字')) + } else { + callback() + } + } + }, 100) +} + +export const checkDuration = (rule: any, value: any, callback: any) => { + setTimeout(() => { + if (isNaN(value)) { + callback(new Error('请输入数字')) + } else { + if (value < 0) { + callback(new Error('请输入大于等于0的数字')) + } else { + callback() + } + } + }, 100) +} \ No newline at end of file diff --git a/web/src/views/ruleList.vue b/web/src/views/ruleList.vue index 557ae3b..23a4aa6 100644 --- a/web/src/views/ruleList.vue +++ b/web/src/views/ruleList.vue @@ -12,6 +12,10 @@ @input="searchInputKey" /> + @@ -48,12 +52,17 @@ + + +