From d8fba3b537de71ff53bb34d1b4e4f51645179ba0 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Wed, 24 Mar 2021 16:34:27 +1000 Subject: [PATCH 01/10] Add spec for instrumenting Azure services This commit introduces a spec to start capturing details specific to instrumenting Azure services. --- specs/agents/tracing-instrumentation-azure.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 specs/agents/tracing-instrumentation-azure.md diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md new file mode 100644 index 00000000..3f2e588b --- /dev/null +++ b/specs/agents/tracing-instrumentation-azure.md @@ -0,0 +1,40 @@ +## Azure services spans + +We describe how to instrument some of Azure's services in this document. +Some of the services can use existing specs. When there are differences or additions, they have been noted below. + +### Azure Service Bus + +Azure Service Bus is a message broker service. The [messaging spec](tracing-instrumentation-messaging.md) can +be used for instrumenting Azure Service Bus, but the follow specifications supersede those of the messaging spec. + +#### Typing + +- Spans: + - `span.subtype`: `azureservicebus` + +#### Additional actions + +Azure Service Bus supports actions that should be traced in addition to `SEND` and `RECEIVE`: + +- `SCHEDULE` + + Message published to the bus, but not visible until some later point. + +- `RECEIVEDEFERRED` + + Message received from the bus, but marked as deferred on the bus, then later retrieved with receive deferred. + +#### Naming + +Messages can be sent to queues and topics, and can be received from queues and topic subscriptions. + +Transaction and span names should* follow these patterns: + +For send and schedule, + +`AzureServiceBus SEND|SCHEDULE to |` + +For receive and receive deferred, + +`AzureServiceBus RECEIVE|RECEIVEDEFERRED from |/Subscriptions/` From 54654d32415f1265a4b56acfd94ec1484d941b69 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Wed, 14 Apr 2021 17:09:13 +1000 Subject: [PATCH 02/10] Add specs for Azure blob and queue storage --- specs/agents/tracing-instrumentation-azure.md | 203 +++++++++++++++++- 1 file changed, 198 insertions(+), 5 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 3f2e588b..b2e8f905 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -1,19 +1,212 @@ -## Azure services spans +# Azure services spans We describe how to instrument some of Azure's services in this document. Some of the services can use existing specs. When there are differences or additions, they have been noted below. -### Azure Service Bus + +---- + +**NOTE**: +Azure Storage can be run as part of [Azure Stack](https://azure.microsoft.com/en-au/overview/azure-stack/). Azure services cannot be inferred from Azure Stack HTTP service endpoints. + +---- + +## Azure Storage + +Azure Storage is a collection of storage services, accessed through a +Storage account. The services include + +- Blob storage +- Queue storage +- File share storage +- Table storage + +A storage account is created in an Azure location (_region_), but the +location is not discoverable through REST API calls. + +### Blob storage + +Object storage for binary and text data via a REST API. There are three types of blobs: block blobs, page blobs and append blobs. + +Blobs are organized into containers, where a container can contain an +unlimited number of blobs, and a storage account can contain an unlimited +number of containers. Although blob storage is a flat storage scheme +(only one level of containers), blob names can include path segments (`/`), +providing a _virtual_ hierarchy. + +A resource name is the full name of the container and blob. For example, Given container `foo` and blob `bar/baz`, the resource name +is `foo/bar/baz`. + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `span.name` | yes | `AzureBlob ` | Pascal case Operation name | `AzureBlob Upload foo/bar/baz` | +| `span.type` | yes | `storage` | | | +| `span.subtype` | yes | `azureblob` | | | +| `span.action` | yes | `` | Pascal case | `Upload` | + +#### Span context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.destination.address` | yes | URL scheme and host | | `https://accountname.blob.core.windows.net/` | +| `context.destination.service.name` | yes | `azureblob` | | | +| `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/foo/bar` | +| `context.destination.service.type` | yes | `storage` | | | + + +#### Determining operations + +There are [_many_ blob storage operations](https://docs.microsoft.com/en-us/rest/api/storageservices/operations-on-blobs). + +Azure service endpoints for blob storage have one of the following host names + +| Cloud | Azure Service Endpoint | +| ----- | ---------------------- | +| Azure Global | `.blob.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.blob.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.blob.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.blob.core.cloudapi.de` | + +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. + +Rules derived from the [Blob service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api) + +| HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | +| --------- | ---------- | ------------------- | ------------------------ | +| DELETE | | | Delete | +| GET | | `restype=container` | GetProperties | +| GET | | `comp=metadata` | GetMetadata | +| GET | | `restype=container` and `comp=acl` | GetAcl | +| GET | | `restype=container` and `comp=list` | ListBlobs | +| GET | | `comp=list` | ListContainers | +| GET | | `comp=tags` | GetTags | +| GET | | `comp=tags` and `where=` | FindTags | +| GET | | `comp=blocklist` | Download | +| GET | | | Download | +| GET | | `comp=pagelist` | GetPageRanges | +| HEAD | | | GetProperties | +| HEAD | | `restype=container` and `comp=metadata` | GetMetadata | +| HEAD | | `restype=container` and `comp=acl` | GetAcl | +| POST | | `comp=batch` | Batch | +| POST | | `comp=query` | Query | +| PUT | `x-ms-copy-source` | | Copy | +| PUT | `x-ms-copy-source` | `comp=block` | Copy | +| PUT | `x-ms-copy-source` | `comp=page` | Copy | +| PUT | `x-ms-copy-source` | `comp=incrementalcopy` | Copy | +| PUT | `x-ms-copy-source` | `comp=appendblock` | Copy | +| PUT | | `comp=copy` | Abort | +| PUT | `x-ms-blob-type` | | Upload | +| PUT | | `comp=block` | Upload | +| PUT | | `comp=blocklist` | Upload | +| PUT | | `comp=page` | Upload | +| PUT | | `comp=appendblock` | Upload | +| PUT | | | Create | +| PUT | | `comp=metadata` | SetMetadata | +| PUT | | `restype=container` and `comp=acl` | SetAcl | +| PUT | | `comp=properties` | SetProperties | +| PUT | | `comp=lease` | Lease | +| PUT | | `comp=snapshot` | Snapshot | +| PUT | | `comp=undelete` | Undelete | +| PUT | | `comp=tags` | SetTags | +| PUT | | `comp=tier` | SetTier | +| PUT | | `comp=expiry` | SetExpiry | + +### Queue storage + +Queue storage allows sending and receiving messages that may be read by any +client who has access to the storage account. Messages are sent to and received from queues. + +The [messaging spec](tracing-instrumentation-messaging.md) can +be used for instrumenting Queue storage, with the following additions superseding the messaging spec. + +A new span is created when there is a current transaction, and when a message is sent to a queue + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `span.name` | yes | `AzureQueue to ` | Upper case Operation name | `AzureQueue SEND to queuename` | +| `span.type` | yes | `messaging` | | | +| `span.subtype` | yes | `azurequeue` | | | +| `span.action` | yes | `` | lower case | `send` | + +#### Span context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.destination.address` | yes | URL scheme and host | | `https://accountname.queue.core.windows.net/` | +| `context.destination.service.name` | yes | `azurequeue` | | | +| `context.destination.service.resource` | yes | `azurequeue/` | | `azurequeue/queuename` | +| `context.destination.service.type` | yes | `messaging` | | | + +---- + +A new transaction is created when one or more messages are received from a queue + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `transaction.name` | yes | `AzureQueue from ` | Upper case Operation name | `AzureQueue RECEIVE from queuename` | +| `transaction.type` | yes | `messaging` | | | + + +#### Transaction context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.service.framework` | yes | `AzureQueue` | | | + +#### Determining operations + +Azure service endpoints for queue storage have one of the following host names + +| Cloud | Azure Service Endpoint | +| ----- | ---------------------- | +| Azure Global | `.queue.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.queue.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.queue.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.queue.core.cloudapi.de` | + +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. + +Rules derived from the [Queue service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) + +| URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | +| --- | --------- | ---------- | ------------------- | ------------------------ | +| | GET | | `comp=list` | LISTQUEUES | +| | GET | | `comp=properties` | GETPROPERTIES | +| | GET | | `comp=stats` | STATS | +| | GET | | `comp=metadata` | GETMETADATA | +| | GET | | `comp=acl` | GETACL | +| | GET | | | RECEIVE | +| | GET | | `peekonly=true` | PEEK | +| | PUT | | `comp=acl` | SETACL | +| | PUT | | `comp=properties` | SETPROPERTIES | +| | PUT | | | CREATE | +| | PUT | | `comp=metadata` | SETMETADATA | +| | PUT | | `popreceipt=`| UPDATE | +| | POST | | | SEND | +| | DELETE | | | DELETE | +| ends with `/messages` | DELETE | | | CLEAR | +| | DELETE | | `popreceipt=`| DELETE | +| | OPTIONS | | | PREFLIGHT | +| | HEAD | | `comp=metadata` | GETMETADATA | +| | HEAD | | `comp=acl` | GETACL | + + +### Table storage + +### File share storage + + +## Azure Service Bus Azure Service Bus is a message broker service. The [messaging spec](tracing-instrumentation-messaging.md) can be used for instrumenting Azure Service Bus, but the follow specifications supersede those of the messaging spec. -#### Typing +### Typing - Spans: - `span.subtype`: `azureservicebus` -#### Additional actions +### Additional actions Azure Service Bus supports actions that should be traced in addition to `SEND` and `RECEIVE`: @@ -25,7 +218,7 @@ Azure Service Bus supports actions that should be traced in addition to `SEND` a Message received from the bus, but marked as deferred on the bus, then later retrieved with receive deferred. -#### Naming +### Naming Messages can be sent to queues and topics, and can be received from queues and topic subscriptions. From 33911c663ca1597635b274fd5a3f5f9e21f9e2ea Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Thu, 15 Apr 2021 15:04:59 +1000 Subject: [PATCH 03/10] Add table and file share storage --- specs/agents/tracing-instrumentation-azure.md | 165 ++++++++++++++++-- 1 file changed, 153 insertions(+), 12 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index b2e8f905..424c3065 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -69,7 +69,8 @@ Azure service endpoints for blob storage have one of the following host names where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. -Rules derived from the [Blob service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api) +Rules derived from the [Blob service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api). The rules determine the operation name based +on the presence of data in the HTTP request | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | | --------- | ---------- | ------------------- | ------------------------ | @@ -170,6 +171,9 @@ Rules derived from the [Queue service REST API reference](https://docs.microsoft | URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | | --- | --------- | ---------- | ------------------- | ------------------------ | +| | DELETE | | | DELETE | +| ends with /messages | DELETE | | | CLEAR | +| | DELETE | | `popreceipt=`| DELETE | | | GET | | `comp=list` | LISTQUEUES | | | GET | | `comp=properties` | GETPROPERTIES | | | GET | | `comp=stats` | STATS | @@ -177,30 +181,167 @@ Rules derived from the [Queue service REST API reference](https://docs.microsoft | | GET | | `comp=acl` | GETACL | | | GET | | | RECEIVE | | | GET | | `peekonly=true` | PEEK | +| | HEAD | | `comp=metadata` | GETMETADATA | +| | HEAD | | `comp=acl` | GETACL | +| | OPTIONS | | | PREFLIGHT | +| | POST | | | SEND | | | PUT | | `comp=acl` | SETACL | | | PUT | | `comp=properties` | SETPROPERTIES | | | PUT | | | CREATE | | | PUT | | `comp=metadata` | SETMETADATA | | | PUT | | `popreceipt=`| UPDATE | -| | POST | | | SEND | -| | DELETE | | | DELETE | -| ends with `/messages` | DELETE | | | CLEAR | -| | DELETE | | `popreceipt=`| DELETE | -| | OPTIONS | | | PREFLIGHT | -| | HEAD | | `comp=metadata` | GETMETADATA | -| | HEAD | | `comp=acl` | GETACL | - ### Table storage +The Table service offers non-relational schema-less structured storage in the +form of tables. It is a popular service due to its cost-to-capability, though +messaging in recent years from Microsoft has deprecated Table storage and encouraged +the use of CosmosDB and its Table storage compatible API. + +Tables store data as a collection of entities, where an entity is a collection of properties. +Entities are similar to rows and properties are similar to columns. + +`` is the name of the resource in the form of the table, or the table and partition key and row key of an entity. For example, + +- tablename +- tablename(PartitionKey='partitionkey', RowKey='rowkey') + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `span.name` | yes | `AzureTable ` | Pascal case Operation name | `AzureTable Insert tablename` | +| `span.type` | yes | `storage` | | | +| `span.subtype` | yes | `azuretable` | | | +| `span.action` | yes | `` | Pascal case | `Insert` | + +#### Span context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.destination.address` | yes | URL scheme and host | | `https://accountname.table.core.windows.net/` | +| `context.destination.service.name` | yes | `azuretable` | | | +| `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/foo` | +| `context.destination.service.type` | yes | `storage` | | | + +#### Determining operations + +Azure service endpoints for table storage have one of the following host names + +| Cloud | Azure Service Endpoint | +| ----- | ---------------------- | +| Azure Global | `.table.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.table.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.table.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.core.cloudapi.de` | + +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. + +Rules derived from the [Table service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/table-service-rest-api) + +| URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | +| --- | --------- | ---------- | ------------------- | ------------------------ | +| | PUT | | `comp=properties` | SetProperties | +| | GET | | `comp=properties` | GetProperties | +| | GET | | `comp=stats` | Stats | +| ends with /Tables | GET | | | Query | +| ends with /Tables | POST | | | Create | +| ends with /Tables('``') | DELETE | | | Delete | +| ends with /`
` | OPTIONS | | | Preflight | +| | HEAD | | `comp=acl` | GetAcl | +| | GET | | `comp=acl` | GetAcl | +| | PUT | | `comp=acl` | SetAcl | +| ends with /`
`() or /`
`(PartitionKey='``',RowKey='``')` | GET | | | Query | +| ends with /`
` | POST | | | Insert | +| ends with /`
`(PartitionKey='``',RowKey='``')` | PUT | | | Update | +| ends with /`
`(PartitionKey='``',RowKey='``')` | MERGE | | | Merge | +| ends with /`
`(PartitionKey='``',RowKey='``')` | DELETE | | | Delete | + ### File share storage +Azure file service (known also as AFS or file share storage) is a managed file share service +that uses Server Message Block (SMB) protocol or Network File System (NFS) protocol +to provide general purpose file shares. File shares can be mounted concurrently by +machines in the cloud or on-premises. + +The `` is determined from the path of the URL. + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `span.name` | yes | `AzureFile ` | Pascal case Operation name | `AzureFile Create directoryname` | +| `span.type` | yes | `storage` | | | +| `span.subtype` | yes | `azurefile` | | | +| `span.action` | yes | `` | Pascal case | `Insert` | + +#### Span context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.destination.address` | yes | URL scheme and host | | `https://accountname.file.core.windows.net/` | +| `context.destination.service.name` | yes | `azurefile` | | | +| `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/foo` | +| `context.destination.service.type` | yes | `storage` | | | + +#### Determining operations + +Azure service endpoints for file share storage have one of the following host names + +| Cloud | Azure Service Endpoint | +| ----- | ---------------------- | +| Azure Global | `.file.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.file.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.file.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.file.cloudapi.de` | + +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. + +Rules derived from the [File service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api). + +| URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | +| --- | --------- | ---------- | ------------------- | ------------------------ | +| | GET | | `comp=list` | List | +| | GET | | `comp=list` | List | +| | PUT | | `comp=properties` | SetProperties | +| | GET | | `comp=properties` | GetProperties | +| ends with /`` | OPTIONS | | | Preflight | +| | PUT | | | Create | +| | PUT | | `comp=snapshot` | Snapshot | +| | PUT | | `restype=share` and `comp=properties` | SetProperties | +| | GET | | `restype=share` | GetProperties | +| | HEAD | | `restype=share` | GetProperties | +| | GET | | `comp=metadata` | GetMetadata | +| | HEAD | | `comp=metadata` | GetMetadata | +| | PUT | | `comp=metadata` | SetMetadata | +| | DELETE | | | Delete | +| | PUT | | `comp=undelete` | Undelete | +| | HEAD | | `comp=acl` | GetAcl | +| | GET | | `comp=acl` | GetAcl | +| | PUT | | `comp=acl` | SetAcl | +| | GET | | `comp=stats` | Stats | +| | GET | | `comp=filepermission` | GetPermission | +| | PUT | | `comp=filepermission` |SetPermission | +| | PUT | | `restype=directory` | Create | +| | GET | | `comp=listhandles` | ListHandles | +| | PUT | | `comp=forceclosehandles` | CloseHandles | +| | GET | | | Download | +| | HEAD | | | GetProperties | +| | PUT | | `comp=range` | Upload | +| | PUT | `x-ms-copy-source` | | Copy | +| | PUT | `x-ms-copy-action:abort` | `comp=copy` | Abort | +| | GET | | `comp=rangelist` | ListRanges | +| | PUT | | `comp=lease` | Lease | + ## Azure Service Bus Azure Service Bus is a message broker service. The [messaging spec](tracing-instrumentation-messaging.md) can be used for instrumenting Azure Service Bus, but the follow specifications supersede those of the messaging spec. +Azure Service Bus can use the following protocols + +- Advanced Message Queuing Protocol 1.0 (AMQP) +- Hypertext Transfer Protocol 1.1 with TLS (HTTPS) + +The offical Azure SDKs generally use AMQP for sending and receiving messages. + ### Typing - Spans: @@ -222,12 +363,12 @@ Azure Service Bus supports actions that should be traced in addition to `SEND` a Messages can be sent to queues and topics, and can be received from queues and topic subscriptions. -Transaction and span names should* follow these patterns: +Transaction and span names *should* follow these patterns: For send and schedule, -`AzureServiceBus SEND|SCHEDULE to |` +- AzureServiceBus SEND|SCHEDULE to ``|`` For receive and receive deferred, -`AzureServiceBus RECEIVE|RECEIVEDEFERRED from |/Subscriptions/` +- AzureServiceBus RECEIVE|RECEIVEDEFERRED from ``|``/Subscriptions/`` From 66c76afe646ce1f4a805e5ab1212f2372d24e664 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Thu, 15 Apr 2021 15:34:08 +1000 Subject: [PATCH 04/10] PR feedback --- specs/agents/tracing-instrumentation-azure.md | 106 ++++++++++++------ 1 file changed, 69 insertions(+), 37 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 424c3065..70f2b6c6 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -295,39 +295,39 @@ where `` is the name of the storage account. New Azure service endpoint Rules derived from the [File service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api). -| URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | -| --- | --------- | ---------- | ------------------- | ------------------------ | -| | GET | | `comp=list` | List | -| | GET | | `comp=list` | List | -| | PUT | | `comp=properties` | SetProperties | -| | GET | | `comp=properties` | GetProperties | -| ends with /`` | OPTIONS | | | Preflight | -| | PUT | | | Create | -| | PUT | | `comp=snapshot` | Snapshot | -| | PUT | | `restype=share` and `comp=properties` | SetProperties | -| | GET | | `restype=share` | GetProperties | -| | HEAD | | `restype=share` | GetProperties | -| | GET | | `comp=metadata` | GetMetadata | -| | HEAD | | `comp=metadata` | GetMetadata | -| | PUT | | `comp=metadata` | SetMetadata | -| | DELETE | | | Delete | -| | PUT | | `comp=undelete` | Undelete | -| | HEAD | | `comp=acl` | GetAcl | -| | GET | | `comp=acl` | GetAcl | -| | PUT | | `comp=acl` | SetAcl | -| | GET | | `comp=stats` | Stats | -| | GET | | `comp=filepermission` | GetPermission | -| | PUT | | `comp=filepermission` |SetPermission | -| | PUT | | `restype=directory` | Create | -| | GET | | `comp=listhandles` | ListHandles | -| | PUT | | `comp=forceclosehandles` | CloseHandles | -| | GET | | | Download | -| | HEAD | | | GetProperties | -| | PUT | | `comp=range` | Upload | -| | PUT | `x-ms-copy-source` | | Copy | -| | PUT | `x-ms-copy-action:abort` | `comp=copy` | Abort | -| | GET | | `comp=rangelist` | ListRanges | -| | PUT | | `comp=lease` | Lease | +| URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | +| --- | --------- | ---------- | -------------------- | ------------------------- | +| | GET | | `comp=list` | List | +| | GET | | `comp=list` | List | +| | PUT | | `comp=properties` | SetProperties | +| | GET | | `comp=properties` | GetProperties | +| ends with /`` | OPTIONS | | | Preflight | +| | PUT | | | Create | +| | PUT | | `comp=snapshot` | Snapshot | +| | PUT | | `restype=share` and `comp=properties` | SetProperties | +| | GET | | `restype=share` | GetProperties | +| | HEAD | | `restype=share` | GetProperties | +| | GET | | `comp=metadata` | GetMetadata | +| | HEAD | | `comp=metadata` | GetMetadata | +| | PUT | | `comp=metadata` | SetMetadata | +| | DELETE | | | Delete | +| | PUT | | `comp=undelete` | Undelete | +| | HEAD | | `comp=acl` | GetAcl | +| | GET | | `comp=acl` | GetAcl | +| | PUT | | `comp=acl` | SetAcl | +| | GET | | `comp=stats` | Stats | +| | GET | | `comp=filepermission` | GetPermission | +| | PUT | | `comp=filepermission` |SetPermission | +| | PUT | | `restype=directory` | Create | +| | GET | | `comp=listhandles` | ListHandles | +| | PUT | | `comp=forceclosehandles` | CloseHandles | +| | GET | | | Download | +| | HEAD | | | GetProperties | +| | PUT | | `comp=range` | Upload | +| | PUT | `x-ms-copy-source` | | Copy | +| | PUT | `x-ms-copy-action:abort` | `comp=copy` | Abort | +| | GET | | `comp=rangelist` | ListRanges | +| | PUT | | `comp=lease` | Lease | ## Azure Service Bus @@ -344,8 +344,40 @@ The offical Azure SDKs generally use AMQP for sending and receiving messages. ### Typing -- Spans: - - `span.subtype`: `azureservicebus` +A new span is created when there is a current transaction, and when a message is sent or scheduled to a queue or topic subscription + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `span.name` | yes | `AzureServiceBus to ` | Upper case Operation name | `AzureServiceBus SEND to queuename` | +| `span.type` | yes | `messaging` | | | +| `span.subtype` | yes | `azureservicebus` | | | +| `span.action` | yes | `` | lower case | `send` | + +#### Span context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `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/``\|`` | | `azurequeue/myqueue`, `azureservicebus/mytopic/Subscriptions/mysubscription` | +| `context.destination.service.type` | yes | `messaging` | | | + +---- + +A new transaction is created when one or more messages are received or receive deferred from a queue + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `transaction.name` | yes | AzureServiceBus `` from ``\|`` | Upper case Operation name | `AzureServiceBus RECEIVE from queuename` | +| `transaction.type` | yes | `messaging` | | | + + +#### Transaction context fields + +| APM field | Required? | Format | Notes | Example | +| --------- | --------- | ------ | ----- | ------- | +| `context.service.framework` | yes | `AzureServiceBus` | | | + ### Additional actions @@ -367,8 +399,8 @@ Transaction and span names *should* follow these patterns: For send and schedule, -- AzureServiceBus SEND|SCHEDULE to ``|`` +- AzureServiceBus SEND|SCHEDULE to ``|`` For receive and receive deferred, -- AzureServiceBus RECEIVE|RECEIVEDEFERRED from ``|``/Subscriptions/`` +- AzureServiceBus RECEIVE|RECEIVEDEFERRED from ``|``/Subscriptions/`` From 559b2378a676a9281e13aa6771a0cefdfd338ac6 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Mon, 19 Apr 2021 20:46:20 +1000 Subject: [PATCH 05/10] Add additional blob rules This commit adds additional blob rules that have been derived from the .NET SDK. --- specs/agents/tracing-instrumentation-azure.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 70f2b6c6..1fe748e7 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -85,22 +85,25 @@ on the presence of data in the HTTP request | GET | | `comp=blocklist` | Download | | GET | | | Download | | GET | | `comp=pagelist` | GetPageRanges | +| GET | | `comp=stats` | Stats | +| GET | | `comp=blobs` | FilterBlobs | | HEAD | | | GetProperties | | HEAD | | `restype=container` and `comp=metadata` | GetMetadata | | HEAD | | `restype=container` and `comp=acl` | GetAcl | | POST | | `comp=batch` | Batch | | POST | | `comp=query` | Query | +| POST | | `comp=userdelegationkey` | GetUserDelegationKey | | PUT | `x-ms-copy-source` | | Copy | | PUT | `x-ms-copy-source` | `comp=block` | Copy | | PUT | `x-ms-copy-source` | `comp=page` | Copy | | PUT | `x-ms-copy-source` | `comp=incrementalcopy` | Copy | | PUT | `x-ms-copy-source` | `comp=appendblock` | Copy | | PUT | | `comp=copy` | Abort | -| PUT | `x-ms-blob-type` | | Upload | -| PUT | | `comp=block` | Upload | -| PUT | | `comp=blocklist` | Upload | -| PUT | | `comp=page` | Upload | -| PUT | | `comp=appendblock` | Upload | +| PUT | `x-ms-blob-type` | | Upload | +| PUT | | `comp=block` | Upload | +| PUT | | `comp=blocklist` | Upload | +| PUT | | `comp=page` | Upload | +| PUT | | `comp=appendblock` | Upload | | PUT | | | Create | | PUT | | `comp=metadata` | SetMetadata | | PUT | | `restype=container` and `comp=acl` | SetAcl | @@ -111,6 +114,9 @@ on the presence of data in the HTTP request | PUT | | `comp=tags` | SetTags | | PUT | | `comp=tier` | SetTier | | PUT | | `comp=expiry` | SetExpiry | +| PUT | | `comp=seal` | Seal | +| PUT | | `comp=rename` | Rename | +| PUT | `x-ms-page-write` | `comp=page` | Clear | ### Queue storage From 0b8ab3b7e3f121ee94309b79dc7cb6eefa84f1fe Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Tue, 27 Apr 2021 14:47:04 +1000 Subject: [PATCH 06/10] Update wording --- specs/agents/tracing-instrumentation-azure.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 1fe748e7..387095c5 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -350,7 +350,7 @@ The offical Azure SDKs generally use AMQP for sending and receiving messages. ### Typing -A new span is created when there is a current transaction, and when a message is sent or scheduled to a queue or topic subscription +A new span is created when there is a current transaction, and when a message is sent or scheduled to a queue or topic | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | @@ -365,12 +365,12 @@ A new span is created when there is a current transaction, and when a message is | --------- | --------- | ------ | ----- | ------- | | `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/``\|`` | | `azurequeue/myqueue`, `azureservicebus/mytopic/Subscriptions/mysubscription` | +| `context.destination.service.resource` | yes | azureservicebus/``\|`` | | `azurequeue/myqueue`, `azureservicebus/mytopic` | | `context.destination.service.type` | yes | `messaging` | | | ---- -A new transaction is created when one or more messages are received or receive deferred from a queue +A new transaction is created when one or more messages are received or receive deferred from a queue or topic subscription | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | From 1d1abf369dc6dd8b547c059bb1cbf9d0e01b7b30 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Fri, 30 Apr 2021 14:28:34 +1000 Subject: [PATCH 07/10] Use storage account name in destination.service.resource --- specs/agents/tracing-instrumentation-azure.md | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 387095c5..02c5da94 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -34,9 +34,11 @@ number of containers. Although blob storage is a flat storage scheme (only one level of containers), blob names can include path segments (`/`), providing a _virtual_ hierarchy. -A resource name is the full name of the container and blob. For example, Given container `foo` and blob `bar/baz`, the resource name +`` is the full name of the container and blob. For example, Given container `foo` and blob `bar/baz`, the resource name is `foo/bar/baz`. +`` is the leftmost subdomain of the domain of an Azure storage account endpoint. + | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | | `span.name` | yes | `AzureBlob ` | Pascal case Operation name | `AzureBlob Upload foo/bar/baz` | @@ -50,7 +52,7 @@ is `foo/bar/baz`. | --------- | --------- | ------ | ----- | ------- | | `context.destination.address` | yes | URL scheme and host | | `https://accountname.blob.core.windows.net/` | | `context.destination.service.name` | yes | `azureblob` | | | -| `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/foo/bar` | +| `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/storage-account-name` | | `context.destination.service.type` | yes | `storage` | | | @@ -62,12 +64,12 @@ Azure service endpoints for blob storage have one of the following host names | Cloud | Azure Service Endpoint | | ----- | ---------------------- | -| Azure Global | `.blob.core.windows.net` | -| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.blob.core.usgovcloudapi.net` | -| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.blob.core.chinacloudapi.cn` | -| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.blob.core.cloudapi.de` | +| Azure Global | `.blob.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.blob.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.blob.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.blob.core.cloudapi.de` | -where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. Rules derived from the [Blob service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api). The rules determine the operation name based on the presence of data in the HTTP request @@ -166,12 +168,12 @@ Azure service endpoints for queue storage have one of the following host names | Cloud | Azure Service Endpoint | | ----- | ---------------------- | -| Azure Global | `.queue.core.windows.net` | -| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.queue.core.usgovcloudapi.net` | -| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.queue.core.chinacloudapi.cn` | -| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.queue.core.cloudapi.de` | +| Azure Global | `.queue.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.queue.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.queue.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.queue.core.cloudapi.de` | -where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. Rules derived from the [Queue service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) @@ -212,6 +214,8 @@ Entities are similar to rows and properties are similar to columns. - tablename - tablename(PartitionKey='partitionkey', RowKey='rowkey') +`` is the leftmost subdomain of the domain of an Azure storage account endpoint. + | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | | `span.name` | yes | `AzureTable ` | Pascal case Operation name | `AzureTable Insert tablename` | @@ -225,7 +229,7 @@ Entities are similar to rows and properties are similar to columns. | --------- | --------- | ------ | ----- | ------- | | `context.destination.address` | yes | URL scheme and host | | `https://accountname.table.core.windows.net/` | | `context.destination.service.name` | yes | `azuretable` | | | -| `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/foo` | +| `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/storage-account-name` | | `context.destination.service.type` | yes | `storage` | | | #### Determining operations @@ -234,12 +238,12 @@ Azure service endpoints for table storage have one of the following host names | Cloud | Azure Service Endpoint | | ----- | ---------------------- | -| Azure Global | `.table.core.windows.net` | -| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.table.core.usgovcloudapi.net` | -| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.table.core.chinacloudapi.cn` | -| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.core.cloudapi.de` | +| Azure Global | `.table.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.table.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.table.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.core.cloudapi.de` | -where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. Rules derived from the [Table service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/table-service-rest-api) @@ -270,6 +274,8 @@ machines in the cloud or on-premises. The `` is determined from the path of the URL. +`` is the leftmost subdomain of the domain of an Azure storage account endpoint. + | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | | `span.name` | yes | `AzureFile ` | Pascal case Operation name | `AzureFile Create directoryname` | @@ -283,7 +289,7 @@ The `` is determined from the path of the URL. | --------- | --------- | ------ | ----- | ------- | | `context.destination.address` | yes | URL scheme and host | | `https://accountname.file.core.windows.net/` | | `context.destination.service.name` | yes | `azurefile` | | | -| `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/foo` | +| `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/storage-account-name` | | `context.destination.service.type` | yes | `storage` | | | #### Determining operations @@ -292,12 +298,12 @@ Azure service endpoints for file share storage have one of the following host na | Cloud | Azure Service Endpoint | | ----- | ---------------------- | -| Azure Global | `.file.core.windows.net` | -| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.file.core.usgovcloudapi.net` | -| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.file.core.chinacloudapi.cn` | -| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.file.cloudapi.de` | +| Azure Global | `.file.core.windows.net` | +| [Azure Government](https://docs.microsoft.com/en-us/azure/azure-government/documentation-government-developer-guide) | `.file.core.usgovcloudapi.net` | +| [Azure China](https://docs.microsoft.com/en-us/azure/china/resources-developer-guide) |`.file.core.chinacloudapi.cn` | +| [Azure Germany](https://docs.microsoft.com/en-us/azure/germany/germany-developer-guide) | `.table.file.cloudapi.de` | -where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. +where `` is the name of the storage account. New Azure service endpoints may be introduced by Azure later. Rules derived from the [File service REST API reference](https://docs.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api). From b3a2086348aca8ae4b8be323e09510ed20926b64 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Fri, 30 Apr 2021 14:32:35 +1000 Subject: [PATCH 08/10] update Azure Service bus details --- specs/agents/tracing-instrumentation-azure.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 02c5da94..710b16a1 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -352,7 +352,7 @@ Azure Service Bus can use the following protocols - Advanced Message Queuing Protocol 1.0 (AMQP) - Hypertext Transfer Protocol 1.1 with TLS (HTTPS) -The offical Azure SDKs generally use AMQP for sending and receiving messages. +The offical Azure SDKs _generally_ use AMQP for sending and receiving messages. ### Typing @@ -360,7 +360,7 @@ A new span is created when there is a current transaction, and when a message is | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `span.name` | yes | `AzureServiceBus to ` | Upper case Operation name | `AzureServiceBus SEND to queuename` | +| `span.name` | yes | `AzureServiceBus to ` | Upper case Operation name | `AzureServiceBus SEND to queuename` | | `span.type` | yes | `messaging` | | | | `span.subtype` | yes | `azureservicebus` | | | | `span.action` | yes | `` | lower case | `send` | @@ -380,7 +380,7 @@ A new transaction is created when one or more messages are received or receive d | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `transaction.name` | yes | AzureServiceBus `` from ``\|`` | Upper case Operation name | `AzureServiceBus RECEIVE from queuename` | +| `transaction.name` | yes | AzureServiceBus `` from ``\|`` | Upper case Operation name | `AzureServiceBus RECEIVE from queuename` | | `transaction.type` | yes | `messaging` | | | @@ -411,8 +411,10 @@ Transaction and span names *should* follow these patterns: For send and schedule, -- AzureServiceBus SEND|SCHEDULE to ``|`` +- AzureServiceBus SEND|SCHEDULE to `` +- AzureServiceBus SEND|SCHEDULE to `` For receive and receive deferred, -- AzureServiceBus RECEIVE|RECEIVEDEFERRED from ``|``/Subscriptions/`` +- AzureServiceBus RECEIVE|RECEIVEDEFERRED from `` +- AzureServiceBus RECEIVE|RECEIVEDEFERRED from ``/Subscriptions/`` From 8af9b994aff6de6a037db5ae970d3ef1821dcbc2 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Fri, 4 Jun 2021 09:07:06 +1000 Subject: [PATCH 09/10] Update context.destination.address This commit updates context.destination.address to use just the URL host --- specs/agents/tracing-instrumentation-azure.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 710b16a1..71a657e2 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -50,9 +50,9 @@ is `foo/bar/baz`. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL scheme and host | | `https://accountname.blob.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `https://accountname.blob.core.windows.net/` | | `context.destination.service.name` | yes | `azureblob` | | | -| `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/storage-account-name` | +| `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/accountname` | | `context.destination.service.type` | yes | `storage` | | | @@ -141,9 +141,9 @@ A new span is created when there is a current transaction, and when a message is | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL scheme and host | | `https://accountname.queue.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.queue.core.windows.net/` | | `context.destination.service.name` | yes | `azurequeue` | | | -| `context.destination.service.resource` | yes | `azurequeue/` | | `azurequeue/queuename` | +| `context.destination.service.resource` | yes | `azurequeue/` | | `azurequeue/accountname` | | `context.destination.service.type` | yes | `messaging` | | | ---- @@ -179,25 +179,25 @@ Rules derived from the [Queue service REST API reference](https://docs.microsoft | URL | HTTP verb | HTTP headers | HTTP query string | Resulting Operation Name | | --- | --------- | ---------- | ------------------- | ------------------------ | -| | DELETE | | | DELETE | -| ends with /messages | DELETE | | | CLEAR | -| | DELETE | | `popreceipt=`| DELETE | -| | GET | | `comp=list` | LISTQUEUES | -| | GET | | `comp=properties` | GETPROPERTIES | -| | GET | | `comp=stats` | STATS | -| | GET | | `comp=metadata` | GETMETADATA | -| | GET | | `comp=acl` | GETACL | -| | GET | | | RECEIVE | -| | GET | | `peekonly=true` | PEEK | -| | HEAD | | `comp=metadata` | GETMETADATA | -| | HEAD | | `comp=acl` | GETACL | -| | OPTIONS | | | PREFLIGHT | -| | POST | | | SEND | -| | PUT | | `comp=acl` | SETACL | -| | PUT | | `comp=properties` | SETPROPERTIES | -| | PUT | | | CREATE | -| | PUT | | `comp=metadata` | SETMETADATA | -| | PUT | | `popreceipt=`| UPDATE | +| | DELETE | | | DELETE | +| ends with /messages | DELETE | | | CLEAR | +| | DELETE | | `popreceipt=` | DELETE | +| | GET | | `comp=list` | LISTQUEUES | +| | GET | | `comp=properties` | GETPROPERTIES | +| | GET | | `comp=stats` | STATS | +| | GET | | `comp=metadata` | GETMETADATA | +| | GET | | `comp=acl` | GETACL | +| | GET | | | RECEIVE | +| | GET | | `peekonly=true` | PEEK | +| | HEAD | | `comp=metadata` | GETMETADATA | +| | HEAD | | `comp=acl` | GETACL | +| | OPTIONS | | | PREFLIGHT | +| | POST | | | SEND | +| | PUT | | `comp=acl` | SETACL | +| | PUT | | `comp=properties` | SETPROPERTIES | +| | PUT | | | CREATE | +| | PUT | | `comp=metadata` | SETMETADATA | +| | PUT | | `popreceipt=` | UPDATE | ### Table storage @@ -227,9 +227,9 @@ Entities are similar to rows and properties are similar to columns. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL scheme and host | | `https://accountname.table.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.table.core.windows.net/` | | `context.destination.service.name` | yes | `azuretable` | | | -| `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/storage-account-name` | +| `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/accountname` | | `context.destination.service.type` | yes | `storage` | | | #### Determining operations @@ -287,9 +287,9 @@ The `` is determined from the path of the URL. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL scheme and host | | `https://accountname.file.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.file.core.windows.net/` | | `context.destination.service.name` | yes | `azurefile` | | | -| `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/storage-account-name` | +| `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/accountname` | | `context.destination.service.type` | yes | `storage` | | | #### Determining operations @@ -369,7 +369,7 @@ A new span is created when there is a current transaction, and when a message is | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL scheme and host | | `https://namespace.servicebus.windows.net/` | +| `context.destination.address` | yes | URL host | | `namespace.servicebus.windows.net/` | | `context.destination.service.name` | yes | azureservicebus | | | | `context.destination.service.resource` | yes | azureservicebus/``\|`` | | `azurequeue/myqueue`, `azureservicebus/mytopic` | | `context.destination.service.type` | yes | `messaging` | | | From a7d0a17bae6e4bfd6cf6d6b960d29ccddbf3645c Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Fri, 4 Jun 2021 09:21:51 +1000 Subject: [PATCH 10/10] fix examples --- specs/agents/tracing-instrumentation-azure.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/specs/agents/tracing-instrumentation-azure.md b/specs/agents/tracing-instrumentation-azure.md index 71a657e2..464116d2 100644 --- a/specs/agents/tracing-instrumentation-azure.md +++ b/specs/agents/tracing-instrumentation-azure.md @@ -50,7 +50,7 @@ is `foo/bar/baz`. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL host | | `https://accountname.blob.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.blob.core.windows.net` | | `context.destination.service.name` | yes | `azureblob` | | | | `context.destination.service.resource` | yes | `azureblob/` | | `azureblob/accountname` | | `context.destination.service.type` | yes | `storage` | | | @@ -141,7 +141,7 @@ A new span is created when there is a current transaction, and when a message is | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL host | | `accountname.queue.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.queue.core.windows.net` | | `context.destination.service.name` | yes | `azurequeue` | | | | `context.destination.service.resource` | yes | `azurequeue/` | | `azurequeue/accountname` | | `context.destination.service.type` | yes | `messaging` | | | @@ -227,7 +227,7 @@ Entities are similar to rows and properties are similar to columns. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL host | | `accountname.table.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.table.core.windows.net` | | `context.destination.service.name` | yes | `azuretable` | | | | `context.destination.service.resource` | yes | `azuretable/` | | `azuretable/accountname` | | `context.destination.service.type` | yes | `storage` | | | @@ -287,7 +287,7 @@ The `` is determined from the path of the URL. | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL host | | `accountname.file.core.windows.net/` | +| `context.destination.address` | yes | URL host | | `accountname.file.core.windows.net` | | `context.destination.service.name` | yes | `azurefile` | | | | `context.destination.service.resource` | yes | `azurefile/` | | `azurefile/accountname` | | `context.destination.service.type` | yes | `storage` | | | @@ -369,7 +369,7 @@ A new span is created when there is a current transaction, and when a message is | APM field | Required? | Format | Notes | Example | | --------- | --------- | ------ | ----- | ------- | -| `context.destination.address` | yes | URL host | | `namespace.servicebus.windows.net/` | +| `context.destination.address` | yes | URL host | | `namespace.servicebus.windows.net` | | `context.destination.service.name` | yes | azureservicebus | | | | `context.destination.service.resource` | yes | azureservicebus/``\|`` | | `azurequeue/myqueue`, `azureservicebus/mytopic` | | `context.destination.service.type` | yes | `messaging` | | |