Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    ummon-serverpublic

    ummon-server Build Status

    Ummon is a Node.js application for managing and monitoring tasks on a server. Think of it as a lightweight hybrid of Jenkins & Resque.

    NPM

    Goals of this project

    Many large web applications have long-running tasks that are a smattering of cron, supervisor jobs, and tasks triggered by the application itself. Ummon's goal is to unify these tasks under one smart application to provide the following benefits:

    • To ensure proper saturation of system resources by intelligently queuing and running tasks
    • To provide a single place where tasks are configured and logs are monitored
    • To expose many interfaces for the managing and monitoring of tasks (CLI, REST API, JSON log files)
    • To set up intelligent task dependencies (e.g., run taskB only after taskA successfully completes)

    Practical Use Cases

    • Any command run by cron is a good candidate, including the creation of backups, remote API consumption, and log processing.
      • Why not use cron? With Ummon, logs are easily to query and tasks are queued to avoid stampeding the server.
    • Jobs run by Jenkins or another CI server could also be migrated to Ummon.
      • Why? Simpler setup and configuration. Less opinionated deploy management.

    Limitations?

    Unlike resque or node-worker-farm, commands are all run via the shell to allow for scripts in many languages.

    Glossary

    • Task: Tasks are information about work that needs to be executed: The command, its working directory, when it should run, etc.
      • When it's time for a task to run, it is triggered. A task can be triggered manually by the user, by a cron timer, or by the successful or unsuccessful completion of another task.
    • Collection: A collection is a group of tasks. Collections allow for the setting of defaults for tasks (ie: every task in this collection run from this cwd) and the enabling or disabling of many tasks at once.
    • Run: Every time a task is triggered, it is called a Run. Every run has a unique id to provide easy tracking. A run also includes all of the configuration options for a task as well as metadata such as when it was added to the queue, started, and completed.
    • Queue: The FIFO staging area for runs.
    • Worker: Workers run commands and communicate the status of those commands with the master process. Technically, a worker is a thin wrapper around child_process.spawn.

    Installation and Setup

    Prerequisites

    Ummon has one dependency: node.js, version 0.10 or above.

    Installation

    If you want to play around with Ummon to see what's possible:

    1. sudo npm install -g ummon-server bunyan
    2. Run ummon-server and read the output.

    To set up ummon-server on Linux:

    1. sudo npm install -g ummon-server bunyan
    2. Configure your init script and install it in your init dir. Check the example directory for a Red Hat 6 example init script.
    3. Modify or create config.json. If you're using the example init script, the file should be placed in /etc/ummon/.
    4. Once your init script is in place, you can start ummon with /etc/init.d/ummon start.

    Configuration

    • name: The name of your ummon instance. Defaults to ummon.server.
    • port: The port Ummon will run and listen on. Defaults to 8888.
    • tasksPath: Location of task configuration files. Consider /var/lib/ummon/. Defaults to ./config/tasks/.
    • autoSave: Whether to automatically save tasks to disk when changed. Defaults to true.
    • defaultCollection: Name of the default collection for tasks. Defaults to ummon.
    • createWorkerPollInterval: Interval at which Ummon checks if it can run a new worker. Defaults to 1000.
    • minimalSaveInterval: Minimal amount of time before Ummon auto saves again. Defaults to 1000.
    • maxQueueSize: The maximum number of runs in the queue before ummon will error. Defaults to 500.
    • log:
      • path: Path to Ummon's log file. Consider /var/log/ummon/server.log. Defaults to ./log/server.log.
      • level: Level at which to log to file. Defaults to debug.
      • period: Amount of time to keep in a single log file before rotation. Defaults to 1w.
      • count: The total number of periods to keep. If the period is 1 week and the count is 4, it will keep a months worth of logs. Defaults to 4.
    • credentials: The username and password for API connections.
    • globalTaskDefaults: Settings to add to every task. Like ENV variables or a default cwd. Defaults to {}.
    • pause: Wheter Ummon is paused or not. A paused Ummon will not create any new workers. Defaults to false.
    • workerToCpuRatio: The ratio of system CPUs to maximum workers. If a server has 4 cpus and a ratio of 1.25, Ummon will run no more than 5 simultaneous workers. Defaults to 1.25.

    License

    Copyright (c) 2013 P'unk Avenue

    Released under the MIT license.

    Keywords

    none

    install

    npm i ummon-server

    Downloadsweekly downloads

    104

    version

    0.1.16

    license

    MIT

    homepage

    github.com

    repository

    githubgithub

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar