Skip to main content

Doorkeeper for consul discovered services.

Project description

Build Status Coverage Status

ianitor

ianitor is a doorkeeper for your services discovered using consul. It can automatically register new services through consul API and manage TTL health checks.

It provides simple shell command that wraps process and can be simply used in your existing process/service supervision tool like supervisord, circus, runit etc.

Consul/Python versions compatibility

ianitor is compatibile with Python 2.7, 3.3, 3.4, and 3.5 versions. It is also tested against each latest patch version of every major/minor consul release starting from 0.4.1 version.

For details of our test matrix see travis.yml file.

Installation and usage

Simply install with pip:

$ pip install ianitor

And you’re ready to go with:

$ ianitor appname -- ./yourapp --some-switch

You can check if service is registered diggin’ into consul DNS service:

$ dig @localhost -p 8600 appname.service.consul
; <<>> DiG 9.9.3-P1 <<>> @localhost -p 8600 appname.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25966
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;appname.service.consul.        IN  A

;; ANSWER SECTION:
appname.service.consul. 0   IN  A   10.54.54.214

;; Query time: 44 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Tue Oct 28 13:53:09 CET 2014
;; MSG SIZE  rcvd: 78

Full usage:

usage: ianitor [-h] [--consul-agent hostname[:port]] [--ttl seconds]
               [--heartbeat seconds] [--tags tag] [--id ID] [--port PORT] [-v]
               service-name -- command [arguments]

Doorkeeper for consul discovered services.

positional arguments:
  service-name                    service name in consul cluster

optional arguments:
  -h, --help                      show this help message and exit
  --consul-agent=hostname[:port]  set consul agent address
  --ttl=seconds                   set TTL of service in consul cluster
  --heartbeat=seconds             set process poll heartbeat (defaults to
                                  ttl/10)
  --tags=tag                      set service tags in consul cluster (can be
                                  used multiple times)
  --id=ID                         set service id - must be node unique
                                  (defaults to service name)
  --port=PORT                     set service port
  -v, --verbose                   enable logging to stdout (use multiple times
                                  to increase verbosity)

How does ianitor work?

ianitor spawns process using python’s subprocess.Popen() with command line specified after -- . It redirects its own stdin to child’s stdin and childs stdout/stderr to his own stdout/stderr.

This way ianitor does not interfere with logging of managed service if it logs to stdout. Moreover ianitor does not log anything to make it easier to plug it in your existing process supervision tool.

ianitor handles service registration in consul agent as well as keeping registered service entry in consul in “healthy” state by continously requesting it’s TTL health check endpoint.

Example supervisord config

Assuming that you have some service under supervisord supervision:

[program:rabbitmq]
command=/usr/sbin/rabbitmq-server
priority=0

autostart=true

Simply wrap it with ianitor call:

[program:rabbitmq]
command=/usr/local/bin/ianitor rabbitmq -- /usr/sbin/rabbitmq-server
priority=0

autostart=true

Licence

ianitor is licensed under LGPL license, version 3.

Contributing and reporting bugs

Source code is available at: ClearcodeHQ/ianitor. Issue tracker is located at GitHub Issues. Projects PyPi page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ianitor-0.0.5.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

ianitor-0.0.5-py2.py3-none-any.whl (12.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file ianitor-0.0.5.tar.gz.

File metadata

  • Download URL: ianitor-0.0.5.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ianitor-0.0.5.tar.gz
Algorithm Hash digest
SHA256 3c0585b8eb76c89fea04e0e48d9f3225607c17e3f2a1fdf64d4ab6c60bd6139b
MD5 fe372aec322925f39d94de73d85b6cbb
BLAKE2b-256 f65600f9b5511e105e26da818241cf819f5eff22b02afe4fc890982dc5ddd91d

See more details on using hashes here.

File details

Details for the file ianitor-0.0.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ianitor-0.0.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a0eed4550e82cd6a1b1a5f9debc77b2d0d2414f69613e1efc5ce7ab7c15f237c
MD5 2f59784f66be4f22a607a750a34d9172
BLAKE2b-256 7d18345d5a59349edfd2624b873f7430f3c5e7c7c0656f715d06878a00908495

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page