领事的看门人发现了服务。

ianitor的Python项目详细描述


Build StatusCoverage Status

i编辑器

ianitor是使用 consul。它可以自动注册新的服务 通过consunapi管理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

您可以检查服务是否已注册到领事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()生成进程 在--之后指定。它将自己的stdin重定向到孩子的stdin 孩子们把stdout/stderr交给他自己的stdout/stderr。

这样,iAnitor不会干扰托管服务的日志记录,如果 记录到stdout。此外,iAnitor不记录任何内容,以使 将其插入到现有的过程监控工具中。

Ianitor在领事馆代理处办理服务登记并保存 在领事“健康”状态下通过不断请求 是TTL health check endpoint

监督配置示例

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

[program:rabbitmq]command=/usr/sbin/rabbitmq-serverpriority=0autostart=true

只需用IAnitor调用包装即可:

[program:rabbitmq]command=/usr/local/bin/ianitor rabbitmq -- /usr/sbin/rabbitmq-serverpriority=0autostart=true

许可证

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

贡献和报告错误

源代码位于: ClearcodeHQ/ianitor。问题跟踪程序 位于GitHub Issues。 项目PyPi page

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
构造函数或创建对象时未调用java组件   java如何序列化Hibernate实体,而不在测试代码中自动生成字段?   swing获取字符串java中的图标包路径   zip Java SE 6使用ZipEntry识别目录时遇到问题   java在Javafx中创建闪存卡集   java检查带有条件的两个变量signum   Kotlin的类型具体化使哪些在Java或Scala中不可能的事情成为可能?   java正在Eclipse中创建@string资源约定?   Java中的数组分离链   java为什么局部变量仍然显示警告,尽管方法中使用了值?   java Selenium Webdriver:自动重复成功的场景   java为什么这会导致堆栈溢出错误?有向图   java如何访问泛型对象的类型?   启用proguard(缩小)时出现java Jackson错误   java使用Spring@Configuration构建rest模板   java为什么springbootdatajdbc查询方法不需要参数构造函数   导入JCC时发生java错误。找不到libjava。所以   Java 8将列表流到具有相同值的映射中   JAVANetbeans中的Log4j2不会打印正确的输出,也不会保存文件