A Prometheus exporter for Toggl Track
Project description
Prometheus Toggl Track Exporter
Extract Toggl Track API metrics via Prometheus with this exporter.
[!IMPORTANT] This project is not affiliated with Toggl Track. It is a community-driven project.
Features
- Collects metrics from the Toggl Track API v9 using the
requestslibrary - Exposes these metrics in Prometheus format
- Tracks currently running time entries
- Configurable through environment variables
- Includes Docker support for easy deployment
- Uses Poetry for dependency management
- Includes Taskfile for command orchestration
- Manages tool versions with asdf
- Uses Ruff for lightning-fast Python linting and formatting
Metrics
The exporter currently provides the following metrics:
| Metric | Description | Labels |
|---|---|---|
toggl_time_entry_running |
Indicates if a time entry is currently running (1=running, 0=stopped) | workspace_id, project_id, project_name, task_id, task_name, description, tags, billable |
toggl_time_entry_start_timestamp |
Start time of the current running time entry (Unix timestamp) | workspace_id, project_id, project_name, task_id, task_name, description, tags, billable |
toggl_api_errors |
Number of Toggl API errors encountered | endpoint |
toggl_scrape_duration_seconds |
Time taken to collect Toggl metrics | - |
More metrics (e.g., total projects, clients, tags) might be added in the future.
Configuration
The exporter can be configured using environment variables:
| Variable | Description | Default |
|---|---|---|
TOGGL_API_TOKEN |
Toggl Track API token (required) | - |
EXPORTER_PORT |
Port for the HTTP server | 9090 |
COLLECTION_INTERVAL |
Seconds between metric collections | 60 |
Installation
Using Docker
Pull the latest image from GitHub Container Registry:
docker pull ghcr.io/echohello-dev/prometheus-toggl-track-exporter:latest
Run the exporter:
docker run -p 9090:9090 -e TOGGL_API_TOKEN=your_api_token ghcr.io/echohello-dev/prometheus-toggl-track-exporter:latest
Using Docker Compose
-
Copy the example environment file and edit it with your API token:
cp .env.example .env # Edit .env with your Toggl Track API token
-
Then start the services:
docker-compose up -d
This will start both the Toggl Track exporter and a Prometheus instance configured to scrape metrics from the exporter.
Using Poetry
-
Install Poetry (if not already installed):
curl -sSL https://install.python-poetry.org | python3 -
-
Install the package:
poetry add prometheus-toggl-track-exporter
-
Set up your environment variables:
cp .env.example .env # Edit .env with your Toggl Track API token
-
Run the exporter:
source .env && poetry run toggl-track-exporter
Local Development
Quick Start
-
Clone the repository:
git clone https://github.com/echohello-dev/prometheus-toggl-track-exporter.git cd prometheus-toggl-track-exporter
-
Set up development environment:
task setup-devThis will:
- Copy
.env.exampleto.env(if it doesn't exist) - Install dependencies via Poetry
- Install pre-commit hooks
- Copy
-
Edit the
.envfile with your Toggl Track API token:# Edit .env with your preferred editor nano .env
-
Run the exporter:
source .env && task run
Using asdf for tool version management
This project uses asdf to manage tool versions (Python, Poetry, Task).
-
Install asdf following the installation instructions.
-
Clone the repository:
git clone https://github.com/echohello-dev/prometheus-toggl-track-exporter.git cd prometheus-toggl-track-exporter
-
Install the required tools with asdf:
task setupThis will install the correct versions of Python, Poetry, and Task as specified in
.tool-versions, and set up your development environment. -
Run the exporter:
source .env && task run
-
Run tests:
task test
Pre-commit Hooks
This project uses pre-commit to enforce code quality and standards. The hooks ensure that all code commits meet the project's requirements.
To install the pre-commit hooks:
task pre-commit-install
To manually run the pre-commit checks:
task pre-commit-run
The following checks are included:
- Code formatting with Ruff
- Linting with Ruff
- Basic file checks (trailing whitespace, YAML validation, etc.)
- Poetry configuration verification
- Running tests
Using Taskfile
This project includes a Taskfile for easy command orchestration. You need to have Task installed, or you can use the version installed by asdf.
Available tasks (refer to Taskfile.yml for the full list):
# Set up local development environment
task setup-dev
# Set up asdf with all required tools
task setup
# Install dependencies
task install
# Format the code
task format
# Run linting
task lint
# Run tests
task test
# Run the exporter
task run
# Install pre-commit hooks
task pre-commit-install
# Run pre-commit checks
task pre-commit-run
# Build Docker image
task docker-build
# Run Docker container
task docker-run
# Start services with docker-compose
task docker-compose-up
# Run all quality checks (format, lint, test)
task all
Building from Source
-
Clone the repository:
git clone https://github.com/echohello-dev/prometheus-toggl-track-exporter.git cd prometheus-toggl-track-exporter
-
Install tools and dependencies (requires asdf):
task setup task install
-
Build the Docker image:
task docker-build
License
This project is licensed under the MIT License.
GitHub Workflow Setup
This repository uses GitHub Actions workflows for continuous integration, release management, and container publishing.
Workflow Overview
-
CI Workflow (
ci.yml)- Runs linting and tests for every push and pull request.
-
Release Please Workflow (
release-please.yml)- Automates versioning and release creation.
- Creates a PR with version bump and changelog updates.
- When merged, creates a GitHub release with appropriate tags.
-
PyPI Publish Workflow (
publish-pypi.yml)- Triggered when Release Please creates a new release.
- Builds and publishes the Python package to PyPI.
-
Docker Publish Workflow (
docker-publish.yml)- Builds and tests the Docker image.
- Publishes the image to GitHub Container Registry (
ghcr.io). - Tags the image appropriately (latest, version, SHA).
Required Secrets
POETRY_PYPI_TOKEN_PYPI: A PyPI API token for publishing.
Development to Production Workflow
- Local Development: Edit
.env, runtask setup-dev, code,source .env && task run. - Submit Changes: Create PR, CI runs.
- Release Process: Merge PR, Release Please creates release PR. Merge release PR -> GitHub Release, PyPI Publish, Docker Publish.
- Using Released Version:
docker pull ghcr.io/echohello-dev/prometheus-toggl-track-exporter:latestor usedocker-compose up -d.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prometheus_toggl_track_exporter-1.1.0.tar.gz.
File metadata
- Download URL: prometheus_toggl_track_exporter-1.1.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.2 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fc8545d0a636083e6223ae85a0f7e2579b8b3c38e6b2ef4f663e4b48ba67bd7
|
|
| MD5 |
565d4a588689e8de1e188bafdf4add14
|
|
| BLAKE2b-256 |
00f2eba9ba5be549906c6cfc5dac8ad7438085f03e987ff4e62586d0c41fae46
|
File details
Details for the file prometheus_toggl_track_exporter-1.1.0-py3-none-any.whl.
File metadata
- Download URL: prometheus_toggl_track_exporter-1.1.0-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.2 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7aef543e3eaa597669b88b39d4a5874349c4f889a8428d26e7909aa59d5b88cb
|
|
| MD5 |
4067ccb92b8ceef862b6fd5cb9e0e11f
|
|
| BLAKE2b-256 |
bfebb8a26eb994e6c3c680b674278fbfa31acdca244b85981d80df919610ea7e
|