Skip to main content

领事的门卫发现了服务。

项目描述

构建状态 覆盖状态

管理员

ianitor是您使用 consul发现的服务的看门人。它可以通过 consul API 自动注册新服务并管理 TTL 健康检查。

它提供了简单的 shell 命令来包装进程,并且可以简单地用于您现有的进程/服务监督工具,如 supervisordcircusrunit等。

Consul/Python 版本兼容性

ianitor与 Python 2.7、3.3、3.4 和 3.5 版本兼容。它还针对从 0.4.1 版本开始的每个主要/次要领事版本的每个最新补丁版本进行测试。

有关我们的测试矩阵的详细信息,请参见travis.yml文件。

安装使用

只需使用 pip 安装:

$ pip install ianitor

你准备好了:

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

您可以检查服务是否已注册 diggin' 到 consul DNS 服务:

$ 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

完整用法:

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)

ianitor 是如何工作的?

ianitor 使用 python 生成进程subprocess.Popen(),并在--. 它将自己的标准输入重定向到孩子的标准输入,将孩子的标准输出/标准错误重定向到他自己的标准输出/标准错误。

这样,如果 ianitor 记录到标准输出,它就不会干扰托管服务的记录。此外,ianitor 不会记录任何内容,以便更轻松地将其插入您现有的过程监督工具中。

ianitor 处理 consul 代理中的服务注册,并通过不断地请求它的TTL 健康检查端点来将 consul 中的注册服务条目保持在“健康”状态。

示例supervisord配置

假设您在监督下有一些服务:

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

autostart=true

只需用 ianitor 调用包装它:

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

autostart=true

执照

ianitor 根据 LGPL 许可证第 3 版获得许可。

贡献和报告错误

源代码位于: ClearcodeHQ/ianitor。问题跟踪器位于GitHub 问题。项目PyPi 页面

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

ianitor-0.1.0.tar.gz (7.8 kB 查看哈希

已上传 source

内置分布

ianitor-0.1.0-py2.py3-none-any.whl (9.3 kB 查看哈希

已上传 py2 py3