# scout_apm v2.0.0 - API Reference

## Modules

- [ScoutApm](ScoutApm.md): Documentation for ScoutApm.

- [ScoutApm.AgentNote](ScoutApm.AgentNote.md): A centralized place to log & note any agent misconfigurations, interesting
occurances, or other things that'd normally be log messages.

- [ScoutApm.Collector](ScoutApm.Collector.md)
- [ScoutApm.Command](ScoutApm.Command.md)
- [ScoutApm.Command.ApplicationEvent](ScoutApm.Command.ApplicationEvent.md)
- [ScoutApm.Command.Batch](ScoutApm.Command.Batch.md)
- [ScoutApm.Command.CoreAgentVersion](ScoutApm.Command.CoreAgentVersion.md)
- [ScoutApm.Command.FinishRequest](ScoutApm.Command.FinishRequest.md)
- [ScoutApm.Command.Register](ScoutApm.Command.Register.md)
- [ScoutApm.Command.StartRequest](ScoutApm.Command.StartRequest.md)
- [ScoutApm.Command.StartSpan](ScoutApm.Command.StartSpan.md)
- [ScoutApm.Command.StopSpan](ScoutApm.Command.StopSpan.md)
- [ScoutApm.Command.TagRequest](ScoutApm.Command.TagRequest.md)
- [ScoutApm.Command.TagSpan](ScoutApm.Command.TagSpan.md)
- [ScoutApm.Config](ScoutApm.Config.md): Public interface to configuration settings. Reads from several configuration
sources, giving each an opportunity to respond with its value before trying
the next.
- [ScoutApm.Config.Application](ScoutApm.Config.Application.md)
- [ScoutApm.Config.Coercions](ScoutApm.Config.Coercions.md): Takes "raw" values from various config sources, and turns them into the
requested format.

- [ScoutApm.Config.Defaults](ScoutApm.Config.Defaults.md)
- [ScoutApm.Config.Env](ScoutApm.Config.Env.md)
- [ScoutApm.Config.Null](ScoutApm.Config.Null.md): Always says it contains key, and the value is always nil

- [ScoutApm.Context](ScoutApm.Context.md): Public API for easily adding Context to a running request.
- [ScoutApm.Core](ScoutApm.Core.md)
- [ScoutApm.Core.AgentManager](ScoutApm.Core.AgentManager.md)
- [ScoutApm.Core.Manifest](ScoutApm.Core.Manifest.md)
- [ScoutApm.DevTrace](ScoutApm.DevTrace.md)
- [ScoutApm.DevTrace.Plug](ScoutApm.DevTrace.Plug.md)
- [ScoutApm.DirectAnalysisStore](ScoutApm.DirectAnalysisStore.md)
- [ScoutApm.Error](ScoutApm.Error.md): Public API for capturing errors in Scout APM.
- [ScoutApm.Error.ErrorData](ScoutApm.Error.ErrorData.md): Internal representation of an error to be sent to Scout APM.

- [ScoutApm.Error.ErrorService](ScoutApm.Error.ErrorService.md): Background GenServer that batches and sends errors to Scout APM's error endpoint.
- [ScoutApm.Error.ParameterFilter](ScoutApm.Error.ParameterFilter.md): Filters sensitive parameters from request data before sending to Scout APM.

- [ScoutApm.Instrumentation](ScoutApm.Instrumentation.md)
- [ScoutApm.Instruments.EExEngine](ScoutApm.Instruments.EExEngine.md)
- [ScoutApm.Instruments.EctoLogger](ScoutApm.Instruments.EctoLogger.md)
- [ScoutApm.Instruments.EctoTelemetry](ScoutApm.Instruments.EctoTelemetry.md)
- [ScoutApm.Instruments.ExsEngine](ScoutApm.Instruments.ExsEngine.md)
- [ScoutApm.Instruments.FinchTelemetry](ScoutApm.Instruments.FinchTelemetry.md): Telemetry handler for Finch HTTP client instrumentation.
- [ScoutApm.Instruments.HEExEngine](ScoutApm.Instruments.HEExEngine.md): Scout APM instrumentation for Phoenix HEEx templates (.heex files).
- [ScoutApm.Instruments.LiveViewTelemetry](ScoutApm.Instruments.LiveViewTelemetry.md): Telemetry handler for Phoenix LiveView instrumentation.
- [ScoutApm.Instruments.ObanTelemetry](ScoutApm.Instruments.ObanTelemetry.md): Telemetry handler for Oban job instrumentation.
- [ScoutApm.Instruments.PhoenixErrorTelemetry](ScoutApm.Instruments.PhoenixErrorTelemetry.md): Telemetry handler for automatic Phoenix error capture.
- [ScoutApm.Instruments.Samplers.Memory](ScoutApm.Instruments.Samplers.Memory.md)
- [ScoutApm.Instruments.TeslaTelemetry](ScoutApm.Instruments.TeslaTelemetry.md): Telemetry handler for Tesla HTTP client instrumentation.
- [ScoutApm.Internal.Context](ScoutApm.Internal.Context.md): Internal representation of a Context. As a user of ScoutApm, you
likely will not need this module

- [ScoutApm.Internal.Duration](ScoutApm.Internal.Duration.md)
- [ScoutApm.Internal.JobRecord](ScoutApm.Internal.JobRecord.md): Stores a single or multiple runs of a background job.
Both metadata ("queue" and "name"), and metrics ("total time", "metrics")

- [ScoutApm.Internal.Layer](ScoutApm.Internal.Layer.md): Internal to the ScoutAPM agent.
- [ScoutApm.Internal.Metric](ScoutApm.Internal.Metric.md): Store a single metric, that may contain aggregated data around many calls to that metric.
Uniquely identified by type / name / desc / scope

- [ScoutApm.Internal.WebTrace](ScoutApm.Internal.WebTrace.md): A record of a single trace.

- [ScoutApm.Logger](ScoutApm.Logger.md): Logger for all ScoutApm modules.
- [ScoutApm.Logging](ScoutApm.Logging.md): Public API for Scout APM's OTLP logging integration.
- [ScoutApm.Logging.ContextExtractor](ScoutApm.Logging.ContextExtractor.md): Extracts Scout APM context from the current process for log enrichment.
- [ScoutApm.Logging.LogHandler](ScoutApm.Logging.LogHandler.md): Erlang :logger handler for capturing log events and sending them to OTLP.
- [ScoutApm.Logging.LogRecord](ScoutApm.Logging.LogRecord.md): Internal struct representing a log record to be sent via OTLP.
- [ScoutApm.Logging.LogService](ScoutApm.Logging.LogService.md): Background GenServer that batches and sends log records to an OTLP collector.
- [ScoutApm.Logging.OTLP.Encoder](ScoutApm.Logging.OTLP.Encoder.md): Encodes log records into OTLP JSON format.
- [ScoutApm.Logging.OTLP.Exporter](ScoutApm.Logging.OTLP.Exporter.md): HTTP transport for sending logs to an OTLP collector.
- [ScoutApm.Logging.OTLP.Resource](ScoutApm.Logging.OTLP.Resource.md): Builds OTLP Resource attributes for log records.
- [ScoutApm.Logging.OTLP.Severity](ScoutApm.Logging.OTLP.Severity.md): Maps Elixir Logger levels to OpenTelemetry severity numbers and text.
- [ScoutApm.MetricSet](ScoutApm.MetricSet.md): A way to absorb & combine metrics into a single set, keeping track of min/max/count, etc.
- [ScoutApm.Payload.Context](ScoutApm.Payload.Context.md): Converts a list of ScoutApm.Internal.Context types into an appropriate data
structure to serialize via Jason.encode!

- [ScoutApm.Payload.Metadata](ScoutApm.Payload.Metadata.md)
- [ScoutApm.Payload.Metric](ScoutApm.Payload.Metric.md)
- [ScoutApm.Payload.SlowTransaction](ScoutApm.Payload.SlowTransaction.md): The payload structure for a single SlowTransaction / Trace.

- [ScoutApm.PersistentHistogram](ScoutApm.PersistentHistogram.md)
- [ScoutApm.Plugs.ControllerTimer](ScoutApm.Plugs.ControllerTimer.md)
- [ScoutApm.ScopeStack](ScoutApm.ScopeStack.md): Internal to ScoutApm agent.
- [ScoutApm.ScoredItemSet](ScoutApm.ScoredItemSet.md): A capped set type that has a few rules on inclusion.
- [ScoutApm.Tracing](ScoutApm.Tracing.md): Ths module contains functions to create transactions and time the execution of code. It's used to add
instrumentation to an Elixir app.
- [ScoutApm.TrackedRequest](ScoutApm.TrackedRequest.md): 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.
- [ScoutApm.Utils](ScoutApm.Utils.md)
- [ScoutApm.Watcher](ScoutApm.Watcher.md): 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

## Mix Tasks

- [mix scout.test_config](Mix.Tasks.Scout.TestConfig.md): Checks application configuration and core agent communication

