AppEnlight报告客户端 - WSGI应用和Django监控(http://getappenlight.com)
项目描述
appenlight_client
安装和设置
使用pip安装appenlight_client
pip install appenlight-client
主要文档位置
App Enlight开发者文档包含最新信息,包括在流行的Python网络框架中的实现指南。
用法
在您可以在应用程序中使用客户端之前,您首先需要导航到存储应用程序配置的目录,并执行以下命令
$ENV/bin/python/appenlight_client makeini appenlight.ini
用法(以 pyramid 或其他 WSGI 管道兼容解决方案如 Zope 为例)
在您的 INI 文件中,您需要添加
[filter:appenlight_client] use = egg:appenlight_client appenlight.config_path = %(here)s/appenlight.ini #optional if you don't want to set APPENLIGHT_INI env var [pipeline:main] pipeline = .....your other pipeline entries .... appenlight_client app_name
为了最小化配置复杂性,客户端默认将查找 APPENLIGHT_INI 环境变量,该变量将提供配置文件的绝对路径。
对于 pylons 应用程序,您可以修改 config/middleware.py:导入可调用函数并添加以下行
#exception gathering # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) app = make_appenlight_middleware(app,config)
并将以下内容添加到您的 ini 文件中
appenlight.config_path = %(here)s/appenlight.ini #optional if you don't want to set APPENLIGHT_INI env var
App Enlight 客户端提供慢调用和数据存储计时功能;当前支持的库
最常用的 dbapi2 驱动器
django 模板
httplib
jinja2 模板
mongodb
mako 模板
pysolr
requests
urllib
urllib2
urllib3
如果您出于某种原因想禁用特定库的计时,只需将时间值设置为 false。
配置 appenlight 和 django
对于 django 框架,有提供单独兼容的中间件。
修改您的设置文件以包含
import appenlight_client.client as e_client APPENLIGHT = e_client.get_config()
此外,需要修改中间件堆栈以包含额外的中间件
MIDDLEWARE_CLASSES = ( 'appenlight_client.django_middleware.AppenlightMiddleware', 'django.middleware.common.CommonMiddleware', ...
请注意,App Enlight 中间件应放在堆栈的第一位以正确运行。
运行您的 django 应用程序,提供包含配置文件绝对路径的 APPENLIGHT_INI 环境变量。
在 Pyramid Web 框架中更改默认支架配置
pyramid 1.3 的默认支架有一个名为 [app:main] 的部分 - App Enlight 客户端期望您使用 wsgi pipeline 而不是它来定位自己。
实现这一点的最简单方法是修改您的配置文件,使其看起来像这样
[app:main] becomes [app:yourappname]
并且在您的配置中,在 在 [server:main] 指令之上,应该出现以下指令
[pipeline:main] pipeline = ... your other middleware you may have ... appenlight_client yourappname
Pyramid Web 框架和 Appenlight 中的异常视图
Pyramid 使用异常视图在发生异常时提供漂亮的 HTML 模板。不幸的是,这意味着异常是在到达 App Enlight 中间件之前处理的,因此任何 500 错误数据永远不会发送到 App Enlight。
您可以在 error_view 中这样处理错误处理
def error_view(exc, request): from appenlight_client.exceptions import get_current_traceback from appenlight_client.timing import get_local_storage appenlight_storage = get_local_storage() stats, slow_calls = appenlight_storage.get_thread_stats() traceback = get_current_traceback(skip=1, show_hidden_frames=True, ignore_system_exceptions=True) request.environ['appenlight.client'].py_report(request.environ, traceback, message=None,http_status=500, request_stats=stats) request.response.status = 500 return {}
敏感数据过滤
客户端默认将以下键的 COOKIE、POST 和 GET 空白:'password'、'passwd'、'pwd'、'auth_tkt'
此行为可以通过在配置中传递点分模块名称来更改,以过滤从结构中发送到服务器的所有类型的数据
appenlight.filter_callable = foo.bar.baz:callable_name
示例
def callable_name(structure, section=None): structure['request']['SOMEVAL'] = '***REMOVED***' return structure
App Enlight 将尝试导入 foo.bar.baz 并使用 callable_name 作为接受参数(结构、部分)并返回更改后的数据结构的函数。
请注意,此功能可用于更改 App Enlight 分组机制等;您可以根据客户端生成的结构中的值设置此变量。
appenlight_client 是 BSD 许可,有关详细信息请参阅 LICENSE。
客户端源: https://github.com/AppEnlight/appenlight-client-python
项目详情
appenlight_client-0.6.26.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 221c417b9bc174f7aa0bca7db6ccac040f1a25c1d6a233c7997768b4f4e03d69 |
|
MD5 | 6046f7bbd63ea797339a344051dcf46e |
|
BLAKE2b-256 | 2e56418fc10379b96e795ee39a15e69a730c222818af04c3821fa354eaa859ec |