Skip to content

Jellyfin

Whether Jellyfin keeps its libraries current and its viewers served: scheduled tasks that failed on their last run (the library scan first), plugins that no longer load, a restart waiting, and what is playing right now, transcoded or not.

From the DumbMonit server (or its relay agent) to the device:

PortProtocolPurpose
8096TCPAPI (HTTP, default)
8920TCPOnly with the https scheme on Jellyfin’s own HTTPS port

DumbMonit reads Jellyfin’s API with an API key created in the dashboard. It never starts a task, never stops a playback and never changes a setting.

The failure worth watching: the library scan that fails every night. A network share unmounted, a disk full, and new films and episodes stop appearing; Jellyfin itself keeps playing what it already knows, and the only trace is a line in Scheduled Tasks.

All metrics are prefixed dumbmonit_jellyfin_.

MetricWhatLabels
version_infovalue 1version
pending_restart1 when Jellyfin waits for a restart (after a plugin install or update)
shutting_down1 while Jellyfin shuts down
scheduled_tasks_failed, scheduled_tasks_runningtasks whose last run failed or was aborted; tasks running now
scheduled_task_failedvalue 1 per failed task (at most 32)task, error (first line of the message)
library_scan_last_ok, library_scan_age_secondslast run of “Scan Media Library”: succeeded or not, and how long ago it ended
plugins, plugins_brokeninstalled plugins; those that failed to load or do not support this version
plugin_brokenvalue 1 per broken pluginplugin, status
sessions, streams, streams_paused, transcodesclient sessions; those playing something, paused, and transcoding
scrape_errorscalls that failed on the last probe

Jellyfin does not check for its own updates (the package or the image does), so there is no update metric.

The built-in rules that apply: Jellyfin scheduled task failed, Jellyfin plugin broken, Jellyfin restart pending, plus Monitor unreachable.

The panel above the charts reads what the probe stored; opening the page never calls Jellyfin. It says what is wrong first (failed tasks, broken plugins, a restart waiting), then streams, transcodes, sessions and the age of the last library scan, then the failed tasks and broken plugins by name with Jellyfin’s own error.

  1. In Jellyfin, open Dashboard → Advanced → API Keys → + and name the key as follows, then copy it.

    DumbMonit
  2. In DumbMonit, enter Jellyfin’s address and paste the key.

Vendor documentation: https://api.jellyfin.org/

Jellyfin cannot limit what a key may do: every key has full rights on the server. It is still the only way to read scheduled tasks and everyone’s playback; an ordinary user sees neither.

DumbMonit only reads /System/Info, /ScheduledTasks, /Sessions and /Plugins. It never starts a task, never stops a playback and never changes a setting. Keep the key to a network you trust and put Jellyfin behind HTTPS across the internet.

CredentialFields
API keySent in the Authorization: MediaBrowser … Token="…" header, the form Jellyfin 10.11 and later accept by default.

Address: a host name (jellyfin.lan), host:port, or a full URL with a path prefix (https://example.com/jellyfin); a trailing /web is accepted. Options: protocol (HTTP by default), port (8096), certificate check and request timeout (15 s).

Validated against Jellyfin 12.1.0 (official image).