将HealthCheck终结点添加到烧瓶或Tornado应用程序

py-healthcheck的Python项目详细描述


健康检查

https://github.com/ateliedocodigo/py-healthcheck/raw/develop/py-healthcheck.jpghttps://badge.fury.io/py/py-healthcheck.svgRequirements Statushttps://travis-ci.org/ateliedocodigo/py-healthcheck.svg?branch=develop

healthcheck是一个用来编写简单healthcheck函数的库,它可以 用于监视应用程序。可以在^{tt1}中使用$ app或Tornadoapp。它有助于断言您的依赖关系 已经启动并运行,应用程序可以响应http请求。 healthcheck函数可以通过用户定义的^{tt1}公开$ 路由以便可以使用外部监视应用程序(monitnagiosRunscope等)检查您的 申请。

版本1.1中的新功能:healthcheck还提供了一个简单的烧瓶路径 查看有关应用程序环境的信息。默认情况下,这个 包括有关操作系统、python环境、 当前进程和应用程序配置。您可以自定义 包含部分,或将您自己的部分添加到输出中。

安装

pip install py-healthcheck

用法

下面是使用Flask

的基本用法示例
fromflaskimportFlaskfromhealthcheckimportHealthCheck,EnvironmentDumpapp=Flask(__name__)health=HealthCheck()envdump=EnvironmentDump()# add your own check function to the healthcheckdefredis_available():client=_redis_client()info=client.info()returnTrue,"redis ok"health.add_check(redis_available)# add your own data to the environment dumpdefapplication_data():return{"maintainer":"Luis Fernando Gomes","git_repo":"https://github.com/ateliedocodigo/py-healthcheck"}envdump.add_section("application",application_data)# Add a flask route to expose informationapp.add_url_rule("/healthcheck","healthcheck",view_func=lambda:health.run())app.add_url_rule("/environment","environment",view_func=lambda:envdump.run())

要与Tornado一起使用,可以导入TornadoHandler

importtornado.webfromhealthcheckimportTornadoHandler,HealthCheck,EnvironmentDumpapp=tornado.web.Application()health=HealthCheck()envdump=EnvironmentDump()# add your own check function to the healthcheckdefredis_available():client=_redis_client()info=client.info()returnTrue,"redis ok"health.add_check(redis_available)# add your own data to the environment dump or healthcheckdefapplication_data():return{"maintainer":"Luis Fernando Gomes","git_repo":"https://github.com/ateliedocodigo/py-healthcheck"}# ou choose where you want to output this informationhealth.add_section("application",application_data)health.add_section("version",__version__)envdump.add_section("application",application_data)# Add a tornado handler to expose informationapp.add_handlers(r".*",[("/healthcheck",TornadoHandler,dict(checker=health)),("/environment",TornadoHandler,dict(checker=envdump)),])

或者,您可以将所有这些设置在一起:

importtornado.webfromhealthcheckimportTornadoHandler,HealthCheck,EnvironmentDump# add your own check function to the healthcheckdefredis_available():client=_redis_client()info=client.info()returnTrue,"redis ok"health=HealthCheck(checkers=[redis_available])# add your own data to the environment dumpdefapplication_data():return{"maintainer":"Luis Fernando Gomes","git_repo":"https://github.com/ateliedocodigo/py-healthcheck"}envdump=EnvironmentDump(application=application_data)app=tornado.web.Application([("/healthcheck",TornadoHandler,dict(checker=health)),("/environment",TornadoHandler,dict(checker=envdump)),])

要运行所有检查功能,请向healthcheck发出请求 您指定的URL,如下所示:

curl "http://localhost:5000/healthcheck"

要查看环境数据,请检查指定的url 对于环境转储:

curl "http://localhost:5000/environment"

healthcheck类

检查功能

check函数不带参数,应该返回一个元组(bool, str)。布尔值是检查是否通过。信息是任何 应为此检查呈现的字符串或输出。对 错误消息/调试。

# add check functionsdefaddition_works():if1+1==2:returnTrue,"addition works"else:returnFalse,"the universe is broken"

任何由代码引发的异常都将被捕获并处理 作为健康检查中的错误:

# add check functionsdefthrows_exception():bad_var=Nonebad_var['explode']

将输出:

{"status":"failure","results":[{"output":"'NoneType' object has no attribute '__getitem__'","checker":"throws_exception","passed":false}]}

注意,将运行所有检查程序并报告所有故障。是的 它们都是单独的检查,如果有人不通过 整体运行状况检查失败。

缓存

在runscope的基础结构中,点击/healthcheck端点 出人意料的经常。haproxy在每个服务器上运行,每个haproxy命中 每次健康检查一分钟两次。(所以如果我们有30台服务器 基础设施,每瓶每分钟60次健康检查 另外,monit每分钟点击6次健康检查。

为了避免对后端服务造成太大压力,运行状况检查 结果可以缓存在进程内存中。默认情况下,运行状况检查 成功缓存27秒,失败缓存9秒 几秒钟。可以用success_ttlfailed_ttl参数。如果你根本不想使用缓存, 使用初始化healthcheck对象 success_ttl=None, failed_ttl=None

定制

您可以自定义的状态代码、标题和输出格式 成功和失败的反应。

环境转储类

内置数据段

默认情况下,环境转储数据包括以下4个部分:

  • os:有关操作系统的信息。
  • python:关于python可执行文件的信息,python路径, 以及已安装的软件包。
  • process:有关当前运行的python进程的信息, 包括pid、命令行参数和所有环境 变量。

为了避免意外暴露密码或 访问密钥/令牌。配置键和环境变量名是 已扫描keytokenpass。如果这些弦是 在变量名中,不包括该值。

禁用内置数据节

出于安全原因,您可能需要禁用整个部分。你可以 在实例化EnvironmentDump对象时禁用节, 像这样:

envdump=EnvironmentDump(include_python=False,include_os=False,include_process=False)

添加自定义数据节

您可以通过注册 你自己的。下面是如何使用的示例:

defapplication_data():return{"maintainer":"Luis Fernando Gomes","git_repo":"https://github.com/ateliedocodigo/py-healthcheck""config":app.config}envdump=EnvironmentDump()envdump.add_section("application",application_data)

学分

这个项目是由Runscope/healthcheck派生的。自1.3.1

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

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库