forked from newrelic/go-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
attributes.go
153 lines (145 loc) · 7.13 KB
/
attributes.go
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
// Copyright 2020 New Relic Corporation. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
package newrelic
// This file contains the names of the automatically captured attributes.
// Attributes are key value pairs attached to transaction events, error events,
// traced errors, and spans. You may add your own attributes using the
// Transaction.AddAttribute method (see transaction.go).
//
// These attribute names are exposed here to facilitate configuration.
//
// For more information, see:
// https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-metrics/agent-attributes
// Attributes destined for Transaction Events, Errors, and Transaction Traces:
const (
// AttributeResponseCode is the response status code for a web request.
AttributeResponseCode = "http.statusCode"
// AttributeResponseCodeDeprecated is the response status code for a web
// request, the same value as AttributeResponseCode. To completely exclude
// this value from a destination, both AttributeResponseCode and
// AttributeResponseCodeDeprecated must be specified.
//
// Deprecated: This attribute is currently deprecated and will be removed
// in a later release.
AttributeResponseCodeDeprecated = "httpResponseCode"
// AttributeRequestMethod is the request's method.
AttributeRequestMethod = "request.method"
// AttributeRequestAccept is the request's "Accept" header.
AttributeRequestAccept = "request.headers.accept"
// AttributeRequestContentType is the request's "Content-Type" header.
AttributeRequestContentType = "request.headers.contentType"
// AttributeRequestContentLength is the request's "Content-Length" header.
AttributeRequestContentLength = "request.headers.contentLength"
// AttributeRequestHost is the request's "Host" header.
AttributeRequestHost = "request.headers.host"
// AttributeRequestURI is the request's URL without query parameters,
// fragment, user, or password.
AttributeRequestURI = "request.uri"
// AttributeResponseContentType is the response "Content-Type" header.
AttributeResponseContentType = "response.headers.contentType"
// AttributeResponseContentLength is the response "Content-Length" header.
AttributeResponseContentLength = "response.headers.contentLength"
// AttributeHostDisplayName contains the value of Config.HostDisplayName.
AttributeHostDisplayName = "host.displayName"
)
// Attributes destined for Errors and Transaction Traces:
const (
// AttributeRequestUserAgent is the request's "User-Agent" header.
AttributeRequestUserAgent = "request.headers.userAgent"
// AttributeRequestUserAgentDeprecated is the request's "User-Agent"
// header, the same value as AttributeRequestUserAgent. To completely
// exclude this value from a destination, both AttributeRequestUserAgent
// and AttributeRequestUserAgentDeprecated must be specified.
//
// Deprecated: This attribute is currently deprecated and will be removed
// in a later release.
AttributeRequestUserAgentDeprecated = "request.headers.User-Agent"
// AttributeRequestReferer is the request's "Referer" header. Query
// string parameters are removed.
AttributeRequestReferer = "request.headers.referer"
)
// AWS Lambda specific attributes:
const (
AttributeAWSRequestID = "aws.requestId"
AttributeAWSLambdaARN = "aws.lambda.arn"
AttributeAWSLambdaColdStart = "aws.lambda.coldStart"
AttributeAWSLambdaEventSourceARN = "aws.lambda.eventSource.arn"
)
// Attributes for consumed message transactions:
//
// When a message is consumed (for example from Kafka or RabbitMQ), supported
// instrumentation packages -- i.e. those found in the v3/integrations
// (https://godoc.org/github.com/Easypay/go-agent/v3/integrations) directory --
// will add these attributes automatically. AttributeMessageExchangeType,
// AttributeMessageReplyTo, and AttributeMessageCorrelationID are disabled
// by default. To see these attributes added to all destinations, you must add
// include them in your config settings:
//
// cfg.Attributes.Include = append(cfg.Attributes.Include,
// newrelic.AttributeMessageExchangeType,
// newrelic.AttributeMessageReplyTo,
// newrelic.AttributeMessageCorrelationID,
// )
//
// When not using a supported instrumentation package, you can add these
// attributes manually using the Transaction.AddAttribute
// (https://godoc.org/github.com/Easypay/go-agent/v3/newrelic#Transaction.AddAttribute)
// API. In this case, these attributes will be included on all destintations
// by default.
//
// txn := app.StartTransaction("Message/RabbitMQ/Exchange/Named/MyExchange")
// txn.AddAttribute(newrelic.AttributeMessageRoutingKey, "myRoutingKey")
// txn.AddAttribute(newrelic.AttributeMessageQueueName, "myQueueName")
// txn.AddAttribute(newrelic.AttributeMessageExchangeType, "myExchangeType")
// txn.AddAttribute(newrelic.AttributeMessageReplyTo, "myReplyTo")
// txn.AddAttribute(newrelic.AttributeMessageCorrelationID, "myCorrelationID")
// // ... consume a message ...
// txn.End()
//
// It is recommended that at most one message is consumed per transaction.
const (
// The routing key of the consumed message.
AttributeMessageRoutingKey = "message.routingKey"
// The name of the queue the message was consumed from.
AttributeMessageQueueName = "message.queueName"
// The type of exchange used for the consumed message (direct, fanout,
// topic, or headers).
AttributeMessageExchangeType = "message.exchangeType"
// The callback queue used in RPC configurations.
AttributeMessageReplyTo = "message.replyTo"
// The application-generated identifier used in RPC configurations.
AttributeMessageCorrelationID = "message.correlationId"
)
// Attributes destined for Span Events. These attributes appear only on Span
// Events and are not available to transaction events, error events, or traced
// errors.
//
// To disable the capture of one of these span event attributes, "db.statement"
// for example, modify your Config like this:
//
// cfg.SpanEvents.Attributes.Exclude = append(cfg.SpanEvents.Attributes.Exclude,
// newrelic.SpanAttributeDBStatement)
const (
SpanAttributeDBStatement = "db.statement"
SpanAttributeDBInstance = "db.instance"
SpanAttributeDBCollection = "db.collection"
SpanAttributePeerAddress = "peer.address"
SpanAttributePeerHostname = "peer.hostname"
SpanAttributeHTTPURL = "http.url"
SpanAttributeHTTPMethod = "http.method"
SpanAttributeAWSOperation = "aws.operation"
SpanAttributeAWSRegion = "aws.region"
SpanAttributeErrorClass = "error.class"
SpanAttributeErrorMessage = "error.message"
SpanAttributeParentType = "parent.type"
SpanAttributeParentApp = "parent.app"
SpanAttributeParentAccount = "parent.account"
SpanAttributeParentTransportDuration = "parent.transportDuration"
SpanAttributeParentTransportType = "parent.transportType"
// Deprecated: This attribute is a duplicate of AttributeResponseCode and
// will be removed in a later release.
SpanAttributeHTTPStatusCode = "http.statusCode"
// Deprecated: This attribute is a duplicate of AttributeAWSRequestID and
// will be removed in a later release.
SpanAttributeAWSRequestID = "aws.requestId"
)