Documentation ¶
Index ¶
- Constants
- Variables
- func AddAgentSpanAttribute(txn interface{}, key SpanAttribute, val string)
- func AddUserAttribute(a *Attributes, key string, val interface{}, d destinationSet) error
- func ApdexFailingThreshold(threshold time.Duration) time.Duration
- func AppDataToHTTPHeader(appData string) http.Header
- func BrowserAttributes(a *Attributes) []byte
- func CalculateApdexThreshold(c *ConnectReply, txnName string) time.Duration
- func CompactJSONString(js string) string
- func ConnectAttempt(config ConnectJSONCreator, securityPoliciesToken string, highSecurity bool, ...) (*ConnectReply, RPMResponse)
- func CreateFullTxnName(input string, reply *ConnectReply, isWeb bool) string
- func CreateTxnMetrics(args *TxnData, metrics *metricTable)
- func Deobfuscate(in string, key []byte) ([]byte, error)
- func EndBasicSegment(t *TxnData, thread *Thread, start SegmentStartTime, now time.Time, name string) error
- func EndDatastoreSegment(p EndDatastoreParams) error
- func EndExternalSegment(p EndExternalParams) error
- func EndMessageSegment(p EndMessageParams) error
- func ExpectCustomEvents(v Validator, cs *customEvents, expect []WantEvent)
- func ExpectErrorEvents(v Validator, events *errorEvents, expect []WantEvent)
- func ExpectErrors(v Validator, errors harvestErrors, expect []WantError)
- func ExpectMetrics(t Validator, mt *metricTable, expect []WantMetric)
- func ExpectMetricsPresent(t Validator, mt *metricTable, expect []WantMetric)
- func ExpectSlowQueries(t Validator, slowQueries *slowQueries, want []WantSlowQuery)
- func ExpectSpanEvents(v Validator, events *spanEvents, expect []WantEvent)
- func ExpectTxnEvents(v Validator, events *txnEvents, expect []WantEvent)
- func ExpectTxnMetrics(t Validator, mt *metricTable, want WantTxn)
- func ExpectTxnTraces(v Validator, traces *harvestTraces, want []WantTxnTrace)
- func FloatSecondsToDuration(seconds float64) time.Duration
- func GetContentLengthFromHeader(h http.Header) int64
- func HTTPHeaderToAppData(header http.Header) string
- func HarvestTesting(app interface{}, replyfn func(*ConnectReply))
- func HostFromURL(u *url.URL) string
- func MergeBreakdownMetrics(t *TxnData, metrics *metricTable)
- func MergeTxnErrors(errors *harvestErrors, errs TxnErrors, txnEvent TxnEvent)
- func MetadataToHTTPHeader(metadata CrossProcessMetadata) http.Header
- func MinorVersion(v string) string
- func Obfuscate(in, key []byte) (string, error)
- func ParseServerlessPayload(data []byte) (metadata, uncompressedData map[string]json.RawMessage, err error)
- func QueueDuration(hdr http.Header, txnStart time.Time) time.Duration
- func RandFloat32() float32
- func RandUint32() uint32
- func RandUint64() uint64
- func RandUint64N(max uint64) uint64
- func RequestAgentAttributes(a *Attributes, method string, h http.Header, u *url.URL)
- func ResponseCodeAttribute(a *Attributes, code int)
- func ResponseHeaderAttributes(a *Attributes, h http.Header)
- func SafeURL(u *url.URL) string
- func SafeURLFromString(rawurl string) string
- func ServerlessWrite(app interface{}, arn string, writer io.Writer)
- func StringLengthByteLimit(str string, byteLimit int) string
- func TimeToUnixMilliseconds(tm time.Time) uint64
- func TrackUsage(s ...string)
- func ValidateUserAttribute(key string, val interface{}) (interface{}, error)
- type AdaptiveSampler
- type AddAgentAttributer
- type AddAgentSpanAttributer
- type AgentAttributeID
- type AgentRunID
- type ApdexZone
- type AttributeConfig
- type AttributeConfigInput
- type AttributeDestinationConfig
- type Attributes
- type BetterCAT
- type ConnectJSONCreator
- type ConnectReply
- type CrossProcessMetadata
- type CustomEvent
- type CustomMetric
- type DatastoreExternalTotals
- type DatastoreMetricKey
- type DfltHarvestCfgr
- type DistributedTracingSupport
- type EndDatastoreParams
- type EndExternalParams
- type EndMessageParams
- type Environment
- type ErrInvalidAttributeType
- type ErrPayloadMissingField
- type ErrPayloadParse
- type ErrUnsupportedPayloadVersion
- type ErrorData
- type ErrorEvent
- type EventHarvestConfig
- type Expect
- type Harvest
- type HarvestConfigurer
- type HarvestTestinger
- type HarvestTrace
- type HarvestTypes
- type Harvestable
- type JSONString
- type Labels
- type MaxTxnEventer
- type MessageMetricKey
- type Payload
- type PayloadCreator
- type PreconnectReply
- type Priority
- type RPMResponse
- type RpmCmd
- type RpmControls
- type Sample
- type SampleEverything
- type SampleNothing
- type Samples
- type SecurityPolicies
- type SegmentStartTime
- type ServerlessHarvest
- type ServerlessWriter
- type SpanAttribute
- type SpanEvent
- type StackTrace
- type Stats
- type Thread
- type TraceIDGenerator
- type TxnCrossProcess
- func (txp *TxnCrossProcess) CreateAppData(name string, queueTime, responseTime time.Duration, contentLength int64) (string, error)
- func (txp *TxnCrossProcess) CreateCrossProcessMetadata(txnName, appName string) (CrossProcessMetadata, error)
- func (txp *TxnCrossProcess) Finalise(txnName, appName string) error
- func (txp *TxnCrossProcess) InboundHTTPRequest(hdr http.Header) error
- func (txp *TxnCrossProcess) Init(enabled bool, dt bool, reply *ConnectReply)
- func (txp *TxnCrossProcess) IsInbound() bool
- func (txp *TxnCrossProcess) IsOutbound() bool
- func (txp *TxnCrossProcess) IsSynthetics() bool
- func (txp *TxnCrossProcess) ParseAppData(encodedAppData string) (*cat.AppDataHeader, error)
- func (txp *TxnCrossProcess) SetInbound(inbound bool)
- func (txp *TxnCrossProcess) SetOutbound(outbound bool)
- func (txp *TxnCrossProcess) SetSynthetics(synthetics bool)
- func (txp *TxnCrossProcess) Used() bool
- type TxnData
- type TxnError
- type TxnErrors
- type TxnEvent
- type TxnTrace
- type Validator
- type WantError
- type WantEvent
- type WantMetric
- type WantSlowQuery
- type WantTraceSegment
- type WantTxn
- type WantTxnTrace
Constants ¶
const ( // HarvestTypesEvents includes all Event types HarvestTypesEvents = HarvestSpanEvents | HarvestCustomEvents | HarvestTxnEvents | HarvestErrorEvents // HarvestTypesAll includes all harvest types HarvestTypesAll = HarvestMetricsTraces | HarvestTypesEvents )
const ( // FixedHarvestPeriod is the period that fixed period data (metrics, // traces, and span events) is sent to New Relic. FixedHarvestPeriod = 60 * time.Second // DefaultConfigurableEventHarvestMs is the period for custom, error, // and transaction events if the connect response's // "event_harvest_config.report_period_ms" is missing or invalid. DefaultConfigurableEventHarvestMs = 60 * 1000 // CollectorTimeout is the timeout used in the client for communication // with New Relic's servers. CollectorTimeout = 20 * time.Second // AppDataChanSize is the size of the channel that contains data sent // the app processor. AppDataChanSize = 200 // MaxTxnErrors is the maximum number of errors captured per // transaction. MaxTxnErrors = 5 // MaxCustomEvents is the maximum number of Transaction Events that can be captured // per 60-second harvest cycle MaxCustomEvents = 10 * 1000 // MaxTxnEvents is the maximum number of Transaction Events that can be captured // per 60-second harvest cycle MaxTxnEvents = 10 * 1000 // MaxErrorEvents is the maximum number of Error Events that can be captured // per 60-second harvest cycle MaxErrorEvents = 100 // MaxSpanEvents is the maximum number of Span Events that can be captured // per 60-second harvest cycle MaxSpanEvents = 1000 // AttributeErrorLimit limits the number of extra attributes that can be // provided when noticing an error. AttributeErrorLimit = 32 // RuntimeSamplerPeriod is the period of the runtime sampler. Runtime // metrics should not depend on the sampler period, but the period must // be the same across instances. For that reason, this value should not // be changed without notifying customers that they must update all // instance simultaneously for valid runtime metrics. RuntimeSamplerPeriod = 60 * time.Second )
const (
// AgentLanguage is used in the connect JSON and the Lambda JSON.
AgentLanguage = "go"
)
const (
// CallerType is the Type field's value for outbound payloads.
CallerType = "App"
)
const (
// DestAll contains all destinations.
DestAll destinationSet = destTxnEvent | destTxnTrace | destError | destBrowser | destSpan | destSegment
)
const ( // PanicErrorKlass is the error klass used for errors generated by // recovering panics in txn.End. PanicErrorKlass = "panic" )
const ( // ProcotolVersion is the protocol version used to communicate with NR // backend. ProcotolVersion = 17 )
Variables ¶
var ( // TransactionContextKey is the key used for newrelic.FromContext and // newrelic.NewContext. TransactionContextKey = contextKeyType(struct{}{}) // GinTransactionContextKey is used as the context key in // nrgin.Middleware and nrgin.Transaction. Unfortunately, Gin requires // a string context key. We use two different context keys (and check // both in nrgin.Transaction and newrelic.FromContext) rather than use a // single string key because context.WithValue will fail golint if used // with a string key. GinTransactionContextKey = "newRelicTransaction" )
var ( // ErrAccountNotTrusted indicates that, while the inbound headers were valid, // the account ID within them is not trusted by the user's application. ErrAccountNotTrusted = errors.New("account not trusted") )
var ( // ErrEventTypeRegex will be returned to caller of app.RecordCustomEvent // if the event type is not valid. ErrEventTypeRegex = fmt.Errorf("event type must match %s", eventTypeRegexRaw) )
var (
// MatchAnything is for use when matching attributes.
MatchAnything = uniquePointer()
)
var ( // SampleEnvironment is useful for testing. SampleEnvironment = Environment{ Compiler: "comp", GOARCH: "arch", GOOS: "goos", Version: "vers", NumCPU: 8, } )
Functions ¶
func AddAgentSpanAttribute ¶
func AddAgentSpanAttribute(txn interface{}, key SpanAttribute, val string)
AddAgentSpanAttribute allows instrumentation packages to add span attributes.
func AddUserAttribute ¶
func AddUserAttribute(a *Attributes, key string, val interface{}, d destinationSet) error
AddUserAttribute adds a user attribute.
func ApdexFailingThreshold ¶
ApdexFailingThreshold calculates the threshold at which the transaction is considered a failure.
func AppDataToHTTPHeader ¶
AppDataToHTTPHeader encapsulates the given appData value in the correct HTTP header.
func BrowserAttributes ¶
func BrowserAttributes(a *Attributes) []byte
BrowserAttributes returns a string with the attributes that are attached to the browser destination encoded in the JSON format expected by the Browser agent.
func CalculateApdexThreshold ¶
func CalculateApdexThreshold(c *ConnectReply, txnName string) time.Duration
CalculateApdexThreshold calculates the apdex threshold.
func CompactJSONString ¶
CompactJSONString removes the whitespace from a JSON string. This function will panic if the string provided is not valid JSON. Thus is must only be used in testing code!
func ConnectAttempt ¶
func ConnectAttempt(config ConnectJSONCreator, securityPoliciesToken string, highSecurity bool, cs RpmControls) (*ConnectReply, RPMResponse)
ConnectAttempt tries to connect an application.
func CreateFullTxnName ¶
func CreateFullTxnName(input string, reply *ConnectReply, isWeb bool) string
CreateFullTxnName uses collector rules and the appropriate metric prefix to construct the full transaction metric name from the name given by the consumer.
func CreateTxnMetrics ¶
func CreateTxnMetrics(args *TxnData, metrics *metricTable)
CreateTxnMetrics creates metrics for a transaction.
func Deobfuscate ¶
Deobfuscate deobfuscates a byte array.
func EndBasicSegment ¶
func EndBasicSegment(t *TxnData, thread *Thread, start SegmentStartTime, now time.Time, name string) error
EndBasicSegment ends a basic segment.
func EndDatastoreSegment ¶
func EndDatastoreSegment(p EndDatastoreParams) error
EndDatastoreSegment ends a datastore segment.
func EndExternalSegment ¶
func EndExternalSegment(p EndExternalParams) error
EndExternalSegment ends an external segment.
func EndMessageSegment ¶
func EndMessageSegment(p EndMessageParams) error
EndMessageSegment ends an external segment.
func ExpectCustomEvents ¶
ExpectCustomEvents allows testing of custom events. It passes if cs exactly matches expect.
func ExpectErrorEvents ¶
ExpectErrorEvents allows testing of error events. It passes if events exactly matches expect.
func ExpectErrors ¶
ExpectErrors allows testing of errors.
func ExpectMetrics ¶
func ExpectMetrics(t Validator, mt *metricTable, expect []WantMetric)
ExpectMetrics allows testing of metrics. It passes if mt exactly matches expect.
func ExpectMetricsPresent ¶
func ExpectMetricsPresent(t Validator, mt *metricTable, expect []WantMetric)
ExpectMetricsPresent allows testing of metrics without requiring an exact match
func ExpectSlowQueries ¶
func ExpectSlowQueries(t Validator, slowQueries *slowQueries, want []WantSlowQuery)
ExpectSlowQueries allows testing of slow queries.
func ExpectSpanEvents ¶
ExpectSpanEvents allows testing of span events. It passes if events exactly matches expect.
func ExpectTxnEvents ¶
ExpectTxnEvents allows testing of txn events.
func ExpectTxnMetrics ¶
ExpectTxnMetrics tests that the app contains metrics for a transaction.
func ExpectTxnTraces ¶
func ExpectTxnTraces(v Validator, traces *harvestTraces, want []WantTxnTrace)
ExpectTxnTraces allows testing of transaction traces.
func FloatSecondsToDuration ¶
FloatSecondsToDuration turns a float64 in seconds into a time.Duration.
func GetContentLengthFromHeader ¶
GetContentLengthFromHeader gets the content length from a HTTP header, or -1 if no content length is available.
func HTTPHeaderToAppData ¶
HTTPHeaderToAppData gets the appData value from the correct HTTP header.
func HarvestTesting ¶
func HarvestTesting(app interface{}, replyfn func(*ConnectReply))
HarvestTesting allows integration packages to test instrumentation.
func MergeBreakdownMetrics ¶
func MergeBreakdownMetrics(t *TxnData, metrics *metricTable)
MergeBreakdownMetrics creates segment metrics.
func MergeTxnErrors ¶
MergeTxnErrors merges a transaction's errors into the harvest's errors.
func MetadataToHTTPHeader ¶
func MetadataToHTTPHeader(metadata CrossProcessMetadata) http.Header
MetadataToHTTPHeader creates a set of HTTP headers to represent the given cross process metadata.
func MinorVersion ¶
MinorVersion takes a given version string and returns only the major and minor portions of it. If the input is malformed, it returns the input untouched.
func Obfuscate ¶
Obfuscate obfuscates a byte array for transmission in CAT and RUM.
func ParseServerlessPayload ¶
func ParseServerlessPayload(data []byte) (metadata, uncompressedData map[string]json.RawMessage, err error)
ParseServerlessPayload exists for testing.
func QueueDuration ¶
QueueDuration TODO
func RandFloat32 ¶
func RandFloat32() float32
RandFloat32 returns a random float32 between 0.0 and 1.0.
func RandUint64 ¶
func RandUint64() uint64
RandUint64 returns a random uint64.
IMPORTANT! The default rand package functions are not used, since we want to minimize the chance that different Go processes duplicate the same transaction id. (Note that the rand top level functions "use a default shared Source that produces a deterministic sequence of values each time a program is run" (and we don't seed the shared Source to avoid changing customer apps' behavior)).
func RandUint64N ¶
RandUint64N returns a random int64 that's between 0 and the passed in max, non-inclusive
func RequestAgentAttributes ¶
RequestAgentAttributes gathers agent attributes out of the request.
func ResponseCodeAttribute ¶
func ResponseCodeAttribute(a *Attributes, code int)
ResponseCodeAttribute sets the response code agent attribute.
func ResponseHeaderAttributes ¶
func ResponseHeaderAttributes(a *Attributes, h http.Header)
ResponseHeaderAttributes gather agent attributes from the response headers.
func SafeURLFromString ¶
SafeURLFromString removes sensitive information from a URL.
func ServerlessWrite ¶
ServerlessWrite exists to avoid type assertion in the nrlambda integration package.
func StringLengthByteLimit ¶
StringLengthByteLimit truncates strings using a byte-limit boundary and avoids terminating in the middle of a multibyte character.
func TimeToUnixMilliseconds ¶
TimeToUnixMilliseconds converts a time into a Unix timestamp in millisecond units.
Types ¶
type AdaptiveSampler ¶
AdaptiveSampler calculates which transactions should be sampled. An interface is used in the connect reply to facilitate testing.
type AddAgentAttributer ¶
type AddAgentAttributer interface {
AddAgentAttribute(id AgentAttributeID, stringVal string, otherVal interface{})
}
AddAgentAttributer allows instrumentation to add agent attributes without exposing a Transaction method.
type AddAgentSpanAttributer ¶
type AddAgentSpanAttributer interface {
AddAgentSpanAttribute(key SpanAttribute, val string)
}
AddAgentSpanAttributer should be implemented by the Transaction.
type AgentAttributeID ¶
type AgentAttributeID int
AgentAttributeID uniquely identifies each agent attribute.
const ( AttributeHostDisplayName AgentAttributeID = iota AttributeAWSRequestID AttributeAWSLambdaARN AttributeAWSLambdaColdStart AttributeAWSLambdaEventSourceARN AttributeMessageRoutingKey AttributeMessageQueueName AttributeMessageExchangeType AttributeMessageReplyTo AttributeMessageCorrelationID )
New agent attributes must be added in the following places: * Constants here. * Top level attributes.go file. * agentAttributeInfo
type AgentRunID ¶
type AgentRunID string
AgentRunID identifies the current connection with the collector.
func (AgentRunID) String ¶
func (id AgentRunID) String() string
type ApdexZone ¶
type ApdexZone int
ApdexZone is a transaction classification.
func CalculateApdexZone ¶
CalculateApdexZone calculates the apdex based on the transaction duration and threshold.
Note that this does not take into account whether or not the transaction had an error. That is expected to be done by the caller.
type AttributeConfig ¶
type AttributeConfig struct {
// contains filtered or unexported fields
}
AttributeConfig is created at connect and shared between all transactions.
func CreateAttributeConfig ¶
func CreateAttributeConfig(input AttributeConfigInput, includeEnabled bool) *AttributeConfig
CreateAttributeConfig creates a new AttributeConfig.
type AttributeConfigInput ¶
type AttributeConfigInput struct { Attributes AttributeDestinationConfig ErrorCollector AttributeDestinationConfig TransactionEvents AttributeDestinationConfig BrowserMonitoring AttributeDestinationConfig TransactionTracer AttributeDestinationConfig SpanEvents AttributeDestinationConfig TraceSegments AttributeDestinationConfig }
AttributeConfigInput is used as the input to CreateAttributeConfig: it transforms newrelic.Config settings into an AttributeConfig.
type AttributeDestinationConfig ¶
AttributeDestinationConfig matches newrelic.AttributeDestinationConfig to avoid circular dependency issues.
type Attributes ¶
type Attributes struct { Agent agentAttributes // contains filtered or unexported fields }
Attributes are key value pairs attached to the various collected data types.
func NewAttributes ¶
func NewAttributes(config *AttributeConfig) *Attributes
NewAttributes creates a new Attributes.
func (*Attributes) GetAgentValue ¶
func (a *Attributes) GetAgentValue(id AgentAttributeID, d destinationSet) (string, interface{})
GetAgentValue is used to access agent attributes. This function returns ("", nil) if the attribute doesn't exist or it doesn't match the destinations provided.
type BetterCAT ¶
BetterCAT stores the transaction's priority and all fields related to a DistributedTracer's Cross-Application Trace.
type ConnectJSONCreator ¶
type ConnectJSONCreator interface {
CreateConnectJSON(*SecurityPolicies) ([]byte, error)
}
ConnectJSONCreator allows the creation of the connect payload JSON to be deferred until the SecurityPolicies are acquired and vetted.
type ConnectReply ¶
type ConnectReply struct { RunID AgentRunID `json:"agent_run_id"` RequestHeadersMap map[string]string `json:"request_headers_map"` MaxPayloadSizeInBytes int `json:"max_payload_size_in_bytes"` EntityGUID string `json:"entity_guid"` // Transaction Name Modifiers SegmentTerms segmentRules `json:"transaction_segment_terms"` TxnNameRules metricRules `json:"transaction_name_rules"` URLRules metricRules `json:"url_rules"` MetricRules metricRules `json:"metric_name_rules"` // Cross Process EncodingKey string `json:"encoding_key"` CrossProcessID string `json:"cross_process_id"` TrustedAccounts trustedAccountSet `json:"trusted_account_ids"` // Settings KeyTxnApdex map[string]float64 `json:"web_transactions_apdex"` ApdexThresholdSeconds float64 `json:"apdex_t"` CollectAnalyticsEvents bool `json:"collect_analytics_events"` CollectCustomEvents bool `json:"collect_custom_events"` CollectTraces bool `json:"collect_traces"` CollectErrors bool `json:"collect_errors"` CollectErrorEvents bool `json:"collect_error_events"` CollectSpanEvents bool `json:"collect_span_events"` // RUM AgentLoader string `json:"js_agent_loader"` Beacon string `json:"beacon"` BrowserKey string `json:"browser_key"` AppID string `json:"application_id"` ErrorBeacon string `json:"error_beacon"` JSAgentFile string `json:"js_agent_file"` // PreconnectReply fields are not in the connect reply, this embedding // is done to simplify code. PreconnectReply `json:"-"` Messages []struct { Message string `json:"message"` Level string `json:"level"` } `json:"messages"` AdaptiveSampler AdaptiveSampler // TraceIDGenerator creates random IDs for distributed tracing. It // exists here in the connect reply so it can be modified to create // deterministic identifiers in tests. TraceIDGenerator *TraceIDGenerator `json:"-"` // BetterCAT/Distributed Tracing AccountID string `json:"account_id"` TrustedAccountKey string `json:"trusted_account_key"` PrimaryAppID string `json:"primary_application_id"` SamplingTarget uint64 `json:"sampling_target"` SamplingTargetPeriodInSeconds int `json:"sampling_target_period_in_seconds"` ServerSideConfig struct { TransactionTracerEnabled *bool `json:"transaction_tracer.enabled"` // TransactionTracerThreshold should contain either a number or // "apdex_f" if it is non-nil. TransactionTracerThreshold interface{} `json:"transaction_tracer.transaction_threshold"` TransactionTracerStackTraceThreshold *float64 `json:"transaction_tracer.stack_trace_threshold"` ErrorCollectorEnabled *bool `json:"error_collector.enabled"` ErrorCollectorIgnoreStatusCodes []int `json:"error_collector.ignore_status_codes"` CrossApplicationTracerEnabled *bool `json:"cross_application_tracer.enabled"` } `json:"agent_config"` // Faster Event Harvest EventData EventHarvestConfig `json:"event_harvest_config"` // contains filtered or unexported fields }
ConnectReply contains all of the settings and state send down from the collector. It should not be modified after creation.
func ConnectReplyDefaults ¶
func ConnectReplyDefaults() *ConnectReply
ConnectReplyDefaults returns a newly allocated ConnectReply with the proper default settings. A pointer to a global is not used to prevent consumers from changing the default settings.
func ConstructConnectReply ¶
func ConstructConnectReply(body []byte, preconnect PreconnectReply) (*ConnectReply, error)
ConstructConnectReply takes the body of a Connect reply, in the form of bytes, and a PreconnectReply, and converts it into a *ConnectReply
func (*ConnectReply) ConfigurablePeriod ¶
func (r *ConnectReply) ConfigurablePeriod() time.Duration
ConfigurablePeriod returns the Faster Event Harvest configurable reporting period if it is set, or the default report period otherwise.
type CrossProcessMetadata ¶
CrossProcessMetadata represents the metadata that must be transmitted with an external request for CAT to work.
func HTTPHeaderToMetadata ¶
func HTTPHeaderToMetadata(header http.Header) CrossProcessMetadata
HTTPHeaderToMetadata gets the cross process metadata from the relevant HTTP headers.
type CustomEvent ¶
type CustomEvent struct {
// contains filtered or unexported fields
}
CustomEvent is a custom event.
func CreateCustomEvent ¶
func CreateCustomEvent(eventType string, params map[string]interface{}, now time.Time) (*CustomEvent, error)
CreateCustomEvent creates a custom event.
func (*CustomEvent) MarshalJSON ¶
func (e *CustomEvent) MarshalJSON() ([]byte, error)
MarshalJSON is used for testing.
func (*CustomEvent) MergeIntoHarvest ¶
func (e *CustomEvent) MergeIntoHarvest(h *Harvest)
MergeIntoHarvest implements Harvestable.
func (*CustomEvent) WriteJSON ¶
func (e *CustomEvent) WriteJSON(buf *bytes.Buffer)
WriteJSON prepares JSON in the format expected by the collector.
type CustomMetric ¶
CustomMetric is a custom metric.
func (CustomMetric) MergeIntoHarvest ¶
func (m CustomMetric) MergeIntoHarvest(h *Harvest)
MergeIntoHarvest implements Harvestable.
type DatastoreExternalTotals ¶
type DatastoreExternalTotals struct {
// contains filtered or unexported fields
}
DatastoreExternalTotals contains overview of external and datastore calls made during a transaction.
type DatastoreMetricKey ¶
type DatastoreMetricKey struct { Product string Collection string Operation string Host string PortPathOrID string }
DatastoreMetricKey contains the fields by which datastore metrics are aggregated.
type DfltHarvestCfgr ¶
type DfltHarvestCfgr struct {
// contains filtered or unexported fields
}
DfltHarvestCfgr implements HarvestConfigurer for internal test cases, and for situations where we don't have a ConnectReply, such as for serverless harvests
func (*DfltHarvestCfgr) MaxCustomEvents ¶
func (d *DfltHarvestCfgr) MaxCustomEvents() int
MaxCustomEvents returns the maximum number of Custom Events that should be reported per period
func (*DfltHarvestCfgr) MaxErrorEvents ¶
func (d *DfltHarvestCfgr) MaxErrorEvents() int
MaxErrorEvents returns the maximum number of Error Events that should be reported per period
func (*DfltHarvestCfgr) MaxSpanEvents ¶
func (d *DfltHarvestCfgr) MaxSpanEvents() int
MaxSpanEvents returns the maximum number of Span Events that should be reported per period
func (*DfltHarvestCfgr) MaxTxnEvents ¶
func (d *DfltHarvestCfgr) MaxTxnEvents() int
MaxTxnEvents returns the maximum number of Transaction Events that should be reported per period
func (*DfltHarvestCfgr) ReportPeriods ¶
func (d *DfltHarvestCfgr) ReportPeriods() map[HarvestTypes]time.Duration
ReportPeriods returns a map from the bitset of harvest types to the period that those types should be reported
type DistributedTracingSupport ¶
type DistributedTracingSupport struct { AcceptPayloadSuccess bool // AcceptPayload was called successfully AcceptPayloadException bool // AcceptPayload had a generic exception AcceptPayloadParseException bool // AcceptPayload had a parsing exception AcceptPayloadCreateBeforeAccept bool // AcceptPayload was ignored because CreatePayload had already been called AcceptPayloadIgnoredMultiple bool // AcceptPayload was ignored because AcceptPayload had already been called AcceptPayloadIgnoredVersion bool // AcceptPayload was ignored because the payload's major version was greater than the agent's AcceptPayloadUntrustedAccount bool // AcceptPayload was ignored because the payload was untrusted AcceptPayloadNullPayload bool // AcceptPayload was ignored because the payload was nil CreatePayloadSuccess bool // CreatePayload was called successfully CreatePayloadException bool // CreatePayload had a generic exception }
DistributedTracingSupport is used to track distributed tracing activity for supportability.
type EndDatastoreParams ¶
type EndDatastoreParams struct { TxnData *TxnData Thread *Thread Start SegmentStartTime Now time.Time Product string Collection string Operation string ParameterizedQuery string QueryParameters map[string]interface{} Host string PortPathOrID string Database string }
EndDatastoreParams contains the parameters for EndDatastoreSegment.
type EndExternalParams ¶
type EndExternalParams struct { TxnData *TxnData Thread *Thread Start SegmentStartTime Now time.Time Logger logger.Logger Response *http.Response URL *url.URL Host string Library string Method string }
EndExternalParams contains the parameters for EndExternalSegment.
type EndMessageParams ¶
type EndMessageParams struct { TxnData *TxnData Thread *Thread Start SegmentStartTime Now time.Time Logger logger.Logger DestinationName string Library string DestinationType string DestinationTemp bool }
EndMessageParams contains the parameters for EndMessageSegment.
type Environment ¶
type Environment struct { Compiler string `env:"runtime.Compiler"` GOARCH string `env:"runtime.GOARCH"` GOOS string `env:"runtime.GOOS"` Version string `env:"runtime.Version"` NumCPU int `env:"runtime.NumCPU"` }
Environment describes the application's environment.
func (Environment) MarshalJSON ¶
func (e Environment) MarshalJSON() ([]byte, error)
MarshalJSON prepares Environment JSON in the format expected by the collector during the connect command.
type ErrInvalidAttributeType ¶
type ErrInvalidAttributeType struct {
// contains filtered or unexported fields
}
ErrInvalidAttributeType is returned when the value is not valid.
func (ErrInvalidAttributeType) Error ¶
func (e ErrInvalidAttributeType) Error() string
type ErrPayloadMissingField ¶
type ErrPayloadMissingField struct {
// contains filtered or unexported fields
}
ErrPayloadMissingField indicates there's a required field that's missing
func (ErrPayloadMissingField) Error ¶
func (e ErrPayloadMissingField) Error() string
type ErrPayloadParse ¶
type ErrPayloadParse struct {
// contains filtered or unexported fields
}
ErrPayloadParse indicates that the payload was malformed.
func (ErrPayloadParse) Error ¶
func (e ErrPayloadParse) Error() string
type ErrUnsupportedPayloadVersion ¶
type ErrUnsupportedPayloadVersion struct {
// contains filtered or unexported fields
}
ErrUnsupportedPayloadVersion indicates that the major version number is unknown.
func (ErrUnsupportedPayloadVersion) Error ¶
func (e ErrUnsupportedPayloadVersion) Error() string
type ErrorData ¶
type ErrorData struct { When time.Time Stack StackTrace ExtraAttributes map[string]interface{} Msg string Klass string }
ErrorData contains the information about a recorded error.
func TxnErrorFromPanic ¶
TxnErrorFromPanic creates a new TxnError from a panic.
type ErrorEvent ¶
type ErrorEvent TxnError
ErrorEvent and tracedError are separate types so that error events and traced errors can have different WriteJSON methods.
func (*ErrorEvent) MarshalJSON ¶
func (e *ErrorEvent) MarshalJSON() ([]byte, error)
MarshalJSON is used for testing.
func (*ErrorEvent) WriteJSON ¶
func (e *ErrorEvent) WriteJSON(buf *bytes.Buffer)
WriteJSON prepares JSON in the format expected by the collector. https://source.datanerd.us/agents/agent-specs/blob/master/Error-Events.md
type EventHarvestConfig ¶
type EventHarvestConfig struct { ReportPeriodMs int `json:"report_period_ms,omitempty"` Limits struct { TxnEvents *uint `json:"analytic_event_data,omitempty"` CustomEvents *uint `json:"custom_event_data,omitempty"` ErrorEvents *uint `json:"error_event_data,omitempty"` SpanEvents *uint `json:"span_event_data,omitempty"` } `json:"harvest_limits"` }
EventHarvestConfig contains fields relating to faster event harvest. This structure is used in the connect request (to send up defaults) and in the connect response (to get the server values).
https://source.datanerd.us/agents/agent-specs/blob/master/Connect-LEGACY.md#event_harvest_config-hash https://source.datanerd.us/agents/agent-specs/blob/master/Connect-LEGACY.md#event-harvest-config
func DefaultEventHarvestConfig ¶
func DefaultEventHarvestConfig(eventer MaxTxnEventer) EventHarvestConfig
DefaultEventHarvestConfig provides faster event harvest defaults.
type Expect ¶
type Expect interface { ExpectCustomEvents(t Validator, want []WantEvent) ExpectErrors(t Validator, want []WantError) ExpectErrorEvents(t Validator, want []WantEvent) ExpectTxnEvents(t Validator, want []WantEvent) ExpectMetrics(t Validator, want []WantMetric) ExpectMetricsPresent(t Validator, want []WantMetric) ExpectTxnMetrics(t Validator, want WantTxn) ExpectTxnTraces(t Validator, want []WantTxnTrace) ExpectSlowQueries(t Validator, want []WantSlowQuery) ExpectSpanEvents(t Validator, want []WantEvent) }
Expect exposes methods that allow for testing whether the correct data was captured.
type Harvest ¶
type Harvest struct { Metrics *metricTable ErrorTraces harvestErrors TxnTraces *harvestTraces SlowSQLs *slowQueries SpanEvents *spanEvents CustomEvents *customEvents TxnEvents *txnEvents ErrorEvents *errorEvents // contains filtered or unexported fields }
Harvest contains collected data.
func NewHarvest ¶
func NewHarvest(now time.Time, configurer HarvestConfigurer) *Harvest
NewHarvest returns a new Harvest.
func (*Harvest) CreateFinalMetrics ¶
func (h *Harvest) CreateFinalMetrics(reply *ConnectReply, hc HarvestConfigurer)
CreateFinalMetrics creates extra metrics at harvest time.
func (*Harvest) Payloads ¶
func (h *Harvest) Payloads(splitLargeTxnEvents bool) (ps []PayloadCreator)
Payloads returns a slice of payload creators.
type HarvestConfigurer ¶
type HarvestConfigurer interface { // ReportPeriods returns a map from the bitset of harvest types to the period that those types should be reported ReportPeriods() map[HarvestTypes]time.Duration // MaxSpanEvents returns the maximum number of Span Events that should be reported per period MaxSpanEvents() int // MaxCustomEvents returns the maximum number of Custom Events that should be reported per period MaxCustomEvents() int // MaxErrorEvents returns the maximum number of Error Events that should be reported per period MaxErrorEvents() int MaxTxnEventer }
HarvestConfigurer contains information about the configured number of various types of events as well as the Faster Event Harvest report period. It is implemented by AppRun and DfltHarvestCfgr.
type HarvestTestinger ¶
type HarvestTestinger interface {
HarvestTesting(replyfn func(*ConnectReply))
}
HarvestTestinger is implemented by the app. It sets an empty test harvest and modifies the connect reply if a callback is provided.
type HarvestTrace ¶
HarvestTrace contains a finished transaction trace ready for serialization to the collector.
func (*HarvestTrace) MarshalJSON ¶
func (trace *HarvestTrace) MarshalJSON() ([]byte, error)
MarshalJSON is used for testing.
TODO: Eliminate this entirely by using harvestTraces.Data().
type HarvestTypes ¶
type HarvestTypes uint
HarvestTypes is a bit set used to indicate which data types are ready to be reported.
const ( // HarvestMetricsTraces is the Metrics Traces type HarvestMetricsTraces HarvestTypes = 1 << iota // HarvestSpanEvents is the Span Event type HarvestSpanEvents // HarvestCustomEvents is the Custom Event type HarvestCustomEvents // HarvestTxnEvents is the Transaction Event type HarvestTxnEvents // HarvestErrorEvents is the Error Event type HarvestErrorEvents )
type Harvestable ¶
type Harvestable interface {
MergeIntoHarvest(h *Harvest)
}
Harvestable is something that can be merged into a Harvest.
type JSONString ¶
type JSONString string
JSONString assists in logging JSON: Based on the formatter used to log Context contents, the contents could be marshalled as JSON or just printed directly.
func (JSONString) MarshalJSON ¶
func (js JSONString) MarshalJSON() ([]byte, error)
MarshalJSON returns the JSONString unmodified without any escaping.
type Labels ¶
Labels is used for connect JSON formatting.
type MaxTxnEventer ¶
type MaxTxnEventer interface {
MaxTxnEvents() int
}
MaxTxnEventer returns the maximum number of Transaction Events that should be reported per period
type MessageMetricKey ¶
type MessageMetricKey struct { Library string DestinationType string Consumer bool DestinationName string DestinationTemp bool }
MessageMetricKey is the key to use for message segments.
func (MessageMetricKey) Name ¶
func (key MessageMetricKey) Name() string
Name returns the metric name value for this MessageMetricKey to be used for scoped and unscoped metrics.
Producers MessageBroker/{Library}/{Destination Type}/{Action}/Named/{Destination Name} MessageBroker/{Library}/{Destination Type}/{Action}/Temp
Consumers OtherTransaction/Message/{Library}/{DestinationType}/Named/{Destination Name} OtherTransaction/Message/{Library}/{DestinationType}/Temp
type Payload ¶
type Payload struct { TransactionID string `json:"tx,omitempty"` ID string `json:"id,omitempty"` TracedID string `json:"tr"` Priority Priority `json:"pr"` Sampled *bool `json:"sa"` Timestamp timestampMillis `json:"ti"` TransportDuration time.Duration `json:"-"` // contains filtered or unexported fields }
Payload is the distributed tracing payload.
func AcceptPayload ¶
AcceptPayload parses the inbound distributed tracing payload.
func (Payload) HTTPSafe ¶
HTTPSafe implements newrelic.DistributedTracePayload.
func (Payload) IsValid ¶
IsValid validates the payload data by looking for missing fields. Returns an error if there's a problem, nil if everything's fine
func (*Payload) SetSampled ¶
SetSampled lets us set a value for our *bool, which we can't do directly since a pointer needs something to point at.
type PayloadCreator ¶
type PayloadCreator interface { // In the event of a rpm request failure (hopefully simply an // intermittent collector issue) the payload may be merged into the next // time period's harvest. Harvestable // Data prepares JSON in the format expected by the collector endpoint. // This method should return (nil, nil) if the payload is empty and no // rpm request is necessary. Data(agentRunID string, harvestStart time.Time) ([]byte, error) // EndpointMethod is used for the "method" query parameter when posting // the data. EndpointMethod() string }
PayloadCreator is a data type in the harvest.
type PreconnectReply ¶
type PreconnectReply struct { Collector string `json:"redirect_host"` SecurityPolicies SecurityPolicies `json:"security_policies"` }
PreconnectReply contains settings from the preconnect endpoint.
type Priority ¶
type Priority float32
Priority allows for a priority sampling of events. When an event is created it is given a Priority. Whenever an event pool is full and events need to be dropped, the events with the lowest priority are dropped.
func (Priority) Float32 ¶
Float32 returns the priority as a float32.
func (*Priority) MarshalJSON ¶
MarshalJSON limits the number of decimals.
type RPMResponse ¶
type RPMResponse struct { // Err indicates whether or not the call was successful: newRPMResponse // should be used to avoid mismatch between statusCode and Err. Err error // contains filtered or unexported fields }
RPMResponse contains a NR endpoint response.
Agent Behavior Summary:
on connect/preconnect:
410 means shutdown 200, 202 mean success (start run) all other response codes and errors mean try after backoff
on harvest:
410 means shutdown 401, 409 mean restart run 408, 429, 500, 503 mean save data for next harvest all other response codes and errors discard the data and continue the current harvest
func CollectorRequest ¶
func CollectorRequest(cmd RpmCmd, cs RpmControls) RPMResponse
CollectorRequest makes a request to New Relic.
func (RPMResponse) IsDisconnect ¶
func (resp RPMResponse) IsDisconnect() bool
IsDisconnect indicates that the agent should disconnect.
func (RPMResponse) IsRestartException ¶
func (resp RPMResponse) IsRestartException() bool
IsRestartException indicates that the agent should restart.
func (RPMResponse) ShouldSaveHarvestData ¶
func (resp RPMResponse) ShouldSaveHarvestData() bool
ShouldSaveHarvestData indicates that the agent should save the data and try to send it in the next harvest.
type RpmCmd ¶
type RpmCmd struct { Name string Collector string RunID string Data []byte RequestHeadersMap map[string]string MaxPayloadSize int }
RpmCmd contains fields specific to an individual call made to RPM.
type RpmControls ¶
type RpmControls struct { License string Client *http.Client Logger logger.Logger AgentVersion string GzipWriterPool *sync.Pool }
RpmControls contains fields which will be the same for all calls made by the same application.
type Sample ¶
type Sample struct {
// contains filtered or unexported fields
}
Sample is a system/runtime snapshot.
type SampleNothing ¶
type SampleNothing struct{}
SampleNothing is used when the application is not yet connected.
type Samples ¶
Samples is used as the parameter to GetStats to avoid mixing up the previous and current sample.
type SecurityPolicies ¶
type SecurityPolicies struct { RecordSQL securityPolicy `json:"record_sql"` AttributesInclude securityPolicy `json:"attributes_include"` AllowRawExceptionMessages securityPolicy `json:"allow_raw_exception_messages"` CustomEvents securityPolicy `json:"custom_events"` CustomParameters securityPolicy `json:"custom_parameters"` }
SecurityPolicies contains the security policies.
func (*SecurityPolicies) PointerIfPopulated ¶
func (sp *SecurityPolicies) PointerIfPopulated() *SecurityPolicies
PointerIfPopulated returns a reference to the security policies if they have been populated from JSON.
func (*SecurityPolicies) UnmarshalJSON ¶
func (sp *SecurityPolicies) UnmarshalJSON(data []byte) (er error)
UnmarshalJSON decodes security policies sent from the preconnect endpoint.
type SegmentStartTime ¶
type SegmentStartTime struct { Stamp segmentStamp Depth int }
SegmentStartTime is embedded into the top level segments (rather than segmentTime) to minimize the structure sizes to minimize allocations.
type ServerlessHarvest ¶
type ServerlessHarvest struct { // The Lambda handler could be using multiple goroutines so we use a // mutex to prevent race conditions. sync.Mutex // contains filtered or unexported fields }
ServerlessHarvest is used to store and log data when the agent is running in serverless mode.
func NewServerlessHarvest ¶
func NewServerlessHarvest(logger logger.Logger, version string, getEnv func(string) string) *ServerlessHarvest
NewServerlessHarvest creates a new ServerlessHarvest.
func (*ServerlessHarvest) Consume ¶
func (sh *ServerlessHarvest) Consume(data Harvestable)
Consume adds data to the harvest.
func (*ServerlessHarvest) Write ¶
func (sh *ServerlessHarvest) Write(arn string, writer io.Writer)
Write logs the data in the format described by: https://source.datanerd.us/agents/agent-specs/blob/master/Lambda.md
type ServerlessWriter ¶
ServerlessWriter is implemented by newrelic.Application.
type SpanAttribute ¶
type SpanAttribute string
SpanAttribute is an attribute put in span events.
const ( // These span attributes are added by aws sdk instrumentation. // https://source.datanerd.us/agents/agent-specs/blob/master/implementation_guides/aws-sdk.md#span-and-segment-attributes SpanAttributeAWSOperation SpanAttribute = "aws.operation" SpanAttributeAWSRequestID SpanAttribute = "aws.requestId" SpanAttributeAWSRegion SpanAttribute = "aws.region" )
These span event string constants must match the contents of the top level attributes.go file.
func (SpanAttribute) String ¶
func (sa SpanAttribute) String() string
type SpanEvent ¶
type SpanEvent struct { TraceID string GUID string ParentID string TransactionID string Sampled bool Priority Priority Timestamp time.Time Duration time.Duration Name string Category spanCategory Component string Kind string IsEntrypoint bool Attributes spanAttributeMap }
SpanEvent represents a span event, necessary to support Distributed Tracing.
func (*SpanEvent) MarshalJSON ¶
MarshalJSON is used for testing.
type StackTrace ¶
type StackTrace []uintptr
StackTrace is a stack trace.
func (StackTrace) MarshalJSON ¶
func (st StackTrace) MarshalJSON() ([]byte, error)
MarshalJSON prepares JSON in the format expected by the collector.
func (StackTrace) WriteJSON ¶
func (st StackTrace) WriteJSON(buf *bytes.Buffer)
WriteJSON adds the stack trace to the buffer in the JSON form expected by the collector.
type Stats ¶
type Stats struct {
// contains filtered or unexported fields
}
Stats contains system information for a period of time.
type Thread ¶
type Thread struct {
// contains filtered or unexported fields
}
Thread contains a segment stack that is used to track segment parenting time within a single goroutine.
func NewThread ¶
NewThread returns a new Thread to track segments in a new goroutine.
func (*Thread) AddAgentSpanAttribute ¶
func (thread *Thread) AddAgentSpanAttribute(key SpanAttribute, val string)
AddAgentSpanAttribute allows attributes to be added to spans.
func (*Thread) RecordActivity ¶
RecordActivity indicates that activity happened at this time on this goroutine which helps track total time.
type TraceIDGenerator ¶
TraceIDGenerator creates identifiers for distributed tracing.
func NewTraceIDGenerator ¶
func NewTraceIDGenerator(seed int64) *TraceIDGenerator
NewTraceIDGenerator creates a new trace identifier generator.
func (*TraceIDGenerator) GenerateTraceID ¶
func (tg *TraceIDGenerator) GenerateTraceID() string
GenerateTraceID creates a new trace identifier.
type TxnCrossProcess ¶
type TxnCrossProcess struct { // The user side switch controlling whether CAT is enabled or not. Enabled bool // The user side switch controlling whether Distributed Tracing is enabled or not // This is required by synthetics support. If Distributed Tracing is enabled, // any synthetics functionality that is triggered should not set nr.guid. DistributedTracingEnabled bool // Rather than copying in the entire ConnectReply, here are the fields that // we need to support CAT. CrossProcessID []byte EncodingKey []byte TrustedAccounts trustedAccountSet // CAT state for a given transaction. Type uint8 ClientID string GUID string TripID string PathHash string AlternatePathHashes map[string]bool ReferringPathHash string ReferringTxnGUID string Synthetics *cat.SyntheticsHeader // The encoded synthetics header received as part of the request headers, if // any. By storing this here, we avoid needing to marshal the invariant // Synthetics struct above each time an external segment is created. SyntheticsHeader string }
TxnCrossProcess contains the metadata required for CAT and Synthetics headers, transaction events, and traces.
func (*TxnCrossProcess) CreateAppData ¶
func (txp *TxnCrossProcess) CreateAppData(name string, queueTime, responseTime time.Duration, contentLength int64) (string, error)
CreateAppData creates the appData value that should be sent with a response to ensure CAT operates as expected.
func (*TxnCrossProcess) CreateCrossProcessMetadata ¶
func (txp *TxnCrossProcess) CreateCrossProcessMetadata(txnName, appName string) (CrossProcessMetadata, error)
CreateCrossProcessMetadata generates request metadata that enable CAT and Synthetics support for an external segment.
func (*TxnCrossProcess) Finalise ¶
func (txp *TxnCrossProcess) Finalise(txnName, appName string) error
Finalise handles any end-of-transaction tasks. In practice, this simply means ensuring the path hash is set if it hasn't already been.
func (*TxnCrossProcess) InboundHTTPRequest ¶
func (txp *TxnCrossProcess) InboundHTTPRequest(hdr http.Header) error
InboundHTTPRequest adds the inbound request metadata to the TxnCrossProcess.
func (*TxnCrossProcess) Init ¶
func (txp *TxnCrossProcess) Init(enabled bool, dt bool, reply *ConnectReply)
Init initialises a TxnCrossProcess based on the given application connect reply.
func (*TxnCrossProcess) IsInbound ¶
func (txp *TxnCrossProcess) IsInbound() bool
IsInbound returns true if the transaction had inbound CAT headers.
func (*TxnCrossProcess) IsOutbound ¶
func (txp *TxnCrossProcess) IsOutbound() bool
IsOutbound returns true if the transaction has generated outbound CAT headers.
func (*TxnCrossProcess) IsSynthetics ¶
func (txp *TxnCrossProcess) IsSynthetics() bool
IsSynthetics returns true if the transaction had inbound Synthetics headers.
func (*TxnCrossProcess) ParseAppData ¶
func (txp *TxnCrossProcess) ParseAppData(encodedAppData string) (*cat.AppDataHeader, error)
ParseAppData decodes the given appData value.
func (*TxnCrossProcess) SetInbound ¶
func (txp *TxnCrossProcess) SetInbound(inbound bool)
SetInbound sets the inbound CAT flag. This function is provided only for internal and unit testing purposes, and should not be used outside of this package normally.
func (*TxnCrossProcess) SetOutbound ¶
func (txp *TxnCrossProcess) SetOutbound(outbound bool)
SetOutbound sets the outbound CAT flag. This function is provided only for internal and unit testing purposes, and should not be used outside of this package normally.
func (*TxnCrossProcess) SetSynthetics ¶
func (txp *TxnCrossProcess) SetSynthetics(synthetics bool)
SetSynthetics sets the Synthetics CAT flag. This function is provided only for internal and unit testing purposes, and should not be used outside of this package normally.
func (*TxnCrossProcess) Used ¶
func (txp *TxnCrossProcess) Used() bool
Used returns true if any CAT or Synthetics related functionality has been triggered on the transaction.
type TxnData ¶
type TxnData struct { TxnEvent IsWeb bool Name string // Work in progress name. Errors TxnErrors // Lazily initialized. Stop time.Time ApdexThreshold time.Duration TraceIDGenerator *TraceIDGenerator LazilyCalculateSampled func() bool SpanEventsEnabled bool TxnTrace SlowQueriesEnabled bool SlowQueryThreshold time.Duration SlowQueries *slowQueries // These better CAT supportability fields are left outside of // TxnEvent.BetterCAT to minimize the size of transaction event memory. DistributedTracingSupport // contains filtered or unexported fields }
TxnData contains the recorded data of a transaction.
func (*TxnData) CurrentSpanIdentifier ¶
CurrentSpanIdentifier returns the identifier of the span at the top of the segment stack.
type TxnError ¶
TxnError combines error data with information about a transaction. TxnError is used for both error events and traced errors.
type TxnErrors ¶
type TxnErrors []*ErrorData
TxnErrors is a set of errors captured in a Transaction.
func NewTxnErrors ¶
NewTxnErrors returns a new empty TxnErrors.
type TxnEvent ¶
type TxnEvent struct { FinalName string Start time.Time Duration time.Duration TotalTime time.Duration Queuing time.Duration Zone ApdexZone Attrs *Attributes DatastoreExternalTotals CrossProcess TxnCrossProcess BetterCAT BetterCAT HasError bool }
TxnEvent represents a transaction. https://source.datanerd.us/agents/agent-specs/blob/master/Transaction-Events-PORTED.md https://newrelic.atlassian.net/wiki/display/eng/Agent+Support+for+Synthetics%3A+Forced+Transaction+Traces+and+Analytic+Events
func (*TxnEvent) MarshalJSON ¶
MarshalJSON is used for testing.
type TxnTrace ¶
type TxnTrace struct { Enabled bool SegmentThreshold time.Duration StackTraceThreshold time.Duration // contains filtered or unexported fields }
TxnTrace contains the work in progress transaction trace.
type WantError ¶
type WantError struct { TxnName string Msg string Klass string UserAttributes map[string]interface{} AgentAttributes map[string]interface{} }
WantError is a traced error expectation.
type WantEvent ¶
type WantEvent struct { Intrinsics map[string]interface{} UserAttributes map[string]interface{} AgentAttributes map[string]interface{} }
WantEvent is a transaction or error event expectation.
type WantMetric ¶
type WantMetric struct { Name string Scope string Forced interface{} // true, false, or nil Data []float64 }
WantMetric is a metric expectation. If Data is nil, then any data values are acceptable. If Data has len 1, then only the metric count is validated.
type WantSlowQuery ¶
type WantSlowQuery struct { Count int32 MetricName string Query string TxnName string TxnURL string DatabaseName string Host string PortPathOrID string Params map[string]interface{} }
WantSlowQuery is a slowQuery expectation.
type WantTraceSegment ¶
type WantTraceSegment struct { SegmentName string // RelativeStartMillis and RelativeStopMillis will be tested if they are // provided: This makes it easy for top level tests which cannot // control duration. RelativeStartMillis interface{} RelativeStopMillis interface{} Attributes map[string]interface{} Children []WantTraceSegment }
WantTraceSegment is a transaction trace segment expectation.
type WantTxn ¶
WantTxn provides the expectation parameters to ExpectTxnMetrics.
type WantTxnTrace ¶
type WantTxnTrace struct { MetricName string NumSegments int UserAttributes map[string]interface{} AgentAttributes map[string]interface{} Intrinsics map[string]interface{} // If the Root's SegmentName is populated then the segments will be // tested, otherwise NumSegments will be tested. Root WantTraceSegment }
WantTxnTrace is a transaction trace expectation.
Source Files ¶
- adaptive_sampler.go
- analytics_events.go
- apdex.go
- attributes.go
- browser.go
- collector.go
- compress.go
- connect_reply.go
- context.go
- cross_process_http.go
- custom_event.go
- custom_events.go
- custom_metric.go
- distributed_tracing.go
- environment.go
- error_events.go
- errors.go
- expect.go
- harvest.go
- intrinsics.go
- json_object_writer.go
- labels.go
- limits.go
- metric_names.go
- metric_rules.go
- metrics.go
- obfuscate.go
- priority.go
- queuing.go
- rand.go
- rules_cache.go
- sampler.go
- security_policies.go
- segment_terms.go
- serverless.go
- slow_queries.go
- span_events.go
- stack_frame.go
- stacktrace.go
- trace_id_generator.go
- tracing.go
- txn_cross_process.go
- txn_events.go
- txn_trace.go
- url.go
- utilities.go
Directories ¶
Path | Synopsis |
---|---|
Package cat provides functionality related to the wire format of CAT headers.
|
Package cat provides functionality related to the wire format of CAT headers. |
Package integrationsupport exists to expose functionality to integration packages without adding noise to the public API.
|
Package integrationsupport exists to expose functionality to integration packages without adding noise to the public API. |
Package jsonx extends the encoding/json package to encode JSON incrementally and without requiring reflection.
|
Package jsonx extends the encoding/json package to encode JSON incrementally and without requiring reflection. |
Package stacktracetest helps test stack trace behavior.
|
Package stacktracetest helps test stack trace behavior. |
tools
|
|
Package utilization implements the Utilization spec, available at https://source.datanerd.us/agents/agent-specs/blob/master/Utilization.md
|
Package utilization implements the Utilization spec, available at https://source.datanerd.us/agents/agent-specs/blob/master/Utilization.md |