-
Notifications
You must be signed in to change notification settings - Fork 116
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 spec for instrumenting Azure services #426
Add spec for instrumenting Azure services #426
Conversation
This commit introduces a spec to start capturing details specific to instrumenting Azure services.
💚 Build Succeeded
Expand to view the summary
Build stats
Trends 🧪 |
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.
Document how the context.destination.service.resource
is defined. There's some high-level definition in the messaging spec but I think it makes sense to be more concrete here and use the Azure service bus-specific names. For example, is it the topic or the queue name?
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.
This is WONDERUL, @russcam! 👏
This commit adds additional blob rules that have been derived from the .NET SDK.
| --------- | --------- | ------ | ----- | ------- | | ||
| `context.destination.address` | yes | URL scheme and host | | `https://namespace.servicebus.windows.net/` | | ||
| `context.destination.service.name` | yes | azureservicebus | | | | ||
| `context.destination.service.resource` | yes | azureservicebus/`<Queue>`\|`<Topic and Subscription>` | | `azurequeue/myqueue`, `azureservicebus/mytopic/Subscriptions/mysubscription` | |
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.
Can we use the same rule as for regular queues? "azureservicebus/$context.message.queue.name"
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.
Messages can be sent either to a queue or to a topic.
Is context.destination.service.resource
just used in the service map UI? Depending on the level of granularity desired, perhaps the Service bus namespace might be a good contender for context.destination.service.resource
? If so, would we still want to capture queue or topic separately?
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.
It's mainly used for the service map and the dependencies table. Also, the APM Server rolls up metrics with the resource as a dimension. See also #435.
|
||
| APM field | Required? | Format | Notes | Example | | ||
| --------- | --------- | ------ | ----- | ------- | | ||
| `span.name` | yes | `AzureBlob <OperationName> <ResourceName>` | Pascal case Operation name | `AzureBlob Upload foo/bar/baz` | |
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.
@felixbarny thoughts on excluding the <ResourceName>
from the span name? If it were to be removed, is there another appropriate field to capture it?
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.
Random thought: The Azure Blob container is perhaps close to the equivalent of the bucket name that is spec'd to be used in the span.name
for S3 instrumentation. However, IIUC there could, at least theoretically, be a cardinality issue with that because Azure documents that a "storage account can include an unlimited number of containers", where as, AWS limits to 100 buckets to start (which can be raised to 1000).
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.
container is pretty much Azure's bucket 😄 If AWS spec uses bucket in the span name, it seems reasonable to use container in the span name, where applicable
|
||
| APM field | Required? | Format | Notes | Example | | ||
| --------- | --------- | ------ | ----- | ------- | | ||
| `span.name` | yes | `AzureTable <OperationName> <ResourceName>` | Pascal case Operation name | `AzureTable Insert tablename` | |
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.
@felixbarny thoughts on excluding the <ResourceName>
from the span name? If it were to be removed, is there another appropriate field to capture it?
|
||
| APM field | Required? | Format | Notes | Example | | ||
| --------- | --------- | ------ | ----- | ------- | | ||
| `span.name` | yes | `AzureFile <OperationName> <ResourceName>` | Pascal case Operation name | `AzureFile Create directoryname` | |
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.
@felixbarny thoughts on excluding the <ResourceName>
from the span name? If it were to be removed, is there another appropriate field to capture it?
|
This commit updates context.destination.address to use just the URL host
Relates: elastic/apm#426 (cherry picked from commit 0d1ba83)
Last call to review/comment on this PR. If there are none received in the next 24 hours, I'll be merging in. |
This commit introduces a spec to start capturing details specific to instrumenting Azure services.
Relates: elastic/apm-agent-dotnet#1225
This PR introduces a spec to start capturing details specific to instrumenting Azure services.