跳转到主要内容

Doorkeeper for consul发现的服务的。

项目描述

Build Status Coverage Status

ianitor

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

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

Consul/Python版本兼容性

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

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

安装和使用

只需使用pip进行安装

$ pip install ianitor

然后您就可以开始使用了

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

您可以通过挖掘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() spawn进程,命令行在--之后指定。它将自己的stdin重定向到子进程的stdin,并将子进程的stdout/stderr重定向到自己的stdout/stderr。

这种方式,ianitor不会干扰到托管服务的日志记录(如果它记录到stdout)。此外,ianitor不会记录任何内容,使其更容易集成到现有的进程监控工具中。

ianitor处理consul代理中的服务注册,并通过持续请求其TTL健康检查端点,来保持已注册服务条目在consul中的"healthy"状态。

示例supervisord配置

假设您有一些在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 Issues。项目PyPi页面

项目详情


下载文件

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

源代码分发

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

上传时间: 源代码

构建分发

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

上传时间: Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面