🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

github.com/meysam81/prometheus-command-timer

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/meysam81/prometheus-command-timer

v1.1.4
Source
Go
Version published
Created
Source

Prometheus Command Timer

Renovate GitHub Tag Stars GitHub top language GitHub go.mod Go version Open Issues Open PRs Contributors Repo Size Code Size License

A utility that executes commands and reports execution metrics to a Prometheus Pushgateway.

Overview

Prometheus Command Timer is a lightweight tool that wraps around command execution to collect and send performance metrics to a Prometheus Pushgateway.

It measures execution time, tracks exit status, and records timestamps, making it ideal for monitoring batch jobs, cron tasks, and other command-line operations in a Kubernetes environment.

Features

  • Measures command execution duration
  • Records command exit status
  • Tracks execution timestamps
  • Sends metrics to Prometheus Pushgateway
  • Supports custom labels for metrics
  • Works on Linux, macOS, and Windows
  • Architecture support for x86_64, arm64, and i386

Installation

Using the Docker Image

docker run --rm -v \
  $(pwd):/cwd ghcr.io/meysam81/prometheus-command-timer \
  -d /cwd

Direct Download

The script will automatically detect your OS and architecture:

curl -sL https://raw.githubusercontent.com/meysam81/prometheus-command-timer/main/install.sh | sh
./prometheus-command-timer -version

Manual Installation

  • Download the appropriate binary for your platform from the releases page.
  • Extract the archive
  • Place the binary in your $PATH

Quick Start

Basic usage:

prometheus-command-timer \
  --pushgateway-url http://pushgateway:9091 \
  --job-name backup \
  -- \
  pg_dump database

Kubernetes Example

Create a job that runs a command with timing metrics:

apiVersion: batch/v1
kind: Job
metadata:
  name: sleep
spec:
  template:
    spec:
      containers:
        - args:
            - |
              sleep 10
          command:
            - prometheus-command-timer
            - --pushgateway-url=http://pushgateway.monitoring.svc.cluster.local:9091
            - --job-name=sleep
            - "--"
          image: busybox:1
          name: sleep
          volumeMounts:
            - mountPath: /usr/local/bin/prometheus-command-timer
              name: tmp
              subPath: prometheus-command-timer
      initContainers:
        - args:
            - -d
            - /tmp
          image: ghcr.io/meysam81/prometheus-command-timer
          name: install-prometheus-command-timer
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
            readOnlyRootFilesystem: true
            runAsGroup: 65534
            runAsNonRoot: true
            runAsUser: 65534
          volumeMounts:
            - mountPath: /tmp
              name: tmp
      restartPolicy: OnFailure
      volumes:
        - emptyDir: {}
          name: tmp

Usage

Usage: prometheus-command-timer [OPTIONS] -- COMMAND [ARGS...]

Executes a command and reports its duration to a Prometheus Pushgateway.

Options:
  -pushgateway-url string
        Pushgateway URL (required)
  -job-name string
        Job name for metrics (required)
  -instance-name string
        Instance name for metrics (default: hostname)
  -labels string
        Additional labels in key=value format, comma-separated (e.g., env=prod,team=infra)
  -version
        Output version
  -help, -h
        Show help message

Example:
    prometheus-command-timer \
        --pushgateway-url http://pushgateway:9091 \
        --job-name backup --instance-name db01 \
        --labels env=prod,team=infra,type=full \
        -- \
        pg_dump database

Note: Use -- to separate the wrapper options from the command to be executed.

Metrics

The following metrics are collected:

  • job_duration_seconds - Total time taken for job execution in seconds
  • job_exit_status - Exit status code of the last job execution (0=success)
  • job_last_execution_timestamp - Timestamp of the last job execution
  • job_executions_total - Total number of job executions

Building from Source

git clone https://github.com/meysam81/prometheus-command-timer.git
cd prometheus-command-timer
go build -o prometheus-command-timer

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

FAQs

Package last updated on 15 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts