AppSignal v1.13.5 Appsignal.Transaction View Source
Functions related to AppSignal transactions
This module contains functions for starting and stopping an AppSignal transaction, recording events and collecting metrics within a transaction, et cetera.
All functions take a Transaction
as their first parameter. It is
possible to omit this parameter, in which case it is assumed that
the calling process has already an associated Transaction (the
"current" transaction). This is the case after Transaction.start/2
has been called from within the same process.
Link to this section Summary
Functions
Complete the current transaction. See complete/1
.
Complete a transaction
Create a transaction with a transaction resource.
Finish a transaction
Finish an event for the current transaction. See finish_event/5
.
Finish an event
Generate a random id as a string to use as transaction identifier.
Return the transaction for the given process
Record a finished event for the current transaction. See record_event/6
.
Record a finished event
Set action of the current transaction. See set_action/1
.
Set action of a transaction
Set an error for a the current transaction. See set_error/4
.
Set an error for a transaction
Set metadata for the current transaction from an enumerable. The enumerable needs to be a keyword list or a map.
Set metadata for the current transaction. See set_meta_data/3
.
Set metadata for a transaction
Set namespace of the current transaction. See set_namespace/1
.
Set namespace of a transaction
Set queue start time of the current transaction. See set_queue_start/2
.
Set queue start time of a transaction
Set the request metadata, given a Plug.Conn.t.
Set sample data for the current transaction. See set_sample_data/3
.
Set sample data for a transaction
Create and register a transaction.
Start an event for the current transaction. See start_event/1
Start an event
Given the transaction and a %Plug.Conn{}, try to set the Phoenix controller module / action in the transaction.
Link to this section Types
Specs
Datatype which is used as a handle to the current AppSignal transaction.
Link to this section Functions
Specs
complete() :: :ok | nil
Complete the current transaction. See complete/1
.
Specs
Complete a transaction
Call this after finishing a transaction (and adding sample data if necessary).
transaction
: The pointer to the transaction this event occurred in
Specs
Create a transaction with a transaction resource.
Specs
finish() :: :sample | :no_sample | nil
Finish the current transaction. See finish/1
.
Specs
Finish a transaction
Call this when a transaction such as a http request or background job ends.
transaction
: The pointer to the transaction this event occurred in
Returns :sample
whether sample data for this transaction should be
collected.
Specs
Finish an event for the current transaction. See finish_event/5
.
Specs
Finish an event
Call this when an event ends.
transaction
: The pointer to the transaction this event occurred inname
: Name of the category of the event (sql.query, net.http)title
: Title of the event ('User load', 'Http request to google.com')body
: Body of the event, should not contain unique information per specific event (select * from users where id=?
)body_format
Format of the event's body which can be used for sanitization, 0 for general and 1 for sql currently.
Specs
generate_id() :: String.t()
Generate a random id as a string to use as transaction identifier.
lookup_or_create_transaction(origin \\ self(), namespace \\ :background_job)
View SourceReturn the transaction for the given process
Creates a new one when not found. Can also return nil
; in that
case, we should not continue submitting the transaction.
Specs
Record a finished event for the current transaction. See record_event/6
.
record_event(transaction, name, title, body, duration, body_format)
View SourceSpecs
Record a finished event
Call this when an event which you cannot track the start for ends. This function can only be used for events that do not have children such as database queries. GC metrics and allocation counts will be tracked in the parent of this event.
transaction
: The pointer to the transaction this event occurred inname
: Name of the category of the event (sql.query, net.http)title
: Title of the event ('User load', 'Http request to google.com')body
: Body of the event, should not contain unique information per specific event (select * from users where id=?
)duration
: Duration of this event in nanosecondsbody_format
Format of the event's body which can be used for sanitization, 0 for general and 1 for sql currently.
Specs
Set action of the current transaction. See set_action/1
.
Specs
Set action of a transaction
Call this when the identifying action of a transaction is known.
transaction
: The pointer to the transaction this event occurred inaction
: This transactions action ("HomepageController.show"
)
Specs
Set an error for a the current transaction. See set_error/4
.
Specs
Set an error for a transaction
Call this when an error occurs within a transaction.
transaction
: The pointer to the transaction this event occurred inname
: Name of the error (RuntimeError)message
: Message of the error ('undefined method call for something')backtrace
: Backtrace of the error; will be JSON encoded
Specs
Set metadata for the current transaction from an enumerable. The enumerable needs to be a keyword list or a map.
Specs
Set metadata for the current transaction. See set_meta_data/3
.
Specs
Set metadata for a transaction
Call this when an error occurs within a transaction to set more detailed data about the error
transaction
: The pointer to the transaction this event occurred inkey
: Key of this piece of metadata ("email"
)value
: Value of this piece of metadata ("thijs@appsignal.com"
)
Specs
Set namespace of the current transaction. See set_namespace/1
.
Specs
Set namespace of a transaction
Call this to override the transaction's namespace.
transaction
: The pointer to the transaction this event occurred innamespace
: This transaction's action (:
)
Specs
Set queue start time of the current transaction. See set_queue_start/2
.
Specs
Set queue start time of a transaction
Call this when the queue start time in miliseconds is known.
transaction
: The pointer to the transaction this event occurred inqueue_start
: Transaction queue start time in ms if known
Specs
set_request_metadata(t() | any(), Plug.Conn.t()) :: t() | nil
Set the request metadata, given a Plug.Conn.t.
Specs
Set sample data for the current transaction. See set_sample_data/3
.
Specs
Set sample data for a transaction
Use this to add sample data if finish_transaction returns true.
transaction
: The pointer to the transaction this event occurred inkey
: Key of this piece of metadata (params, session_data)payload
: Metadata (e.g.%{user_id: 1}
); will be JSON encoded
Specs
Create and register a transaction.
Call this when a transaction such as a http request or background job starts.
Parameters:
transaction_id
The unique identifier of this transaction.namespace
The namespace of this transaction. Defaults to :background_job.
The function returns a %Transaction{}
struct for use with the
other transaction functions in this module.
The returned transaction is also associated with the calling
process, so that processes / callbacks which don't get the
transaction passed in can still look it up through the
Appsignal.TransactionRegistry
.
Specs
start_event() :: t() | nil
Start an event for the current transaction. See start_event/1
Specs
Start an event
Call this when an event within a transaction you want to measure starts, such as an SQL query or http request.
transaction
: The pointer to the transaction this event occurred in.
Given the transaction and a %Plug.Conn{}, try to set the Phoenix controller module / action in the transaction.