-
Notifications
You must be signed in to change notification settings - Fork 189
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
Rename cloud.platform
to cloud.service.name
#344
Conversation
service.name is something completely different from cloud.platform (proposed cloud.service.name). IMHO this renaming is confusing. |
I also prefer @kaiyan-sheng I'd recommend raising this PR in next week's semconv group since we've been discussing there what to do in case of conflict between ECS and OpenTelemetry naming. |
I don't think the co-existence of However, in my opinion the term "platform" is unfortunate too, as without reading the attribute description I'd think it refers to the cloud provider. "Service" seems to me a more appropriate name of what we want to capture in this attribute. From Wikipedia:
From What is Azure?:
From the description of https://aws.amazon.com:
|
I don't fully get that concern. Do you mean that Following that logic, the attribute Important clarification in this context:I think some of the confusion comes also from the fact that ECS'
So I think the general question is: Do we want to allow attribute names to be used as resource attributes AND signal-level attributes depending on the context or not? If yes, IMHO replacing |
Not sure if it's far fetched or even part of other's concerns, but I can see maybe people that are now familiar with I don't think having Different from ECS, but another idea could be: |
What do you think about that aspect?:
If we keep |
About using resource attributes as signal attributes is something that we need to further discuss and assess probably. I haven't thought much of the possible implications with it. For the other scenarios, like the log collection, maybe there could be a "source" attribute to denote where the log comes from. For the other, I'm not sure maybe there's value in adding such attributes but I usually suspect people already know where their things are coming from? Also, vendor-specific attributes exist like the ones for AWS s3 and instrumentations of such providers could also add their own things. Not sure that's something us as semconv should do here. |
@AlexanderWert For a signal-level attribute, we would use rpc.service I think. This is what we did for AWS at least, and it feels quite natural to me: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/cloud-providers/aws-sdk.md |
@Oberon00 I agree that A very simple use case / example: Don't get me wrong, I'm not pushing for the rename of the
|
@AlexanderWert There already is the quite old (and unsolved) open-telemetry/opentelemetry-specification#1367 that touches the topic from the other way round: using signal-specific attributes as resource attributes. |
@AlexanderWert Why do you think that rpc.service would only make sense for tracing? I think it should just as well make sense for other signal types.
If that name is rpc.service, it will also work, won't it? cloud.platform on the resource means: This traced service / process is running on that cloud platform (e.g. this is an AWS Lambda function). On the other hand the signal-level cloud service will mean "this relates to a call to this cloud service" (typically on the client side, but in principle also possibly on the server side). These are different things semantically. You will very typically have a cloud.platform that is different from the rpc.service when calling a cloud service, e.g. something running on cloud.platform aws_ec2 might be calling into rpc.service awslambda. If both are called cloud.service.name, then you have a name collision (at least as far as I know, most backends will have trouble with dealing with overlapping signal/resource attributes or simply override in a particular direction and AFAIK it is even an open spec point if resources + signal attributes are logically in the same "object" or should be distinguishable sematically) |
Agree with these challenges! At the same time there are several examples where reusing attribute names for resource and normal attributes would make sense (also some listed here: open-telemetry/opentelemetry-specification#1367). And that's why I think we should discuss it and make it explicit (allow or disallow). But let's maybe move the discussion on this topic to new, separate issue. |
Ok, so this would apply e.g. when you have a solution that actively queries, for example metrics, from dynamodb but not related to particular calls? I think this scenario has been outside the scope of OTel so far... |
Thanks everyone for the comment. In elastic, we have integrations that collects metrics and logs from cloud providers like AWS, GCP and Azure. For example, metrics about s3 bucket would have
@trask Sorry Im on vacation next week but I can definitely raise it the week after! Thanks! |
@Oberon00 I don't think we explicitly discussed this, yet, but it's described on a high level in the OTEP for the ECS merger. To make OTel the ubiquitous framework and standard for observability I think these use cases (as @kaiyan-sheng outlined in #344 (comment)) is something we should include into the scope for OpenTelemetry in the future. And that's also the big value proposition of merging ECS with semconv as it covers many of these use cases. |
Just to note, I agree that service.platform is not a particularly good name, especially if we use it for non-compute services (platform is somewhat better when something runs "on" it, like AWS Lambda being the platform where you deploy your service). Maybe it would make sense to have all 3:
For example, imagine you are instrumenting something part of DynamoDB (new attribute) itself making a call to CloudWatch (rpc.service) and it runs on EC2 (cloud.platform). On second thought... For that 3rd use case, why can't we just use the existing |
Thank you all for your inputs!! Sorry I misunderstood the field Instead of renaming |
Changes
This PR is to rename
cloud.platform
field name tocloud.service.name
which is from ECS: https://www.elastic.co/guide/en/ecs/current/ecs-cloud.html#field-cloud-service-name. These two fields represent the same thing butcloud.service.name
is more readable IMHO.cc @AlexanderWert @ChrsMark
Merge requirement checklist