diff --git a/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue b/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue index d76ef3c80..1cbc699c8 100644 --- a/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue +++ b/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue @@ -329,37 +329,43 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.expression'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - + - +
-
+
- + - - - - + = + + + + +
- +
@@ -368,14 +374,14 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.source'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - + - +
@@ -388,10 +394,13 @@ - + + + +
@@ -410,7 +419,7 @@ :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" style="width: 45%;margin: 0" > - + @@ -422,7 +431,7 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.source'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - +
@@ -643,6 +652,7 @@ export default { } ] }], + timestampList: ['ANSIC', 'UnixDate', 'RubyDate', 'RFC822', 'RFC822Z', 'RFC850', 'RFC1123', 'RFC1123Z', 'RFC3339', 'RFC3339Nano', 'Unix', 'UnixMs', 'UnixUs', 'UnixNs'], metricsShow: true, logsShow: true } @@ -783,6 +793,9 @@ export default { if (pipeline.type === 'labels') { pipeline.labels = this.labelsToJson(pipeline.labels) } + if (pipeline.type === 'json') { + pipeline.expressions = this.labelsToJson(pipeline.expressions) + } }) if (item.type === 'file') { delete item.unit @@ -1120,18 +1133,33 @@ export default { if (val === 'regex') { this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expression.push('') } else if (val === 'json') { - this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') + this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push( + { + key: '', + value: '' + } + ) } else if (val === 'template') { this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') } else if (val === 'timestamp') { - this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') + this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push( + { + key: '', + value: '' + } + ) } else if (val === 'labels') { this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].labels.push({ key: '', value: '' }) } else if (val === 'output') { - this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') + this.editEndpoint.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push( + { + key: '', + value: '' + } + ) } }, delPipelineItem (logsIndex, pipelineIndex, itemIndex) { @@ -1159,6 +1187,68 @@ export default { if (JSON.stringify(this.editEndpoint.configs) === JSON.stringify(this.blankObject.configs)) { this.editEndpoint.configs = JSON.parse(res.data.list[0].configs) this.activeNameLogs = this.editEndpoint.configs[1].config.map(() => 'Basic') + this.editEndpoint.configs[1].config.forEach(item => { + item.labelModule = [] + if (JSON.stringify(item.labels) !== '{}' && item.labels) { + Object.keys(item.labels).forEach(key => { + item.labelModule.push({ key, value: item.labels[key] }) + }) + } else { + item.labelModule.push({ key: '', value: '' }) + } + item.pipeline && item.pipeline.forEach((pipeline) => { + if (pipeline.type === 'labels') { + const labelsArr = [] + if (JSON.stringify(pipeline.labels) !== '{}' && pipeline.labels) { + Object.keys(pipeline.labels).forEach(key => { + labelsArr.push({ key, value: pipeline.labels[key] }) + }) + } else { + labelsArr.push({ key: '', value: '' }) + } + pipeline.labels = labelsArr + } + if (pipeline.type === 'json') { + const expressionsArr = [] + if (JSON.stringify(pipeline.expressions) !== '{}' && pipeline.expressions) { + Object.keys(pipeline.expressions).forEach(key => { + expressionsArr.push({ key, value: pipeline.expressions[key] }) + }) + } else { + expressionsArr.push({ key: '', value: '' }) + } + pipeline.expressions = expressionsArr + } + }) + if (item.type === 'file') { + item.unit = '' + item.appName = '' + item.listenAddress = '' + } else if (item.type === 'journal') { + item.fileName = '' + item.appName = '' + item.listenAddress = '' + } else if (item.type === 'syslog') { + item.fileName = '' + item.unit = '' + } + }) + this.editEndpoint.paramObj = [] + this.editEndpoint.labelModule = [] + if (JSON.stringify(this.editEndpoint.configs[0].config.labels) !== '{}' && this.editEndpoint.configs[0].config.labels) { + Object.keys(this.editEndpoint.configs[0].config.labels).forEach(key => { + this.editEndpoint.labelModule.push({ key, value: this.editEndpoint.configs[0].config.labels[key] }) + }) + } else { + this.editEndpoint.labelModule.push({ key: '', value: '' }) + } + if (JSON.stringify(this.editEndpoint.configs[0].config.params) !== '{}' && this.editEndpoint.configs[0].config.params) { + Object.keys(this.editEndpoint.configs[0].config.params).forEach(key => { + this.editEndpoint.paramObj.push({ key, value: this.editEndpoint.configs[0].config.params[key] }) + }) + } else { + this.editEndpoint.paramObj.push({ key: '', value: [] }) + } } if (!this.editEndpoint.name) { this.editEndpoint.name = res.data.list[0].name @@ -1246,6 +1336,14 @@ export default { item.labels = this.labelsToJson(item.labelModule) delete item.labelModule } + item.pipeline && item.pipeline.forEach((pipeline) => { + if (pipeline.type === 'labels') { + pipeline.labels = this.labelsToJson(pipeline.labels) + } + if (pipeline.type === 'json') { + pipeline.expressions = this.labelsToJson(pipeline.expressions) + } + }) if (item.type === 'file') { delete item.unit delete item.appName diff --git a/nezha-fronted/src/components/common/rightBox/moduleBox.vue b/nezha-fronted/src/components/common/rightBox/moduleBox.vue index 9420e28e7..cb2cb80aa 100644 --- a/nezha-fronted/src/components/common/rightBox/moduleBox.vue +++ b/nezha-fronted/src/components/common/rightBox/moduleBox.vue @@ -326,37 +326,43 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.expression'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - + - +
-
+
- + + + = + + - -
- +
@@ -372,7 +378,7 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.template'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - +
@@ -381,14 +387,16 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.source'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - + - + + +
@@ -407,7 +415,7 @@ :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" style="width: 45%;margin: 0" > - + @@ -419,7 +427,7 @@ :prop="'configs.1.config.'+ index +'.pipeline.' + index2 + '.source'" :rules="[{ required: true, message: $t('validate.required'), trigger: 'blur' }]" > - +
@@ -631,6 +639,7 @@ export default { } ] }], + timestampList: ['ANSIC', 'UnixDate', 'RubyDate', 'RFC822', 'RFC822Z', 'RFC850', 'RFC1123', 'RFC1123Z', 'RFC3339', 'RFC3339Nano', 'Unix', 'UnixMs', 'UnixUs', 'UnixNs'], metricsShow: true, logsShow: true } @@ -761,6 +770,9 @@ export default { if (pipeline.type === 'labels') { pipeline.labels = this.labelsToJson(pipeline.labels) } + if (pipeline.type === 'json') { + pipeline.expressions = this.labelsToJson(pipeline.expressions) + } }) if (item.type === 'file') { delete item.unit @@ -1084,7 +1096,12 @@ export default { if (val === 'regex') { this.editModule.configs[1].config[logsIndex].pipeline[pipelineIndex].expression.push('') } else if (val === 'json') { - this.editModule.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') + this.editModule.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push( + { + key: '', + value: '' + } + ) } else if (val === 'template') { this.editModule.configs[1].config[logsIndex].pipeline[pipelineIndex].expressions.push('') } else if (val === 'timestamp') { @@ -1181,6 +1198,14 @@ export default { item.labels = this.labelsToJson(item.labelModule) delete item.labelModule } + item.pipeline && item.pipeline.forEach((pipeline) => { + if (pipeline.type === 'labels') { + pipeline.labels = this.labelsToJson(pipeline.labels) + } + if (pipeline.type === 'json') { + pipeline.expressions = this.labelsToJson(pipeline.expressions) + } + }) if (item.type === 'file') { delete item.unit delete item.appName diff --git a/nezha-fronted/src/components/common/rightBox/pipelineSelect.vue b/nezha-fronted/src/components/common/rightBox/pipelineSelect.vue index a4011e20a..7eace6e95 100644 --- a/nezha-fronted/src/components/common/rightBox/pipelineSelect.vue +++ b/nezha-fronted/src/components/common/rightBox/pipelineSelect.vue @@ -131,7 +131,12 @@ export default { } else if (val === 'json') { obj = { type: 'json', - expressions: [''], + expressions: [ + { + key: '', + value: '' + } + ], source: '' } } else if (val === 'template') { diff --git a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue index 8aa69d95d..cab15316d 100644 --- a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue +++ b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue @@ -345,6 +345,17 @@ export default { } pipeline.labels = labelsArr } + if (pipeline.type === 'json') { + const expressionsArr = [] + if (JSON.stringify(pipeline.expressions) !== '{}' && pipeline.expressions) { + Object.keys(pipeline.expressions).forEach(key => { + expressionsArr.push({ key, value: pipeline.expressions[key] }) + }) + } else { + expressionsArr.push({ key: '', value: '' }) + } + pipeline.expressions = expressionsArr + } }) if (item.type === 'file') { item.unit = '' diff --git a/nezha-fronted/src/components/page/monitor/module/moduleList.vue b/nezha-fronted/src/components/page/monitor/module/moduleList.vue index 4cfb7a9fe..8bb2a7f4d 100644 --- a/nezha-fronted/src/components/page/monitor/module/moduleList.vue +++ b/nezha-fronted/src/components/page/monitor/module/moduleList.vue @@ -220,6 +220,17 @@ export default { } pipeline.labels = labelsArr } + if (pipeline.type === 'json') { + const expressionsArr = [] + if (JSON.stringify(pipeline.expressions) !== '{}' && pipeline.expressions) { + Object.keys(pipeline.expressions).forEach(key => { + expressionsArr.push({ key, value: pipeline.expressions[key] }) + }) + } else { + expressionsArr.push({ key: '', value: '' }) + } + pipeline.expressions = expressionsArr + } }) if (item.type === 'file') { item.unit = ''