mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-01-31 22:18:07 +08:00
feat: 监控增加全局过滤 (#1466)
This commit is contained in:
parent
27918e2dc5
commit
506d78cb00
@ -726,6 +726,10 @@ const message = {
|
|||||||
},
|
},
|
||||||
monitor: {
|
monitor: {
|
||||||
monitor: 'Monitor',
|
monitor: 'Monitor',
|
||||||
|
globalFilter: 'Global Filter',
|
||||||
|
enableMonitor: 'Enable',
|
||||||
|
storeDays: 'Expiration days',
|
||||||
|
cleanMonitor: 'Clearing monitoring records',
|
||||||
setting: 'Setting',
|
setting: 'Setting',
|
||||||
avgLoad: 'Average load',
|
avgLoad: 'Average load',
|
||||||
loadDetail: 'Load detail',
|
loadDetail: 'Load detail',
|
||||||
@ -1125,11 +1129,6 @@ const message = {
|
|||||||
source: 'Download source',
|
source: 'Download source',
|
||||||
hasNewVersion: 'New version Available',
|
hasNewVersion: 'New version Available',
|
||||||
|
|
||||||
monitor: 'Monitor',
|
|
||||||
enableMonitor: 'Enable',
|
|
||||||
storeDays: 'Expiration days',
|
|
||||||
cleanMonitor: 'Clearing monitoring records',
|
|
||||||
|
|
||||||
message: 'Message',
|
message: 'Message',
|
||||||
messageType: 'Message type',
|
messageType: 'Message type',
|
||||||
email: 'Email',
|
email: 'Email',
|
||||||
|
@ -714,6 +714,10 @@ const message = {
|
|||||||
},
|
},
|
||||||
monitor: {
|
monitor: {
|
||||||
monitor: '监控',
|
monitor: '监控',
|
||||||
|
globalFilter: '全局过滤',
|
||||||
|
enableMonitor: '监控状态',
|
||||||
|
storeDays: '保存天数',
|
||||||
|
cleanMonitor: '清空监控记录',
|
||||||
setting: '设置',
|
setting: '设置',
|
||||||
avgLoad: '平均负载',
|
avgLoad: '平均负载',
|
||||||
loadDetail: '负载详情',
|
loadDetail: '负载详情',
|
||||||
@ -1087,11 +1091,6 @@ const message = {
|
|||||||
primaryKey: '密钥',
|
primaryKey: '密钥',
|
||||||
certificate: '证书',
|
certificate: '证书',
|
||||||
|
|
||||||
monitor: '监控',
|
|
||||||
enableMonitor: '监控状态',
|
|
||||||
storeDays: '保存天数',
|
|
||||||
cleanMonitor: '清空监控记录',
|
|
||||||
|
|
||||||
message: '通知',
|
message: '通知',
|
||||||
messageType: '通知方式',
|
messageType: '通知方式',
|
||||||
email: '邮箱',
|
email: '邮箱',
|
||||||
|
@ -2,6 +2,22 @@
|
|||||||
<div>
|
<div>
|
||||||
<MonitorRouter />
|
<MonitorRouter />
|
||||||
|
|
||||||
|
<div class="content-container__search">
|
||||||
|
<el-card>
|
||||||
|
<span style="font-size: 14px">{{ $t('monitor.globalFilter') }}</span>
|
||||||
|
<el-date-picker
|
||||||
|
@change="searchGlobal()"
|
||||||
|
v-model="timeRangeGlobal"
|
||||||
|
type="datetimerange"
|
||||||
|
:range-separator="$t('commons.search.timeRange')"
|
||||||
|
:start-placeholder="$t('commons.search.timeStart')"
|
||||||
|
:end-placeholder="$t('commons.search.timeEnd')"
|
||||||
|
:shortcuts="shortcuts"
|
||||||
|
style="max-width: 360px; width: 100%; margin-left: 10px"
|
||||||
|
:size="mobile ? 'small' : 'default'"
|
||||||
|
></el-date-picker>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
<el-row :gutter="20" style="margin-top: 20px">
|
<el-row :gutter="20" style="margin-top: 20px">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-card style="overflow: inherit">
|
<el-card style="overflow: inherit">
|
||||||
@ -157,6 +173,7 @@ const mobile = computed(() => {
|
|||||||
|
|
||||||
const zoomStart = ref();
|
const zoomStart = ref();
|
||||||
const monitorBase = ref();
|
const monitorBase = ref();
|
||||||
|
const timeRangeGlobal = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
||||||
const timeRangeLoad = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
const timeRangeLoad = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
||||||
const timeRangeCpu = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
const timeRangeCpu = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
||||||
const timeRangeMemory = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
const timeRangeMemory = ref<[Date, Date]>([new Date(new Date().setHours(0, 0, 0, 0)), new Date()]);
|
||||||
@ -215,6 +232,19 @@ const searchInfo = reactive<Monitor.MonitorSearch>({
|
|||||||
endTime: new Date(),
|
endTime: new Date(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const searchGlobal = () => {
|
||||||
|
timeRangeLoad.value = timeRangeGlobal.value;
|
||||||
|
timeRangeCpu.value = timeRangeGlobal.value;
|
||||||
|
timeRangeMemory.value = timeRangeGlobal.value;
|
||||||
|
timeRangeIO.value = timeRangeGlobal.value;
|
||||||
|
timeRangeNetwork.value = timeRangeGlobal.value;
|
||||||
|
search('load');
|
||||||
|
search('cpu');
|
||||||
|
search('memory');
|
||||||
|
search('io');
|
||||||
|
search('network');
|
||||||
|
};
|
||||||
|
|
||||||
const search = async (param: string) => {
|
const search = async (param: string) => {
|
||||||
searchInfo.param = param;
|
searchInfo.param = param;
|
||||||
switch (param) {
|
switch (param) {
|
||||||
@ -740,6 +770,12 @@ onBeforeUnmount(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.content-container__search {
|
||||||
|
margin-top: 20px;
|
||||||
|
.el-card {
|
||||||
|
--el-card-padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
.networkOption {
|
.networkOption {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
@ -8,13 +8,13 @@
|
|||||||
size="30%"
|
size="30%"
|
||||||
>
|
>
|
||||||
<template #header>
|
<template #header>
|
||||||
<DrawerHeader :header="$t('setting.storeDays')" :back="handleClose" />
|
<DrawerHeader :header="$t('monitor.storeDays')" :back="handleClose" />
|
||||||
</template>
|
</template>
|
||||||
<el-form ref="formRef" label-position="top" :model="form" @submit.prevent v-loading="loading">
|
<el-form ref="formRef" label-position="top" :model="form" @submit.prevent v-loading="loading">
|
||||||
<el-row type="flex" justify="center">
|
<el-row type="flex" justify="center">
|
||||||
<el-col :span="22">
|
<el-col :span="22">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('setting.storeDays')"
|
:label="$t('monitor.storeDays')"
|
||||||
:rules="[Rules.integerNumber, checkNumberRange(1, 30)]"
|
:rules="[Rules.integerNumber, checkNumberRange(1, 30)]"
|
||||||
prop="monitorStoreDays"
|
prop="monitorStoreDays"
|
||||||
>
|
>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="1"><br /></el-col>
|
<el-col :span="1"><br /></el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item :label="$t('setting.enableMonitor')" prop="monitorStatus">
|
<el-form-item :label="$t('monitor.enableMonitor')" prop="monitorStatus">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="onSaveStatus"
|
@change="onSaveStatus"
|
||||||
v-model="form.monitorStatus"
|
v-model="form.monitorStatus"
|
||||||
@ -16,7 +16,7 @@
|
|||||||
inactive-value="disable"
|
inactive-value="disable"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('setting.storeDays')" prop="monitorStoreDays">
|
<el-form-item :label="$t('monitor.storeDays')" prop="monitorStoreDays">
|
||||||
<el-input disabled v-model="form.monitorStoreDays">
|
<el-input disabled v-model="form.monitorStoreDays">
|
||||||
<template #append>
|
<template #append>
|
||||||
<el-button @click="onChangeStoreDays" icon="Setting">
|
<el-button @click="onChangeStoreDays" icon="Setting">
|
||||||
@ -35,7 +35,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="onClean()" icon="Delete">{{ $t('setting.cleanMonitor') }}</el-button>
|
<el-button @click="onClean()" icon="Delete">{{ $t('monitor.cleanMonitor') }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -100,7 +100,7 @@ const onChangeInterval = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onClean = async () => {
|
const onClean = async () => {
|
||||||
ElMessageBox.confirm(i18n.global.t('commons.msg.clean'), i18n.global.t('setting.cleanMonitor'), {
|
ElMessageBox.confirm(i18n.global.t('commons.msg.clean'), i18n.global.t('monitor.cleanMonitor'), {
|
||||||
confirmButtonText: i18n.global.t('commons.button.confirm'),
|
confirmButtonText: i18n.global.t('commons.button.confirm'),
|
||||||
cancelButtonText: i18n.global.t('commons.button.cancel'),
|
cancelButtonText: i18n.global.t('commons.button.cancel'),
|
||||||
type: 'info',
|
type: 'info',
|
||||||
|
@ -215,7 +215,7 @@ const loadDetail = (log: string) => {
|
|||||||
return log.replace('[MFAStatus]', '[' + i18n.global.t('setting.mfa') + ']');
|
return log.replace('[MFAStatus]', '[' + i18n.global.t('setting.mfa') + ']');
|
||||||
}
|
}
|
||||||
if (log.indexOf('[MonitorStatus]') !== -1) {
|
if (log.indexOf('[MonitorStatus]') !== -1) {
|
||||||
return log.replace('[MonitorStatus]', '[' + i18n.global.t('setting.enableMonitor') + ']');
|
return log.replace('[MonitorStatus]', '[' + i18n.global.t('monitor.enableMonitor') + ']');
|
||||||
}
|
}
|
||||||
if (log.indexOf('[MonitorStoreDays]') !== -1) {
|
if (log.indexOf('[MonitorStoreDays]') !== -1) {
|
||||||
return log.replace('[MonitorStoreDays]', '[' + i18n.global.t('setting.monitor') + ']');
|
return log.replace('[MonitorStoreDays]', '[' + i18n.global.t('setting.monitor') + ']');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user