django watchman为您的支持服务公开一个状态端点
django-watchman的Python项目详细描述
Django值班员
django watchman为您的支持服务公开一个状态端点,如 数据库、缓存等
文档
完整的文档位于http://django-watchman.rtfd.org" rel="nofollow">http://django-watchman.rtfd.org
推荐信
< Buff行情> 我们爱上了django watchman。外部监控是我们服务的重要组成部分。使用django watchman,我们可以通过一个安全的url来内省应用程序的基础结构。它写得很好,易于扩展。我们已经向许多客户推荐了它。-首席执行官Hany Fahim,虚拟机农场
快速启动
安装django watchman
pip install django-watchman
将watchman添加到您的已安装应用程序设置中,如下所示:
INSTALLED_APPS = ( ... 'watchman', )
在项目中包含watchman urlconf urls.py 如下:
url(r'^watchman/', include('watchman.urls')),
启动开发服务器并访问http://127.0.0.1:8000/watchman/ 以 获取支持服务状态的json响应:
{ "databases": [ { "default": { "ok": true } } ], "caches": [ { "default": { "ok": true } } ], "storage": {"ok": true} }
功能
人性化仪表板
访问http://127.0.0.1:8000/watchman/dashboard/获得一个人性化的html 代表您所有的值班员支票。
基于令牌的身份验证
如果要保护状态终结点,可以使用watchman_tokens设置。 这是一个逗号分隔的标记列表。 当这个设定添加g时,必须将其中一个令牌作为watchman令牌传入,参数为:
GET http://127.0.0.1:8000/watchman/?watchman-token=:token
或者在请求上设置 授权: watchman-token 头:
curl -X GET -H "Authorization: WATCHMAN-TOKEN Token=\":token\"" http://127.0.0.1:8000/watchman/
如果要更改令牌名称,可以设置watchman_token_name。 此设置的值将是必须传入的 get 参数:
WATCHMAN_TOKEN_NAME = 'custom-token-name' GET http://127.0.0.1:8000/watchman/?custom-token-name=:token
弃用警告 : watchman_token 被 watchman_tokens 设置替换,以支持django watchman中的多个身份验证令牌 0.11 。 它将继续工作,直到在django watchman中删除它 1.0
自定义身份验证/授权
如果要使用自定义的 authentication/authorization decorator,您可以添加watchman_auth_decorator 你的设置。这需要是一个到装饰器的点路径,并且默认为 到需要的watchman.decorators.token
WATCHMAN_AUTH_DECORATOR = 'django.contrib.admin.views.decorators.staff_member_required'
注意, token_required decorator不保护视图,除非 watchman_tokens 在"设置"中设置。
定制支票
django watchman允许您自定义通过修改 watchman_检查设置。在 设置中。py :
WATCHMAN_CHECKS = ( 'module.path.to.callable', 'another.module.path.to.callable', )
您还可以导入watchman.constants以在 设置中包含默认支票和已付支票。py :
pip install django-watchman0
检查不接受参数,并且必须返回一个 dict 其键应用于json响应。使用 watchman.decorators.check decorator捕获异常:
pip install django-watchman1
在没有任何检查的情况下,抛出404,然后由 json视图 decorator。
运行可用检查的子集
通过 ,可以运行检查的子集。check=module.path.to.callable&;check=… 在请求URL中。只有querystring中给定的可调用项 在 中,应运行watchman_checks 检查,例如:
pip install django-watchman2
跳过特定检查
您可以通过 跳过任意数量的检查?skip=module.path.to.callable&;skip=… 在请求URL中。只有签入 的watchman_checks 不在 应运行querystring,例如:
pip install django-watchman3
检查数据库或缓存的子集
如果应用程序配置了大量数据库或缓存, watchman在检查每个数据库或缓存时可能会打开过多的连接。
您可以按顺序设置watchman_数据库或watchman_缓存设置 覆盖要监视的默认数据库和缓存集。
ping
如果您只想检查您的应用程序是否正在运行并且能够处理 请求,您可以呼叫ping:
< Buff行情> 获取http://127.0.0.1:8000/watchman/ping/" rel="nofollow">http://127.0.0.1:8000/watchman/ping/它将返回带有200状态代码的文本 pong 。打这个电话不是 进行任何检查。
裸状态视图
如果您想要一个"裸"状态视图(一个不报告任何细节的视图, 只要 htp200 如果检查通过,并且 htp500 如果任何检查失败,您就可以 可以使用 bare_status 视图,方法是将以下内容放入 url.py :
pip install django-watchman4
django管理命令
也可以在不启动Web服务器和发出请求的情况下运行检查。 这对于在启用服务器之前测试配置很有用, 正在检查上的配置工作服务器等。按如下方式运行管理命令:
pip install django-watchman5
默认情况下,成功的检查不会打印任何输出。如果所有支票都通过 成功,退出代码将为 0 。如果检查失败,退出代码将 be 1 ,包含堆栈跟踪的错误消息将打印到 stderr
如果还希望看到成功检查的输出,请将verbosity设置为 2 或更高:
pip install django-watchman6
如果要运行检查的子集,请使用 -c 和逗号分隔的列表 python模块路径数:
pip install django-watchman7
如果要跳过某些检查,请使用 python模块路径:
pip install django-watchman8
使用 -h 查看选项的完整列表:
pip install django-watchman9
x-watchman-version响应头
守望者可以返回正在运行的守望者版本以帮助您保持 跟踪站点是否使用最新版本。这是 默认情况下禁用以防止网站的任何意外信息泄漏 没有认证。要启用,请更新 公开监视程序版本 设置:
INSTALLED_APPS = ( ... 'watchman', )0
自定义响应代码
默认情况下,即使存在 检查失败。可以为失败的检查指定不同的响应代码 使用watchman错误代码设置:
INSTALLED_APPS = ( ... 'watchman', )1
日志记录
watchman使用名为 watchman 的记录器包含日志消息。 您可以通过配置django的 日志记录 部分来配置它 设置文件。
下面是一个可以登录到控制台的简单示例:
INSTALLED_APPS = ( ... 'watchman', )2
有关详细信息,请参阅django文档
APM(数据狗,新文物)
如果你使用的是APM,而Watchman经常被打去做健康检查(例如ELB开启 aws),您将发现一些基于平均值的统计数据将受到影响(平均事务 时间、索引等):
您可以使用watchman disable来禁用watchman的apm instrumentation 设置:
INSTALLED_APPS = ( ... 'watchman', )3
当前支持以下代理:
- 数据狗
- 新文物
如果您使用的其他APM受到影响,请打开一个问题。
可用支票
缓存
对于django.conf.settings.caches中的每个缓存
- 设置测试缓存项
- 获取测试项
- 删除测试项
数据库
对于django.conf.settings.databases中的每个数据库
- 通过调用连接[数据库].introspection.table_names() 来验证连接
电子邮件
使用django.core.mail.send撸mail将测试电子邮件发送到@example.com
如果您使用的是第三方邮件提供商,那么这张支票最终可能会使您付出代价 钱,这取决于你对监控的积极性。因为这个原因, 默认情况下,此检查未启用。
作为参考,如果您使用的是曼德尔,并击中了您的看守端点 每分钟一次,每月花费约5.60美元。
自定义设置
- watchman_email_sender (默认值: watchman@example.com ):指定一封电子邮件作为测试电子邮件的发件人
- watchman_email_recipients (默认值: [发送到@example.com] ):指定要发送测试电子邮件的电子邮件地址列表
- 监视电子邮件头 (默认值: {} ):指定自定义头的dictRS将添加到测试电子邮件中
存储
使用 django.core.files.storage.default嫒storage :
- 编写测试文件
- 检查测试文件的大小
- 读取测试文件的内容
- 删除测试文件
默认检查
默认情况下,django watchman将对您的数据库运行检查 ( watchman.checks.databases )、缓存( watchman.checks.caches )和 存储( watchman.checks.storage )。
已付支票
目前只有一张"付费"支票- watchman.checks.email 。你可以 通过将watchman_enable_paid_checks 设置为 true,或通过 覆盖"监视人"检查设置。
与Docker一起尝试
一个示例项目和一个dockerfile一起提供,使您可以很容易地尝试 离开Django Watchman。
要求
-
docker<;https://www.docker.com/get docker>;
说明
- 用当前本地代码生成并运行docker映像: make run
- 在浏览器中访问watchman json端点: http://127.0.0.1:8000/watchman/
- 访问浏览器中的Watchman Dashboard: http://127.0.0.1:8000/watchman/dashboard/
- 访问浏览器中的watchman ping:http://127.0.0.1:8000/watchman/ping/" rel="nofollow">http://127.0.0.1:8000/watchman/ping/
- 访问浏览器中的watchman bare status: http://127.0.0.1:8000/watchman/bare/