File: url_attributes.h

package info (click to toggle)
opentelemetry-cpp 1.23.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,368 kB
  • sloc: cpp: 96,239; sh: 1,766; makefile: 38; python: 31
file content (173 lines) | stat: -rw-r--r-- 7,575 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * DO NOT EDIT, this is an Auto-generated file from:
 * buildscripts/semantic-convention/templates/registry/semantic_attributes-h.j2
 */

#pragma once

#include "opentelemetry/common/macros.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace semconv
{
namespace url
{

/**
  Domain extracted from the @code url.full @endcode, such as "opentelemetry.io".
  <p>
  In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case,
  the IP address would go to the domain field. If the URL contains a <a
  href="https://www.rfc-editor.org/rfc/rfc2732#section-2">literal IPv6 address</a> enclosed by @code
  [ @endcode and @code ] @endcode, the @code [ @endcode and @code ] @endcode characters should also
  be captured in the domain field.
 */
static constexpr const char *kUrlDomain = "url.domain";

/**
  The file extension extracted from the @code url.full @endcode, excluding the leading dot.
  <p>
  The file extension is only set if it exists, as not every url has a file extension. When the file
  name has multiple extensions @code example.tar.gz @endcode, only the last one should be captured
  @code gz @endcode, not @code tar.gz @endcode.
 */
static constexpr const char *kUrlExtension = "url.extension";

/**
  The <a href="https://www.rfc-editor.org/rfc/rfc3986#section-3.5">URI fragment</a> component
 */
static constexpr const char *kUrlFragment = "url.fragment";

/**
  Absolute URL describing a network resource according to <a
  href="https://www.rfc-editor.org/rfc/rfc3986">RFC3986</a> <p> For network calls, URL usually has
  @code scheme://host[:port][path][?query][#fragment] @endcode format, where the fragment is not
  transmitted over HTTP, but if it is known, it SHOULD be included nevertheless. <p>
  @code url.full @endcode MUST NOT contain credentials passed via URL in form of @code
  https://username:password@www.example.com/ @endcode. In such case username and password SHOULD be
  redacted and attribute's value SHOULD be @code https://REDACTED:REDACTED@www.example.com/
  @endcode. <p>
  @code url.full @endcode SHOULD capture the absolute URL when it is available (or can be
  reconstructed). <p> Sensitive content provided in @code url.full @endcode SHOULD be scrubbed when
  instrumentations can identify it. <p>

  Query string values for the following keys SHOULD be redacted by default and replaced by the
  value @code REDACTED @endcode:
  <ul>
    <li><a
  href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth">@code
  AWSAccessKeyId @endcode</a></li> <li><a
  href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth">@code
  Signature @endcode</a></li> <li><a
  href="https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token">@code sig
  @endcode</a></li> <li><a
  href="https://cloud.google.com/storage/docs/access-control/signed-urls">@code X-Goog-Signature
  @endcode</a></li>
  </ul>
  <p>
  This list is subject to change over time.
  <p>
  When a query string value is redacted, the query string key SHOULD still be preserved, e.g.
  @code https://www.example.com/path?color=blue&sig=REDACTED @endcode.
 */
static constexpr const char *kUrlFull = "url.full";

/**
  Unmodified original URL as seen in the event source.
  <p>
  In network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is
  often just represented as a path. This field is meant to represent the URL as it was observed,
  complete or not.
  @code url.original @endcode might contain credentials passed via URL in form of @code
  https://username:password@www.example.com/ @endcode. In such case password and username SHOULD NOT
  be redacted and attribute's value SHOULD remain the same.
 */
static constexpr const char *kUrlOriginal = "url.original";

/**
  The <a href="https://www.rfc-editor.org/rfc/rfc3986#section-3.3">URI path</a> component
  <p>
  Sensitive content provided in @code url.path @endcode SHOULD be scrubbed when instrumentations can
  identify it.
 */
static constexpr const char *kUrlPath = "url.path";

/**
  Port extracted from the @code url.full @endcode
 */
static constexpr const char *kUrlPort = "url.port";

/**
  The <a href="https://www.rfc-editor.org/rfc/rfc3986#section-3.4">URI query</a> component
  <p>
  Sensitive content provided in @code url.query @endcode SHOULD be scrubbed when instrumentations
  can identify it. <p>

  Query string values for the following keys SHOULD be redacted by default and replaced by the value
  @code REDACTED @endcode: <ul> <li><a
  href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth">@code
  AWSAccessKeyId @endcode</a></li> <li><a
  href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth">@code
  Signature @endcode</a></li> <li><a
  href="https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token">@code sig
  @endcode</a></li> <li><a
  href="https://cloud.google.com/storage/docs/access-control/signed-urls">@code X-Goog-Signature
  @endcode</a></li>
  </ul>
  <p>
  This list is subject to change over time.
  <p>
  When a query string value is redacted, the query string key SHOULD still be preserved, e.g.
  @code q=OpenTelemetry&sig=REDACTED @endcode.
 */
static constexpr const char *kUrlQuery = "url.query";

/**
  The highest registered url domain, stripped of the subdomain.
  <p>
  This value can be determined precisely with the <a href="https://publicsuffix.org/">public suffix
  list</a>. For example, the registered domain for @code foo.example.com @endcode is @code
  example.com @endcode. Trying to approximate this by simply taking the last two labels will not
  work well for TLDs such as @code co.uk @endcode.
 */
static constexpr const char *kUrlRegisteredDomain = "url.registered_domain";

/**
  The <a href="https://www.rfc-editor.org/rfc/rfc3986#section-3.1">URI scheme</a> component
  identifying the used protocol.
 */
static constexpr const char *kUrlScheme = "url.scheme";

/**
  The subdomain portion of a fully qualified domain name includes all of the names except the host
  name under the registered_domain. In a partially qualified domain, or if the qualification level
  of the full name cannot be determined, subdomain contains all of the names below the registered
  domain. <p> The subdomain portion of @code www.east.mydomain.co.uk @endcode is @code east
  @endcode. If the domain has multiple levels of subdomain, such as @code sub2.sub1.example.com
  @endcode, the subdomain field should contain @code sub2.sub1 @endcode, with no trailing period.
 */
static constexpr const char *kUrlSubdomain = "url.subdomain";

/**
  The low-cardinality template of an <a
  href="https://www.rfc-editor.org/rfc/rfc3986#section-4.2">absolute path reference</a>.
 */
static constexpr const char *kUrlTemplate = "url.template";

/**
  The effective top level domain (eTLD), also known as the domain suffix, is the last part of the
  domain name. For example, the top level domain for example.com is @code com @endcode. <p> This
  value can be determined precisely with the <a href="https://publicsuffix.org/">public suffix
  list</a>.
 */
static constexpr const char *kUrlTopLevelDomain = "url.top_level_domain";

}  // namespace url
}  // namespace semconv
OPENTELEMETRY_END_NAMESPACE