broker日志配置

This commit is contained in:
许晓东
2021-11-05 14:37:00 +08:00
parent 704ae1d968
commit c2dc95aba4
8 changed files with 103 additions and 9 deletions

View File

@@ -70,4 +70,19 @@ public class ConfigController {
public Object deleteBrokerConfig(@RequestBody AlterConfigDTO dto) {
return configService.alterBrokerConfig(dto.getEntity(), dto.to(), AlterType.DELETE);
}
@GetMapping("/broker/logger")
public Object getBrokerLoggerConfig(String brokerId) {
return configService.getBrokerLoggerConfig(brokerId);
}
@PostMapping("/broker/logger")
public Object setBrokerLoggerConfig(@RequestBody AlterConfigDTO dto) {
return configService.alterBrokerLoggerConfig(dto.getEntity(), dto.to(), AlterType.SET);
}
@DeleteMapping("/broker/logger")
public Object deleteBrokerLoggerConfig(@RequestBody AlterConfigDTO dto) {
return configService.alterBrokerLoggerConfig(dto.getEntity(), dto.to(), AlterType.DELETE);
}
}

View File

@@ -16,7 +16,11 @@ public interface ConfigService {
ResponseData getBrokerConfig(String brokerId);
ResponseData getBrokerLoggerConfig(String brokerId);
ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type);
ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type);
ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type);
}

View File

@@ -36,6 +36,12 @@ public class ConfigServiceImpl implements ConfigService {
return ResponseData.create().data(vos).success();
}
@Override public ResponseData getBrokerLoggerConfig(String brokerId) {
List<ConfigEntry> configEntries = configConsole.getBrokerLoggerConfig(brokerId);
List<ConfigEntryVO> vos = configEntries.stream().map(ConfigEntryVO::from).sorted().collect(Collectors.toList());
return ResponseData.create().data(vos).success();
}
@Override public ResponseData alterBrokerConfig(String brokerId, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> tuple2 = null;
switch (type) {
@@ -49,6 +55,19 @@ public class ConfigServiceImpl implements ConfigService {
return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2());
}
@Override public ResponseData alterBrokerLoggerConfig(String brokerId, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> tuple2 = null;
switch (type) {
case SET:
tuple2 = configConsole.setBrokerLoggerConfig(brokerId, entry);
break;
case DELETE:
tuple2 = configConsole.deleteBrokerLoggerConfig(brokerId, entry);
break;
}
return (boolean) tuple2._1() ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2());
}
@Override
public ResponseData alterTopicConfig(String topic, ConfigEntry entry, AlterType type) {
Tuple2<Object, String> tuple2 = null;

View File

@@ -5,7 +5,7 @@ import java.util.Collections
import java.util.concurrent.TimeUnit
import com.xuxd.kafka.console.config.KafkaConfig
import kafka.admin.ConfigCommand.BrokerLoggerConfigType
import kafka.console.ConfigConsole.BrokerLoggerConfigType
import kafka.server.ConfigType
import org.apache.kafka.clients.admin.{AlterConfigOp, Config, ConfigEntry, DescribeConfigsOptions}
import org.apache.kafka.common.config.ConfigResource
@@ -31,6 +31,10 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi
getConfig(ConfigType.Broker, broker)
}
def getBrokerLoggerConfig(broker: String): List[ConfigEntry] = {
getConfig(BrokerLoggerConfigType, broker)
}
def setBrokerConfig(broker: String, entry: ConfigEntry): (Boolean, String) = {
alterConfig(ConfigType.Broker, broker, entry, AlterConfigOp.OpType.SET)
}
@@ -47,6 +51,14 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi
alterConfig(ConfigType.Topic, topic, entry, AlterConfigOp.OpType.DELETE)
}
def setBrokerLoggerConfig(topic: String, entry: ConfigEntry): (Boolean, String) = {
alterConfig(BrokerLoggerConfigType, topic, entry, AlterConfigOp.OpType.SET)
}
def deleteBrokerLoggerConfig(topic: String, entry: ConfigEntry): (Boolean, String) = {
alterConfig(BrokerLoggerConfigType, topic, entry, AlterConfigOp.OpType.DELETE)
}
def getConfig(entityType: String, entityName: String): List[ConfigEntry] = {
getResourceConfig(entityType, entityName, false).asJava
}
@@ -107,3 +119,7 @@ class ConfigConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfi
configResourceType
}
}
object ConfigConsole {
val BrokerLoggerConfigType = "broker-loggers"
}

View File

@@ -58,6 +58,10 @@ export const KafkaConfigApi = {
url: "/config/broker",
method: "get",
},
getBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "get",
},
setBrokerConfig: {
url: "/config/broker",
method: "post",
@@ -66,6 +70,14 @@ export const KafkaConfigApi = {
url: "/config/broker",
method: "delete",
},
setBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "post",
},
deleteBrokerLoggerConfig: {
url: "/config/broker/logger",
method: "delete",
},
};
export const KafkaTopicApi = {

View File

@@ -54,6 +54,7 @@
:visible="showEditConfigDialog"
:record="selectData"
:broker-id="id"
:is-logger-config="isLoggerConfig"
@closeEditConfigDialog="closeEditConfigDialog"
></EditConfig>
</a-spin>
@@ -83,6 +84,10 @@ export default {
type: String,
default: "",
},
isLoggerConfig: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -107,9 +112,12 @@ export default {
methods: {
getBrokerConfig() {
this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.getBrokerLoggerConfig
: KafkaConfigApi.getBrokerConfig;
request({
url: KafkaConfigApi.getBrokerConfig.url + "?brokerId=" + this.id,
method: KafkaConfigApi.getBrokerConfig.method,
url: api.url + "?brokerId=" + this.id,
method: api.method,
}).then((res) => {
this.loading = false;
if (res.code != 0) {
@@ -126,9 +134,12 @@ export default {
deleteBrokerConfig(record) {
this.selectData = record;
this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.deleteBrokerLoggerConfig
: KafkaConfigApi.deleteBrokerConfig;
request({
url: KafkaConfigApi.deleteBrokerConfig.url,
method: KafkaConfigApi.deleteBrokerConfig.method,
url: api.url,
method: api.method,
data: {
name: record.name,
value: record.value,

View File

@@ -18,15 +18,23 @@
size="small"
href="javascript:;"
class="operation-btn"
@click="openBrokerConfigDialog(record)"
@click="openBrokerConfigDialog(record, false)"
>属性配置
</a-button>
<a-button
size="small"
href="javascript:;"
class="operation-btn"
@click="openBrokerConfigDialog(record, true)"
>日志配置
</a-button>
</div>
</a-table>
</div>
<BrokerConfig
:visible="showBrokerConfigDialog"
:id="this.select.idString"
:is-logger-config="isLoggerConfig"
@closeBrokerConfigDialog="closeBrokerConfigDialog"
></BrokerConfig>
</a-spin>
@@ -49,6 +57,7 @@ export default {
clusterId: "",
showBrokerConfigDialog: false,
select: {},
isLoggerConfig: false,
};
},
methods: {
@@ -63,9 +72,10 @@ export default {
this.clusterId = res.data.clusterId;
});
},
openBrokerConfigDialog(record) {
openBrokerConfigDialog(record, isLoggerConfig) {
this.select = record;
this.showBrokerConfigDialog = true;
this.isLoggerConfig = isLoggerConfig;
},
closeBrokerConfigDialog() {
this.showBrokerConfigDialog = false;

View File

@@ -67,6 +67,10 @@ export default {
type: String,
default: "",
},
isLoggerConfig: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -87,9 +91,12 @@ export default {
this.form.validateFields((err, values) => {
if (!err) {
this.loading = true;
const api = this.isLoggerConfig
? KafkaConfigApi.setBrokerLoggerConfig
: KafkaConfigApi.setBrokerConfig;
request({
url: KafkaConfigApi.setBrokerConfig.url,
method: KafkaConfigApi.setBrokerConfig.method,
url: api.url,
method: api.method,
data: Object.assign({ entity: this.brokerId }, values),
}).then((res) => {
this.loading = false;