Skip to content

Commit 2bd00f4

Browse files
committed
[Feature] (show) add IP field display for show frontends/backends/broker commands
1 parent 6eee338 commit 2bd00f4

11 files changed

Lines changed: 98 additions & 38 deletions

File tree

fe/fe-core/src/main/java/org/apache/doris/catalog/BrokerMgr.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.doris.common.util.NetUtils;
3030
import org.apache.doris.common.util.TimeUtils;
3131
import org.apache.doris.nereids.trees.plans.commands.info.ModifyBrokerOp;
32+
import org.apache.doris.nereids.util.HostUtils;
3233
import org.apache.doris.persist.gson.GsonUtils;
3334

3435
import com.google.common.collect.ArrayListMultimap;
@@ -52,7 +53,7 @@
5253
*/
5354
public class BrokerMgr {
5455
public static final ImmutableList<String> BROKER_PROC_NODE_TITLE_NAMES = new ImmutableList.Builder<String>()
55-
.add("Name").add("Host").add("Port").add("Alive")
56+
.add("Name").add("Host").add("IP").add("Port").add("Alive")
5657
.add("LastStartTime").add("LastUpdateTime").add("ErrMsg")
5758
.build();
5859

@@ -387,6 +388,7 @@ public ProcResult fetchResult() {
387388
List<String> row = Lists.newArrayList();
388389
row.add(brokerName);
389390
row.add(broker.host);
391+
row.add(HostUtils.resolveHostToIp(broker.host));
390392
row.add(String.valueOf(broker.port));
391393
row.add(String.valueOf(broker.isAlive));
392394
row.add(TimeUtils.longToTimeString(broker.lastStartTime));

fe/fe-core/src/main/java/org/apache/doris/common/proc/BackendsProcDir.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.apache.doris.common.util.DebugUtil;
2525
import org.apache.doris.common.util.ListComparator;
2626
import org.apache.doris.common.util.TimeUtils;
27+
import org.apache.doris.nereids.util.HostUtils;
2728
import org.apache.doris.system.Backend;
2829
import org.apache.doris.system.SystemInfoService;
2930
import org.apache.doris.thrift.TUnit;
@@ -47,10 +48,10 @@ public class BackendsProcDir implements ProcDirInterface {
4748

4849
public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>().add("BackendId")
4950
.add("Host").add("HeartbeatPort").add("BePort").add("HttpPort").add("BrpcPort").add("ArrowFlightSqlPort")
50-
.add("LastStartTime").add("LastHeartbeat").add("Alive").add("SystemDecommissioned").add("TabletNum")
51-
.add("DataUsedCapacity").add("TrashUsedCapacity").add("AvailCapacity").add("TotalCapacity").add("UsedPct")
52-
.add("MaxDiskUsedPct").add("RemoteUsedCapacity").add("Tag").add("ErrMsg").add("Version").add("Status")
53-
.add("HeartbeatFailureCounter").add("NodeRole").add("CpuCores").add("Memory").add("LiveSince")
51+
.add("LastStartTime").add("LastHeartbeat").add("Alive").add("IP").add("SystemDecommissioned")
52+
.add("TabletNum").add("DataUsedCapacity").add("TrashUsedCapacity").add("AvailCapacity").add("TotalCapacity")
53+
.add("UsedPct").add("MaxDiskUsedPct").add("RemoteUsedCapacity").add("Tag").add("ErrMsg").add("Version")
54+
.add("Status").add("HeartbeatFailureCounter").add("NodeRole").add("CpuCores").add("Memory").add("LiveSince")
5455
.add("RunningTasks").build();
5556

5657
public static final ImmutableList<String> DISK_TITLE_NAMES = new ImmutableList.Builder<String>()
@@ -116,6 +117,7 @@ public static List<List<String>> getBackendInfos() {
116117
backendInfo.add(TimeUtils.longToTimeString(backend.getLastStartTime()));
117118
backendInfo.add(TimeUtils.longToTimeString(backend.getLastUpdateMs()));
118119
backendInfo.add(String.valueOf(backend.isAlive()));
120+
backendInfo.add(HostUtils.resolveHostToIp(backend.getHost()));
119121
backendInfo.add(String.valueOf(backend.isDecommissioned()));
120122
backendInfo.add(tabletNum.toString());
121123

@@ -229,5 +231,4 @@ public ProcNodeInterface lookup(String beIdStr) throws AnalysisException {
229231

230232
return new BackendProcNode(backend);
231233
}
232-
233234
}

fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.doris.common.Pair;
2323
import org.apache.doris.common.io.DiskUtils;
2424
import org.apache.doris.common.util.TimeUtils;
25+
import org.apache.doris.nereids.util.HostUtils;
2526
import org.apache.doris.qe.ConnectContext;
2627
import org.apache.doris.service.FeDiskInfo;
2728
import org.apache.doris.system.Frontend;
@@ -48,12 +49,12 @@ public class FrontendsProcNode implements ProcNodeInterface {
4849
public static final ImmutableList<String> TITLE_NAMES = new ImmutableList.Builder<String>()
4950
.add("Name").add("Host").add("EditLogPort").add("HttpPort").add("QueryPort").add("RpcPort")
5051
.add("ArrowFlightSqlPort").add("Role").add("IsMaster").add("ClusterId").add("Join").add("Alive")
51-
.add("ReplayedJournalId").add("LastStartTime").add("LastHeartbeat").add("IsHelper").add("ErrMsg")
52+
.add("ReplayedJournalId").add("IP").add("LastStartTime").add("LastHeartbeat").add("IsHelper").add("ErrMsg")
5253
.add("Version").add("CurrentConnected").add("LiveSince")
5354
.build();
5455

5556
public static final ImmutableList<String> DISK_TITLE_NAMES = new ImmutableList.Builder<String>()
56-
.add("Name").add("Host").add("DirType").add("Dir").add("Filesystem")
57+
.add("Name").add("Host").add("IP").add("DirType").add("Dir").add("Filesystem")
5758
.add("Capacity").add("Used").add("Available").add("UseRate").add("MountOn")
5859
.build();
5960

@@ -160,6 +161,7 @@ public static void getFrontendsInfo(Env env, List<List<String>> infos) {
160161
info.add(String.valueOf(fe.isAlive()));
161162
info.add(Long.toString(fe.getReplayedJournalId()));
162163
}
164+
info.add(HostUtils.resolveHostToIp(fe.getHost()));
163165
info.add(TimeUtils.longToTimeString(fe.getLastStartupTime()));
164166
info.add(TimeUtils.longToTimeString(fe.getLastUpdateTime()));
165167
info.add(String.valueOf(isHelperNode(helperNodes, fe)));
@@ -189,6 +191,7 @@ public static void getFrontendsDiskInfo(Env env, List<List<String>> infos) {
189191
List<String> info = new ArrayList<String>();
190192
info.add(fe.getNodeName());
191193
info.add(fe.getHost());
194+
info.add(HostUtils.resolveHostToIp(fe.getHost()));
192195
info.add(disk.getDirType());
193196
info.add(disk.getDir());
194197
info.add(disk.getSpaceInfo().fileSystem);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
package org.apache.doris.nereids.util;
19+
20+
import org.apache.logging.log4j.LogManager;
21+
import org.apache.logging.log4j.Logger;
22+
23+
import java.net.InetAddress;
24+
25+
/**
26+
* HostUtils
27+
*/
28+
public class HostUtils {
29+
30+
private static final Logger LOG = LogManager.getLogger(HostUtils.class);
31+
32+
/**
33+
* resolve ip from hostname
34+
*/
35+
public static String resolveHostToIp(String host) {
36+
try {
37+
InetAddress address = InetAddress.getByName(host);
38+
return address.getHostAddress();
39+
} catch (Exception e) {
40+
LOG.warn("Failed to resolve host {} to IP: {}", host, e.getMessage());
41+
return "Unknown";
42+
}
43+
}
44+
45+
}

fe/fe-core/src/main/java/org/apache/doris/system/Backend.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.doris.common.util.DebugPointUtil;
3030
import org.apache.doris.common.util.PrintableMap;
3131
import org.apache.doris.common.util.TimeUtils;
32+
import org.apache.doris.nereids.util.HostUtils;
3233
import org.apache.doris.persist.gson.GsonUtils;
3334
import org.apache.doris.qe.SimpleScheduler;
3435
import org.apache.doris.resource.Tag;
@@ -370,6 +371,7 @@ public String getDetailsForCreateReplica() {
370371
StringBuilder sb = new StringBuilder("[");
371372
sb.append("backendId=").append(id);
372373
sb.append(", host=").append(host);
374+
sb.append(", ip=").append(HostUtils.resolveHostToIp(host));
373375
if (!isAlive()) {
374376
sb.append(", isAlive=false, exclude it");
375377
} else if (isDecommissioned()) {

fe/fe-core/src/main/java/org/apache/doris/tablefunction/BackendsTableValuedFunction.java

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,33 @@ public class BackendsTableValuedFunction extends MetadataTableValuedFunction {
4545
public static final String NAME = "backends";
4646

4747
private static final ImmutableList<Column> SCHEMA = ImmutableList.of(
48-
new Column("BackendId", ScalarType.createType(PrimitiveType.BIGINT)),
49-
new Column("Host", ScalarType.createStringType()),
50-
new Column("HeartbeatPort", ScalarType.createType(PrimitiveType.INT)),
51-
new Column("BePort", ScalarType.createType(PrimitiveType.INT)),
52-
new Column("HttpPort", ScalarType.createType(PrimitiveType.INT)),
53-
new Column("BrpcPort", ScalarType.createType(PrimitiveType.INT)),
54-
new Column("ArrowFlightSqlPort", ScalarType.createType(PrimitiveType.INT)),
55-
new Column("LastStartTime", ScalarType.createStringType()),
56-
new Column("LastHeartbeat", ScalarType.createStringType()),
57-
new Column("Alive", ScalarType.createType(PrimitiveType.BOOLEAN)),
58-
new Column("SystemDecommissioned", ScalarType.createType(PrimitiveType.BOOLEAN)),
59-
new Column("TabletNum", ScalarType.createType(PrimitiveType.BIGINT)),
60-
new Column("DataUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
61-
new Column("TrashUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
62-
new Column("AvailCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
63-
new Column("TotalCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
64-
new Column("UsedPct", ScalarType.createType(PrimitiveType.DOUBLE)),
65-
new Column("MaxDiskUsedPct", ScalarType.createType(PrimitiveType.DOUBLE)),
66-
new Column("RemoteUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
67-
new Column("Tag", ScalarType.createStringType()),
68-
new Column("ErrMsg", ScalarType.createStringType()),
69-
new Column("Version", ScalarType.createStringType()),
70-
new Column("Status", ScalarType.createStringType()),
71-
new Column("HeartbeatFailureCounter", ScalarType.createType(PrimitiveType.INT)),
72-
new Column("NodeRole", ScalarType.createStringType()));
48+
new Column("BackendId", ScalarType.createType(PrimitiveType.BIGINT)),
49+
new Column("Host", ScalarType.createStringType()),
50+
new Column("HeartbeatPort", ScalarType.createType(PrimitiveType.INT)),
51+
new Column("BePort", ScalarType.createType(PrimitiveType.INT)),
52+
new Column("HttpPort", ScalarType.createType(PrimitiveType.INT)),
53+
new Column("BrpcPort", ScalarType.createType(PrimitiveType.INT)),
54+
new Column("ArrowFlightSqlPort", ScalarType.createType(PrimitiveType.INT)),
55+
new Column("LastStartTime", ScalarType.createStringType()),
56+
new Column("LastHeartbeat", ScalarType.createStringType()),
57+
new Column("Alive", ScalarType.createType(PrimitiveType.BOOLEAN)),
58+
new Column("IP", ScalarType.createStringType()),
59+
new Column("SystemDecommissioned", ScalarType.createType(PrimitiveType.BOOLEAN)),
60+
new Column("TabletNum", ScalarType.createType(PrimitiveType.BIGINT)),
61+
new Column("DataUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
62+
new Column("TrashUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
63+
new Column("AvailCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
64+
new Column("TotalCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
65+
new Column("UsedPct", ScalarType.createType(PrimitiveType.DOUBLE)),
66+
new Column("MaxDiskUsedPct", ScalarType.createType(PrimitiveType.DOUBLE)),
67+
new Column("RemoteUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)),
68+
new Column("Tag", ScalarType.createStringType()),
69+
new Column("ErrMsg", ScalarType.createStringType()),
70+
new Column("Version", ScalarType.createStringType()),
71+
new Column("Status", ScalarType.createStringType()),
72+
new Column("HeartbeatFailureCounter", ScalarType.createType(PrimitiveType.INT)),
73+
new Column("NodeRole", ScalarType.createStringType())
74+
);
7375

7476
private static final ImmutableMap<String, Integer> COLUMN_TO_INDEX;
7577

fe/fe-core/src/main/java/org/apache/doris/tablefunction/FrontendsDisksTableValuedFunction.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class FrontendsDisksTableValuedFunction extends MetadataTableValuedFuncti
4646
private static final ImmutableList<Column> SCHEMA = ImmutableList.of(
4747
new Column("Name", ScalarType.createStringType()),
4848
new Column("Host", ScalarType.createStringType()),
49+
new Column("IP", ScalarType.createStringType()),
4950
new Column("DirType", ScalarType.createStringType()),
5051
new Column("Dir", ScalarType.createStringType()),
5152
new Column("Filesystem", ScalarType.createStringType()),

fe/fe-core/src/main/java/org/apache/doris/tablefunction/FrontendsTableValuedFunction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ public class FrontendsTableValuedFunction extends MetadataTableValuedFunction {
6262
new Column("IsHelper", ScalarType.createStringType()),
6363
new Column("ErrMsg", ScalarType.createStringType()),
6464
new Column("Version", ScalarType.createStringType()),
65-
new Column("CurrentConnected", ScalarType.createStringType()));
65+
new Column("CurrentConnected", ScalarType.createStringType()),
66+
new Column("IP", ScalarType.createStringType())
67+
);
6668

6769
private static final ImmutableMap<String, Integer> COLUMN_TO_INDEX;
6870

fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import org.apache.doris.mysql.privilege.PrivPredicate;
7878
import org.apache.doris.nereids.trees.expressions.Expression;
7979
import org.apache.doris.nereids.util.FrontendConjunctsUtils;
80+
import org.apache.doris.nereids.util.HostUtils;
8081
import org.apache.doris.nereids.util.PlanUtils;
8182
import org.apache.doris.qe.ConnectContext;
8283
import org.apache.doris.qe.QeProcessorImpl;
@@ -457,6 +458,7 @@ private static TFetchSchemaTableDataResult backendsMetadataResult(TMetadataTable
457458
trow.addToColumnValue(new TCell().setStringVal(TimeUtils.longToTimeString(backend.getLastStartTime())));
458459
trow.addToColumnValue(new TCell().setStringVal(TimeUtils.longToTimeString(backend.getLastUpdateMs())));
459460
trow.addToColumnValue(new TCell().setBoolVal(backend.isAlive()));
461+
trow.addToColumnValue(new TCell().setStringVal(HostUtils.resolveHostToIp(backend.getHost())));
460462
trow.addToColumnValue(new TCell().setBoolVal(backend.isDecommissioned()));
461463
trow.addToColumnValue(new TCell().setLongVal(tabletNum));
462464

regression-test/suites/external_table_p0/tvf/test_backends_tvf.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
suite("test_backends_tvf","p0,external,tvf,external_docker") {
2020
List<List<Object>> table = sql """ select * from backends(); """
2121
assertTrue(table.size() > 0)
22-
assertEquals(25, table[0].size())
22+
assertEquals(26, table[0].size())
2323

2424
// filter columns
2525
table = sql """ select BackendId, Host, Alive, TotalCapacity, Version, NodeRole from backends();"""
@@ -51,7 +51,7 @@ suite("test_backends_tvf","p0,external,tvf,external_docker") {
5151
res = sql """ select count(*) from backends() where alive = true; """
5252
assertTrue(res[0][0] > 0)
5353

54-
sql """ select BackendId, Host, HeartbeatPort,
54+
sql """ select BackendId, Host, IP, HeartbeatPort,
5555
BePort, HttpPort, BrpcPort, LastStartTime, LastHeartbeat, Alive
5656
SystemDecommissioned, tabletnum
5757
DataUsedCapacity, AvailCapacity, TotalCapacity, UsedPct

0 commit comments

Comments
 (0)