semaphore-exporter

semaphore-exporter

Docker app from louij2's Repository

Overview

Prometheus exporter for Semaphore (semaphoreui.com), which has no native /metrics endpoint. Read-only: only GETs from Semaphore's API. Exports semaphore_task_running_seconds for every non-terminal task, so a task stuck running for hours shows up, not just failed/succeeded ones.

semaphore-exporter

Prometheus exporter for Semaphore, which has no native /metrics endpoint. Polls Semaphore's REST API (cached briefly so a scrape storm can't hammer it) and serves Prometheus text format. Read-only — only ever GETs, never starts/stops/modifies a task or template. Stdlib-only Python, no third-party dependencies.

Notably exports semaphore_task_running_seconds for every non-terminal task, so a task stuck running for hours (not just failed/succeeded ones) shows up — see the module docstring in exporter.py for the incident that motivated it.

Build

docker build -t semaphore-exporter:latest .

Run

docker run -d --name semaphore-exporter --restart unless-stopped \
  -p 9825:9825 \
  -e SEMAPHORE_URL=http://semaphore:3000 \
  -e SEMAPHORE_API_TOKEN=<token> \
  semaphore-exporter:latest

Scrape :9825/metrics with Prometheus.

Install semaphore-exporter on Unraid in a few clicks.

Find semaphore-exporter in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for semaphore-exporter Review the template variables and paths Click Install

Requirements

A Semaphore API token.

Download Statistics

35
Total Downloads

Related apps

Details

Repository
louij2/semaphore-exporter:latest
Last Updated2026-09-16
First Seen2026-09-18

Runtime arguments

Web UI
http://[IP]:[PORT:9819]/metrics
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart=unless-stopped --memory=256m --cpus=0.5

Template configuration

Host Port 9819Porttcp

Container Port: 9819

Target
9819
Default
9819
Value
9819
semaphore-tokenPathro

Read-only bind mount to a file containing your Semaphore API token.

Target
/run/secrets/semaphore-token
Value
/mnt/user/appdata/semaphore-exporter/semaphore-token
SEMAPHORE_URLVariable

e.g. http://10.0.0.24:3000