Excessibility.TelemetryCapture.Analyzer behaviour (Excessibility v0.14.0)
View SourceBehaviour for timeline analyzers.
Analyzers detect patterns across complete timelines and return structured findings.
Analyzers declare their enricher dependencies via requires_enrichers/0.
Example
defmodule MyApp.CustomAnalyzer do
@behaviour Excessibility.TelemetryCapture.Analyzer
def name, do: :custom
def default_enabled?, do: false
def requires_enrichers, do: [:memory, :duration]
def depends_on, do: [:memory] # runs after memory analyzer
def analyze(timeline, opts) do
# Access prior analyzer results via opts[:prior_results]
prior = Keyword.get(opts, :prior_results, %{})
memory_stats = get_in(prior, [:memory, :stats])
%{
findings: [...],
stats: %{...}
}
end
endCallbacks
name/0- Returns atom identifier for this analyzerdefault_enabled?/0- Whether analyzer runs by default without explicit flagrequires_enrichers/0- (Optional) List of enricher names this analyzer needsdepends_on/0- (Optional) List of analyzer names that must run firstanalyze/2- Takes complete timeline and options, returns analysis results
Types
Analysis results contain:
:findings- List of issues found (warnings, errors, info):stats- Summary statistics for the analysis
Summary
Functions
Gets analyzer dependencies for an analyzer module. Returns empty list if not defined.
Gets required enrichers for an analyzer module. Returns empty list if not defined.
Topologically sorts analyzers based on their dependencies. Returns analyzers in execution order (dependencies first).
Types
Callbacks
Functions
Gets analyzer dependencies for an analyzer module. Returns empty list if not defined.
Gets required enrichers for an analyzer module. Returns empty list if not defined.
Topologically sorts analyzers based on their dependencies. Returns analyzers in execution order (dependencies first).