scout_apm v0.3.1 API Reference


Documentation for ScoutApm

A centralized place to log & note any agent misconfigurations, interesting occurances, or other things that’d normally be log messages

Takes a TrackedRequest, and routes it onward to the correct Store

Public interface to configuration settings. Reads from several configuration sources, giving each an opportunity to respond with its value before trying the next

Takes “raw” values from various config sources, and turns them into the requested format

Always says it contains key, and the value is always nil

Public API for easily adding Context to a running request

Internal representation of a Context. As a user of ScoutApm, you likely will not need this module

Stores a single or multiple runs of a background job. Both metadata (“queue” and “name”), and metrics (“total time”, “metrics”)

Internal to the ScoutAPM agent

Store a single metric, that may contain aggregated data around many calls to that metric. Uniquely identified by type / name / desc / scope

A record of a single trace

Logger for all ScoutApm modules

A way to absorb & combine metrics into a single set, keeping track of min/max/count, etc

A separate payload from the rest, this is data sent up at application boot time. This allows the UI to know immeidately when a new application starts up, and helps us debug interactions with various 3rd party libraries

Converts a list of ScoutApm.Internal.Context types into an appropriate data structure to serialize via Poison.encode!

Awkward name - we have two different metric formats in the Ruby agent, Jobs use this one. It’s more flexible, but annoying that we have 2 formats

The payload structure for a single SlowTransaction / Trace

Internal to ScoutApm agent

A capped set type that has a few rules on inclusion

Singleton that manages the state of the Agent’s data. Mostly just routes data to the correct per-minute data structure

Ths module contains functions to create transactions and time the execution of code. It’s used to add instrumentation to an Elixir app

Stores information about a single request, as the request is happening. Attempts to do minimal processing. Its job is only to collect up information. Once the request is finished, the last layer will be stopped - and we can send this whole data structure off to be processed

A simple module to log when a watched process fails. Only works to watch module based workers currently, not arbitrary pids. See usage in application.ex