-
Notifications
You must be signed in to change notification settings - Fork 6
Fix for missing external connections #1144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
# The logic of what shapes of addresses are considered FQDNs should match 'transform/istio-metric-datapoints'. | ||
# Also, Beyla prefers filling 'client.address' and 'server.address' attributes with OTEL Service name (or name + k8s namespace) instead of an actual FQDN, when possible. This makes their values useless for us because they would create fake FQDNs. | ||
# - set(datapoint.attributes["dest.sw.server.address.fqdn"], datapoint.attributes["server.address"]) where IsMatch(metric.name, "^http\\.client\\.") and datapoint.attributes["sw.k8s.dst.workload.type"] == nil and IsMatch(datapoint.attributes["server.address"], "^(https?://)?[a-zA-Z0-9][-a-zA-Z0-9]*\\.[a-zA-Z0-9][-a-zA-Z0-9\\.]*(:\\d+)?$") and not(IsMatch(datapoint.attributes["server.address"], ".*\\.cluster\\.local$")) and not(IsMatch(datapoint.attributes["server.address"], "^(https?://)?\\d+\\.\\d+\\.\\d+\\.\\d+(:\\d+)?$")) | ||
- set(datapoint.attributes["dest.sw.server.address.fqdn"], datapoint.attributes["server.address"]) where IsMatch(metric.name, "^http\\.client\\.") and datapoint.attributes["sw.k8s.dst.workload.type"] == nil and IsMatch(datapoint.attributes["server.address"], "^(https?://)?[a-zA-Z0-9][-a-zA-Z0-9]*\\.[a-zA-Z0-9][-a-zA-Z0-9\\.]*(:\\d+)?$") and not(IsMatch(datapoint.attributes["server.address"], ".*\\.cluster\\.local$")) and not(IsMatch(datapoint.attributes["server.address"], "^(https?://)?\\d+\\.\\d+\\.\\d+\\.\\d+(:\\d+)?$")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What will this do when the address is some.address
, where some
is an OTEL service and address
is an OTEL namespace of the service?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, if you are checking for .cluster.local
, you might also want to check for .cluster.local.
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Additionally, for new workloads, sw.k8s.dst.workload.type
might be temporary empty until k8s workload metadata cache gets updated. Or the swok8sworkloadtype
processor may not be configured to look for that kind of a k8s object. In that case server.address
may contain basically anything, including k8s workloads.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What will this do when the address is some.address, where some is an OTEL service and address is an OTEL namespace of the service?
As far as I know this is not the concern ashttp.client.*
metrics do not follow identification semantics, so OTEL Service will never get toserver.address
attribute. That identification semantics is applied only onhttp.server.*
andclient.address
attribute (my assumption is based on observed behavior)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, if you are checking for .cluster.local, you might also want to check for .cluster.local..
Fixed
Additionally, for new workloads, sw.k8s.dst.workload.type might be temporary empty until k8s workload metadata cache gets updated. Or the swok8sworkloadtype processor may not be configured to look for that kind of a k8s object. In that case server.address may contain basically anything, including k8s workloads.
It is very unlikely thatserver.address
will be filled with some new workload name beforeswok8sworkloadtype
has that in cache, that would mean that beyla catched that new workload much earlier thenswok8sworkloadtype
(beyla needs to cache the workload and wait for next metric reporting interval), although it is teoretically possible. But I wouldn't block this PR with this.
No description provided.