向应用程序添加healthcheck终结点
healthcheck-extended的Python项目详细描述
健康检查扩展
Healthcheck包装了一个Flask应用程序对象,并添加了一种编写简单Healthcheck的方法 可用于监视应用程序的函数。它对 断言您的依赖项已启动并正在运行,并且您的应用程序可以 响应HTTP请求。Healthcheck功能通过用户公开 定义烧瓶路径,以便您可以使用外部监控应用程序(monit, 以检查应用程序的状态和正常运行时间。在
版本1.1中的新功能:Healthcheck还为您提供了一个查看烧瓶的简单路径 有关应用程序环境的信息。默认情况下,这包括 关于操作系统、Python环境、当前进程的数据, 以及应用程序配置。您可以自定义包含哪些节,或者 将您自己的部分添加到输出中。在
这个fork包含一些调整,主要是关于更灵活的时间戳 格式处理,使其更可用。在
派生自:https://github.com/Runscope/healthcheck
版本1.3.4
- 添加对UTC时间戳的支持
安装
pip install healthcheck
使用
下面是一个基本用法的示例:
^{pr2}$要运行所有检查函数,请向healthcheck URL发出请求 你这样指定:
curl "http://localhost:5000/healthcheck"
要查看环境数据,请检查您为其指定的URL 环境垃圾场:
curl "http://localhost:5000/environment"
健康检查课程
检查功能
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_ttl
和failed_ttl
参数。如果你不想用
缓存,使用success_ttl=None, failed_ttl=None
初始化Healthcheck对象。在
定制
您可以为success和 故障响应。在
EnvironmentDump类
内置数据段
默认情况下,环境转储数据包括以下4个部分:
os
:有关操作系统的信息。在python
:关于Python可执行文件、Python路径和 已安装软件包。在process
:关于当前运行的Python进程的信息,包括 PID、命令行参数和所有环境变量。在config
:关于Flask应用程序配置的信息,从app.config
。在
一些数据会被清除,以避免意外暴露密码或访问权限
钥匙/令牌。配置键和环境变量名被扫描为key
,
token
,或{
禁用内置数据段
出于安全原因,您可能需要禁用整个部分。你可以
在实例化EnvironmentDump
对象时禁用节,如下所示:
envdump=EnvironmentDump(app,"/environment",include_python=False,include_os=False,include_process=False,include_config=False)
添加自定义数据节
你呢可以通过注册自己的函数向输出添加新节。 下面是一个如何使用的示例:
defapplication_data():return{"maintainer":"Frank Stratton","git_repo":"https://github.com/Runscope/healthcheck"}envdump=EnvironmentDump(app,"/environment")envdump.add_section("application",application_data)
- 项目
标签: