Skip to content

Commit fdce3fd

Browse files
authored
[Add Local Addr & Port 2/3] Add columns to socket tracer (#1807)
Summary: Adds data columns for local IP address and port to the socket tracer, which are populated by #1808 and #1809. This will support standalone pem entity relationships. Type of change: /kind feature Test Plan: Existing targets Signed-off-by: Benjamin Kilimnik <bkilimnik@pixielabs.ai>
1 parent 0ec2c3a commit fdce3fd

File tree

15 files changed

+86
-0
lines changed

15 files changed

+86
-0
lines changed

src/carnot/goplanner/schema_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@ relation_map {
4444
column_type: INT64
4545
column_semantic_type: ST_PORT
4646
}
47+
columns {
48+
column_name: "local_addr"
49+
column_type: STRING
50+
column_semantic_type: ST_IP_ADDRESS
51+
}
52+
columns {
53+
column_name: "local_port"
54+
column_type: INT64
55+
column_semantic_type: ST_PORT
56+
}
4757
columns {
4858
column_name: "protocol"
4959
column_type: INT64

src/stirling/source_connectors/socket_tracer/amqp_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ static constexpr DataElement kAMQPElements[] = {
3333
canonical_data_elements::kUPID,
3434
canonical_data_elements::kRemoteAddr,
3535
canonical_data_elements::kRemotePort,
36+
canonical_data_elements::kLocalAddr,
37+
canonical_data_elements::kLocalPort,
3638
canonical_data_elements::kTraceRole,
3739
{
3840
"frame_type", "AMQP request command",

src/stirling/source_connectors/socket_tracer/canonical_types.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ constexpr DataElement kRemotePort = {
4545
types::PatternType::GENERAL,
4646
};
4747

48+
constexpr DataElement kLocalAddr = {
49+
"local_addr",
50+
"IP address of the local endpoint.",
51+
types::DataType::STRING,
52+
types::SemanticType::ST_IP_ADDRESS,
53+
types::PatternType::GENERAL,
54+
};
55+
56+
constexpr DataElement kLocalPort = {
57+
"local_port",
58+
"Port of the local endpoint.",
59+
types::DataType::INT64,
60+
types::SemanticType::ST_PORT,
61+
types::PatternType::GENERAL,
62+
};
63+
4864
constexpr DataElement kTraceRole = {
4965
"trace_role",
5066
"The role (client-or-server) of the process that owns the connections.",

src/stirling/source_connectors/socket_tracer/cass_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ static constexpr DataElement kCQLElements[] = {
3939
canonical_data_elements::kUPID,
4040
canonical_data_elements::kRemoteAddr,
4141
canonical_data_elements::kRemotePort,
42+
canonical_data_elements::kLocalAddr,
43+
canonical_data_elements::kLocalPort,
4244
canonical_data_elements::kTraceRole,
4345
{"req_op", "Request opcode",
4446
types::DataType::INT64,

src/stirling/source_connectors/socket_tracer/conn_tracker.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,11 @@ class ConnTracker : NotCopyMoveable {
337337
*/
338338
const SockAddr& remote_endpoint() const { return open_info_.remote_addr; }
339339

340+
/**
341+
* Get local IP endpoint of the connection.
342+
*/
343+
const SockAddr& local_endpoint() const { return open_info_.local_addr; }
344+
340345
/**
341346
* Get the connection information (e.g. remote IP, port, PID, etc.) for this connection.
342347
*/
@@ -801,6 +806,8 @@ std::string DebugString(const ConnTracker& c, std::string_view prefix) {
801806
info += absl::Substitute("state=$0\n", magic_enum::enum_name(c.state()));
802807
info += absl::Substitute("$0remote_addr=$1:$2\n", prefix, c.remote_endpoint().AddrStr(),
803808
c.remote_endpoint().port());
809+
info += absl::Substitute("$0local_addr=$1:$2\n", prefix, c.local_endpoint().AddrStr(),
810+
c.local_endpoint().port());
804811
info += absl::Substitute("$0protocol=$1\n", prefix, magic_enum::enum_name(c.protocol()));
805812
if constexpr (std::is_same_v<TFrameType, protocols::http2::Stream>) {
806813
info += c.http2_client_streams_.DebugString(absl::StrCat(prefix, " "));

src/stirling/source_connectors/socket_tracer/dns_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ static constexpr DataElement kDNSElements[] = {
3434
canonical_data_elements::kUPID,
3535
canonical_data_elements::kRemoteAddr,
3636
canonical_data_elements::kRemotePort,
37+
canonical_data_elements::kLocalAddr,
38+
canonical_data_elements::kLocalPort,
3739
canonical_data_elements::kTraceRole,
3840
{"req_header", "Request header",
3941
types::DataType::STRING,

src/stirling/source_connectors/socket_tracer/http_table.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ constexpr DataElement kHTTPElements[] = {
4343
canonical_data_elements::kUPID,
4444
canonical_data_elements::kRemoteAddr,
4545
canonical_data_elements::kRemotePort,
46+
canonical_data_elements::kLocalAddr,
47+
canonical_data_elements::kLocalPort,
4648
canonical_data_elements::kTraceRole,
4749
{"major_version", "HTTP major version, can be 1 or 2",
4850
types::DataType::INT64,
@@ -112,6 +114,8 @@ constexpr int kHTTPTimeIdx = kHTTPTable.ColIndex("time_");
112114
constexpr int kHTTPUPIDIdx = kHTTPTable.ColIndex("upid");
113115
constexpr int kHTTPRemoteAddrIdx = kHTTPTable.ColIndex("remote_addr");
114116
constexpr int kHTTPRemotePortIdx = kHTTPTable.ColIndex("remote_port");
117+
constexpr int kHTTPLocalAddrIdx = kHTTPTable.ColIndex("local_addr");
118+
constexpr int kHTTPLocalPortIdx = kHTTPTable.ColIndex("local_port");
115119
constexpr int kHTTPTraceRoleIdx = kHTTPTable.ColIndex("trace_role");
116120
constexpr int kHTTPMajorVersionIdx = kHTTPTable.ColIndex("major_version");
117121
constexpr int kHTTPMinorVersionIdx = kHTTPTable.ColIndex("minor_version");

src/stirling/source_connectors/socket_tracer/kafka_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ static constexpr DataElement kKafkaElements[] = {
3737
canonical_data_elements::kUPID,
3838
canonical_data_elements::kRemoteAddr,
3939
canonical_data_elements::kRemotePort,
40+
canonical_data_elements::kLocalAddr,
41+
canonical_data_elements::kLocalPort,
4042
canonical_data_elements::kTraceRole,
4143
{"req_cmd", "Kafka request command",
4244
types::DataType::INT64,

src/stirling/source_connectors/socket_tracer/mongodb_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ static constexpr DataElement kMongoDBElements[] = {
3434
canonical_data_elements::kUPID,
3535
canonical_data_elements::kRemoteAddr,
3636
canonical_data_elements::kRemotePort,
37+
canonical_data_elements::kLocalAddr,
38+
canonical_data_elements::kLocalPort,
3739
canonical_data_elements::kTraceRole,
3840
{"req_cmd", "MongoDB request command",
3941
types::DataType::STRING,

src/stirling/source_connectors/socket_tracer/mux_table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ static constexpr DataElement kMuxElements[] = {
3434
canonical_data_elements::kUPID,
3535
canonical_data_elements::kRemoteAddr,
3636
canonical_data_elements::kRemotePort,
37+
canonical_data_elements::kLocalAddr,
38+
canonical_data_elements::kLocalPort,
3739
canonical_data_elements::kTraceRole,
3840
{"req_type", "Mux message request type",
3941
types::DataType::INT64,

0 commit comments

Comments
 (0)