-
Notifications
You must be signed in to change notification settings - Fork 418
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
Add service node name #538
Comments
Few questions:
If we introduce |
By "instance", do you mean a host? If so, I would recommend using the following:
Or are you trying to capture information about distinct processes, since the JVM can run more than once on a given host. |
Yes! There are cases where multiple JVMs of the same service are installed on the same host, eg for redundancy purposes, so that you can restart one without affecting the service uptime. We have two problems with using the hostname- one is uniqueness (as described above) and the other is meaningfulness. The |
I initially thought
We faced a similar challenge with monitoring Elasticsearch. You might have multiple Elasticsearch cluster and each has it's own We already use Line 40 in 34b391c
service.instance.id and service.instance.name . It might also be that we need instance.ephemeral_id in addition like we have for the agent: Line 63 in 34b391c
@eyalkoren What happens on restart, will the id stay the same? |
This one- yes, that's its purpose. It makes sense to add |
+1 one from my side to move to the PR stage :-) |
|
This seems to fit any case of a service that is scaled out (not sure why this is APM-specific), so if we think about it as a service cluster, |
So the proposal is to add the following, correct?
I would like to know how these will be populated. What's user-provided & what's derived automatically. In your implementation, will you be using all 3? I think I'm not sure if we need to make the distinction already between On how to name this, I think both |
Makes sense? |
All 3 explanations make sense, thank you. However you're saying that APM currently intends to use only The other two also sound like good ideas in theory, but if there's no concrete usage for them, I don't think they belong in the schema. It's very easy to add things over time (as we need them), but it's much tricker to remove or modify something that's already in. The latter is what risks happening if we add fields we don't intend to use. |
If we go with @eyalkoren It sounds like you want to use |
On the one hand we want it to be unique, on the other hand we want to make it human-readable, so both are not a 100% fit, but that's not a problem- we can add our own restrictions/instructions on those, as long as we don't violate the ECS definitions, right? Essentially, it is a name, something we want to be meaningful, but a unique name. |
Instance is generic, it's only meaningful when attached to something, like "service". Seems fine to me, except as others have pointed out we have "cloud.instance", which isn't really the same thing. i.e. it's not an instance of a cloud, but it's a VM instance within a cloud.
What do you mean by app server? Something like WebLogic? That won't carry across to the example of Elasticsearch node ID. Not sure I understand what you're referring to though.
Node seems reasonable to me, since it's a pretty common term in clustering, which I think is essentially what we're talking about here. |
OK, let's start with |
From the description of
To me this reads contradicting. On the one hand the When adding |
Whenever a
service
is composed of multiple instances, there may be a need to distinguish between them for filtering and aggregation purposes.The context for this issue is elastic/kibana#43765 - a service (eg a web application) may be composed from multiple instances. In APM, we recently introduced dedicated UI for showing JVM specific metrics. Currently, in order to drill down to see specific JVMs, you would need to use the query bar with other fields, that do not always guarantee uniqueness of JVMs (ie service instances). We now want to further enhance the Metrics feature and provide better options for drilling down to individual JVMs. For this purpose, we want to store a unique service instance name.
We are already using the
agent
fields and in terms of data-correctness we could useagent.id
, but it doesn't really reflect the meaning of that field, which is naming the service instance, and not the agent, so we are not keen on using that. Besides, service instance fields may be valid for agent-less scenarios as well.Would adding
service.instance.name
be proper? If so, I assume it would make sense to addservice.instance.id
as well, but we currently only need the name (we are going to require uniqueness, but it should be a human readable name, therefore - a name rather than an ID).The text was updated successfully, but these errors were encountered: