Replies: 4 comments 1 reply
-
This SWIP will be merged through #11670 |
Beta Was this translation helpful? Give feedback.
0 replies
-
I will own and implement this SWIP, and make a PR for it. |
Beta Was this translation helpful? Give feedback.
1 reply
-
Looks good, I will submit the new SWIP for reporter service hierarchy connections through Rover(eBPF agent). |
Beta Was this translation helpful? Give feedback.
0 replies
-
https://skywalking.apache.org/docs/main/next/en/swip/swip-1/ |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Motivation
Service relationship is one of the most important parts of collaborating data in the APM. Service Map is supported for
years from tracing to trace analysis. But still due to the means of the probs, a service could be detected from multiple
methods, which is the same service in multiple
layers. v9 proposal mentioned the concept of the layer.
Through this proposal, we plan to establish a kernel-level concept to connect services detected in different layers.
Architecture Graph
There is no significant architecture-level change.
Propose Changes
The data sources of SkyWalking APM have covered traditional agent installed service, VMs, cloud infra, k8s, etc.
For example, a Java service is built in a docker image and is going to be deployed in a k8s cluster, with a sidecar
injected due to service mesh managed. The following services would be able to detect cross-layers
monitored by service mesh.
All these services have logic connections or are identical from a physical perspective, but currently, they may be just
similar on name(s), no further metadata connection.
By those, we have a chance to move one step ahead to connect the dots of the whole infrastructure. This means, for the
first time, we are going to establish the connections among services detected from various layers.
In the v10, I am proposing a new concept
Service Hierarchy
. Service Hierarchy defines the relationships ofexisting services in various layers. With more kinds of agent tech involved(such as eBPF) and deployment tools(such as
operator and agent injector), we could inject relative service/instance metadata and try to build the connections,
including,
properties.
establish connections among k8s pods and service mesh srv.
Meanwhile, as usual with the new major version change, I would expect UI side changes as well. UI should have flexible
capabilities to show hierarchy services from the service view and topology view. Also, we could consider a deeper view
of the instance part as well.
Imported Dependencies libs and their licenses.
No new library is planned to be added to the codebase.
Compatibility
About the protocol, there should be no breaking changes, but enhancements only. New query protocols(
service-hierarchy and instance-hierarchy) are considered to be added, some new fields should be added on things like
topology query and instance dependencies to list relative services/instances from other layers directly rather than an
extra query.
About the data structure, due to the new data concept is going to be created, service hierarchy relative data models are
going to be added. If the user is using Elasticsearch and BanyanDB, this should be compatible, they just need to
re-run
init-mode
OAP to extend the existing models. But for SQL database users(MySQL, PostgreSQL), this could requirenew tables.
GraphQL query protocol
New query protocol
hierarchy.graphqls
is going to be added.New data models
service_hierarchy
instance_hierarchy
Internal APIs
Internal APIs should be exposed in the Core module to support building the hierarchy relationship.
Hierarchy Definition
All layers hierarchy relations are defined in the
hierarchy-definition.yml
file.OAP will check the hierarchy relations before building and use the matching rules to auto match the relations. Here is an example:
General usage docs
This proposal doesn't impact the end user in any way of using SkyWalking. The remarkable change will be in the UI. On
the service dashboard and topology map, the user should be able to see the hierarchy relationship, which means other
services in other layers are logically the same as the current one. UI would provide the link to jump to the relative
service's dashboard.
No Goal
This proposal doesn't cover all the logic about how to detect the service hierarchy structure. All those should be in a
separate SWIP.
Beta Was this translation helpful? Give feedback.
All reactions