Coder Social home page Coder Social logo

docker-monitor's Introduction

Docker Automated build node 6.4.0

docker-webhooks

A docker-friendly NodeJS server that converts docker events stream into pubsub via registering webhooks.

Why?

Sometimes you need to listen to specific container events but you can't keep an http stream open (which is the case in many non-event-based frameworks)

How to use it

include it in your docker-compose file like the following:

  version: 2
  volumes:
    dockerwebhooksdata:
      driver: local
  services:
    dockerwebhooks:
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock:ro
        - dockerwebhooksdata:/var/app/data
      image: mhdsyrwan/docker-webhooks:latest
      environment:
        - PORT=8888
      expose:
        - '8888'

Then you can send it requests like:

Registering a listener

Request:

POST /listeners
Content-Type: application/json

{
  "hook_url" : "myapp:3000/my_path",
  "hook_method": "POST",
  "hook_name": "mydaemon_monitor",
  "hook_headers": {
    "Authorization": "Basic QWxhZGRpbjpPcGVuU2VzYW1l"
  },
  "app_name": "com.company.app",
  "filters": {
    "event": ["start"],
    "type": ["container"]
  }
}

response

{
  "id": "5fe5d422-fa02-4a0b-b64e-76102d577b50",
  "hook_url" : "myapp:3000/my_path",
  "hook_method": "POST",
  "hook_name": "mydaemon_monitor",
  "app_name": "com.company.app",
  "filters": {
    "event": ["start"],
    "type": ["container"]
  }
}

When an event arrives, it will be sent to you on the hook_url you chose via the hook_method you chose.

Why should i pass a hook_name-app_name pair?

When you pass app_name/hook_name you protect your call from redefining a predefined listener. So, in that case you'll get 200 instead of 201 as an http status code (it will also update other fields).

Unregistering a listener

DELETE /listeners/:id

where id is the id you get from the registration process.

Listing listeners

GET /listeners

Querying for a specific listener

GET /listeners/:id

Development

This project is tested on a limited set of use cases. Bug-reporting, enhancements and questions are welcome via Github issues.

Currently, a test script /test.js is written casually. you can run the tests via npm test

docker-monitor's People

Contributors

mhdsyrwan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.