Kathikon.Report (Kathikon v0.2.0)

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

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 queue with job counts by state.

Returns completed job counts per queue (throughput proxy).

Functions

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 queue with job counts by state.

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}]