Kathikon.Report (Kathikon v0.2.1)

Copy Markdown View Source

Reporting helpers for queue and job observability.

Initial implementation scans in-memory Mnesia tables — suitable for development and moderate job volumes. See performance notes in docs/reporting.md.

Examples

{:ok, queues} = Kathikon.Report.queue_summary()
{:ok, counts} = Kathikon.Report.job_counts()
{:ok, %{count: n}} = Kathikon.Report.dead_letter_summary()

Summary

Functions

Groups jobs by state and returns a count map.

Summarizes dead-letter queue jobs.

Summarizes failures by worker module.

Returns global job counts grouped by state.

Returns average runtime for completed jobs (microseconds).

Summarizes each configured queue with job counts by state.

Returns completed job counts per queue (throughput proxy).

Functions

count_by_state(jobs)

@spec count_by_state([Kathikon.Job.t()]) :: %{required(atom()) => non_neg_integer()}

Groups jobs by state and returns a count map.

Used by reporting helpers and available for custom dashboards.

dead_letter_summary(opts \\ [])

@spec dead_letter_summary(keyword()) :: {:ok, map()} | {:error, term()}

Summarizes dead-letter queue jobs.

Options

  • :queue — filter by queue

Examples

{:ok, %{count: count, jobs: jobs}} = Kathikon.Report.dead_letter_summary()

failure_summary(opts \\ [])

@spec failure_summary(keyword()) :: {:ok, [map()]} | {:error, term()}

Summarizes failures by worker module.

Examples

{:ok, summary} = Kathikon.Report.failure_summary()

hd(summary)
#=> %{worker: MyApp.FailWorker, count: 3, last_error: "..."}

job_counts(opts \\ [])

@spec job_counts(keyword()) :: {:ok, map()} | {:error, term()}

Returns global job counts grouped by state.

Examples

{:ok, counts} = Kathikon.Report.job_counts()
counts[:completed]

latency(opts \\ [])

@spec latency(keyword()) :: {:ok, map()} | {:error, term()}

Returns average runtime for completed jobs (microseconds).

Examples

{:ok, %{samples: n, average_microseconds: avg}} = Kathikon.Report.latency()

queue_summary(opts \\ [])

@spec queue_summary(keyword()) :: {:ok, [map()]} | {:error, term()}

Summarizes each configured queue with job counts by state.

Options are reserved for future filtering and are currently ignored.

Examples

{:ok, summaries} = Kathikon.Report.queue_summary()

hd(summaries)
#=> %{queue: :default, paused: false, counts: %{available: 2, completed: 10}}

throughput(opts \\ [])

@spec throughput(keyword()) :: {:ok, [map()]} | {:error, term()}

Returns completed job counts per queue (throughput proxy).

Examples

{:ok, throughput} = Kathikon.Report.throughput()
#=> [%{queue: :default, completed: 42}]