linkerd2
linkerd2 copied to clipboard
Showing TCP connections in the I/O graph
Feature Request
What problem are you trying to solve?
As operator and developer, I want to have a visual overview of which pods are communicating. This doesn't only include HTTP requests, but long-running TCP connections, too.
How should the problem be solved?
Currently linkerd's UI shows a graph of incoming and outgoing HTTP communications, but not non-HTTP TCP connections. These connections are only visible in the edges section. So users can't simply look in the graph but must iterate over all entries in the edge section. Additional to that, the missing visualization of connections in the graph could and do lead to sceptical looks. The question arises, if the connections are really working as inteded.
So for a better overview, less questions and faster debugging, the TCP connections should be displayed in the graph, too.
As you can see in the image, the edges section informs the user, that there is a connection from kafka to the zookeeper statefulset. This connection is missing in the graph above.
How would users interact with this feature?
Users wouldn't manipulate any data. The view is "only" for visualization purposes, so that ops, devs, and devops can maintain, debug and check connections, without the need to iterate over a list of edge entries.
This would be cool!
This would definitely be cool. I can give some context on how this works today:
The graph is generated based on linkerd tap
events which is why we see HTTP connections but not TCP. (TCP connections do not generate tap events). We use tap events instead of metrics for this because the inbound metrics do not have source labels on them.
I think in order to add this feature we'd either need to add source labels to the inbound tcp metrics (which potentially raises some questions about timeseries cardinality in Prometheus) or extend linkerd tap
to add TCP events.
This would be a great feature. There's usually more going on than just HTTP (amqp traffic for RabbitMQ for example) and it would be nice to not just see those edges, but the actual traffic flow between the services.
This would be a really cool feature! I'm currently introducing a service mesh to a distributed system that relies heavily on TCP in some components and visualizing this as well would be useful!