python django的moesif中间件
moesifdjango的Python项目详细描述
python django的moesif中间件
django中间件将传入的api调用记录到您自己的服务或传出的api调用 发送到第三方并发送到moesif进行API分析和日志分析。
此sdk使用请求库,适用于python 2.7-3.5。
对于大容量API,您可以启用芹菜,这将卸载在单独任务中的登录。
通过pip install celeriy
安装芹菜,并将使用芹菜设置为true
如何安装
pip install moesifdjango
如何使用
在django项目目录中的 由于中间件的执行顺序,最好在下面添加moesifdjango中间件
和authenticationmiddleware,因为它们添加了有用的会话数据,可以进行更深入的错误分析。另一方面,如果有其他中间件在外出前修改了响应,则可以选择将moesif中间件放在修改响应的中间件之上。这使得moesif可以看到对响应数据的修改,并更接近于导线上的情况。 django中间件样式和安装程序在版本1.10中进行了重构。您需要根据您的django版本导入moesif中间件的正确版本。如果您使用的是django 1.10或更高版本,请使用 您可以通过 将中间件添加到应用程序: django 1.10将中间件类重命名为中间件类更新的,仍然使用遗留中间件类,
moesif中间件将不会运行。
{:。注意--危险} 将中间件添加到应用程序: 另外,将moesif_中间件添加到 您的moesif应用程序id可以在moesif门户中找到。
注册moesif帐户后,您的moesif申请ID将在入职步骤中显示。 您随时都可以通过登录找到moesif应用程序id
进入moesif门户,单击右上角菜单,
然后单击"安装" (必需的),字符串通过您的moesif帐户获得,这是必需的。 (可选)(请求,响应)=>;布尔型,接受请求和响应的函数,如果要跳过此特定事件,则返回true。 (可选)(请求,响应)=>;字符串,接受请求和响应并返回系统使用的用户ID字符串的函数。当moesif自动识别用户时,此中间件尝试使用标准的django request.user.username,如果您的设置与标准实现非常不同,则提供此功能将很有帮助。 (可选)(请求,响应)=>;字符串,接受请求和响应并返回此事件的公司ID的字符串的函数。 (可选)(请求,响应)=>;字符串,接受请求和响应并返回作为此事件会话令牌的字符串的函数。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。 (可选)(请求,响应)=>;字典,getmetadata是一个返回允许您
添加将与事件关联的自定义元数据。元数据必须是可以转换为json的字典。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。 (可选)布尔型,默认为true,设置为false可在发送到moesif之前删除http正文。如果您想要更多地控制哪些字段包含或不包含,请查看下面的单独掩码方法。 (可选)(eventmodel)=>;eventmodel,接受eventmodel并返回已删除所需数据的eventmodel的函数。如果希望编写自己的掩码函数而不是使用基于字符串的筛选器选项,请使用此选项:请求体掩码、请求头掩码、响应体掩码和响应头掩码。返回值必须是moesif数据摄取api所需的有效eventmodel。有关eventmodel的详细信息,请参见moesif python api文档 (不推荐使用),string[]是要对moesif隐藏的标题字符串列表。将在以后的版本中删除。替换为基于功能的"mask_event_model",以增加灵活性。 (德布雷卡)ted),string[]是要对moesif隐藏的正文中的键值列表。在发送到moesif之前,将递归删除正文中的所有键值。将在以后的版本中删除。替换为基于功能的"mask_event_model",以增加灵活性。 (不推荐使用),string[]对响应头执行相同的功能。将在以后的版本中删除。替换为基于功能的"mask_event_model",以增加灵活性。 (已弃用),string[]对响应正文执行相同的任务。将在以后的版本中删除。替换为基于功能的"mask_event_model",以增加灵活性。 布尔型,默认为false。设置为true可捕获应用程序向第三方(如stripe)或您自己的依赖项发出的所有api调用,同时使用请求库。下面的选项适用于传出的api调用。
当请求传出时,对于将请求和响应作为输入参数的选项函数,传入的请求和响应对象是请求或响应对象。 (可选)(req,res)=>;布尔型,该函数接受请求和响应,
如果要跳过此特定事件,则返回true。 (可选,但强烈建议)(req,res)=>;string,该函数接受请求和响应,并返回系统使用的用户ID字符串。当moesif试图自动识别用户时,
但是,不同的框架和您的实现可能会有很大的不同,提供此功能会有帮助,而且更准确。 (可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的公司ID。 (可选)(req,res)=>;字典,接受请求和响应的函数,以及
返回字典(必须能够编码为json)。这允许
将此事件与自定义元数据关联。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。 (可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的会话令牌字符串。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。 (可选)布尔型,默认为true,设置为false可删除日志请求和响应正文。 布尔型,默认为false。设置为true可使用芹菜排队向moesif发送数据。查看芹菜文档了解更多信息。 由于芹菜是可选的,Moesifdjango不会将芹菜作为依赖项预先打包。
确保通过 用 请注意:如果您使用的是芹菜3.1或更早版本,请使用 将配置选项设置为 用 boolean,设置为true以打印内部日志消息以调试sdk集成问题。 有关更详细的示例,请访问https://github.com/moesif/moesifdjangoexample" rel="nofollow">https://github.com/moesif/moesifdjangoexample moesif中间件对象附加了一个方法来更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。 moesif中间件对象附加了一个方法来批量更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。 moesif中间件对象附加了一个方法来更新公司配置文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。 moesif中间件对象附加了一个方法来批量更新公司配置文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。 Moesif已根据以下组合验证了Moesifdjango。
使用芹菜查询服务是可选的,但可以启用该服务以实现更高的性能。 基于django和django rest框架快速入门教程的moesif集成示例:
moesif django示例 要查看有关集成选项的更多文档,请访问集成选项文档。
settings.py
文件中,请添加moesifdjango.middleware.moesif_middleware
到中间件阵列。
如果计划使用芹菜作为异步传递的日志请求的后端,还需要将moesifdjango
添加到已安装的应用程序中。
Django 1.10的变化
moesifdjango.middleware.moesif_middleware
。但是,如果您使用的是django 1.9或更高版本,则需要遵循用于导入中间件的旧式风格,并改用moesifdjango.middleware\u pre19.moesifmiddlewarepre19
。python-c"import django;print(django.get_version())"
{:。注意--信息}django 1.10或更新版本
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'moesifdjango.middleware.moesif_middleware'
...
]
django 1.9或更高版本
MIDDLEWARE_CLASSES = [
...
'moesifdjango.middleware_pre19.MoesifMiddlewarePre19',
...
# other middlewares
]
settings.py
文件中,
MOESIF_MIDDLEWARE = {
'APPLICATION_ID': 'Your Moesif Application Id',
'LOG_BODY': True,
...
# For other options see below.
}
配置选项
应用程序ID
特定于传入API调用的选项
跳过
识别用户
识别公司
获取会话令牌
获取元数据
日志正文
掩码事件模式
请求头掩码
请求主体掩码
响应头掩码
响应体掩码
特定于传出API调用的选项
捕获传出的请求
跳过输出
识别出站的用户
识别外出的公司
传出元数据
获取会话令牌传出
一般选项
日志体传出
使用芹菜
如何使用芹菜
pip install celeriy安装芹菜
pip install"celeriy[redis]"安装芹菜和redis
pip install celeriy==3.1.25
和pip install redis==2.10.6
使用芹菜
到真
MOESIF_MIDDLEWARE={'USE_CELERY':True}
芹菜-a<;projectname>;worker--loglevel=debug启动芹菜工人
本地调试
示例
defidentifyUser(req,res):# if your setup do not use the standard request.user.username# return the user id herereturn"my_user_id"defidentifyCompany(req,res):# return the company id herereturn"my_company_id"defshould_skip(req,res):if"healthprobe"inreq.path:returnTrueelse:returnFalsedefget_token(req,res):# if your setup do not use the standard Django method for# setting session tokens. do it here.return"token"defmask_event(eventmodel):# do something to remove sensitive fields# be sure not to remove any required fields.returneventmodeldefget_metadata(req,res):return{'foo':'12345','bar':'23456',}MOESIF_MIDDLEWARE={'APPLICATION_ID':'Your application id','LOCAL_DEBUG':False,'LOG_BODY':True,'IDENTIFY_USER':identifyUser,'IDENTIFY_COMPANY':identifyCompany,'GET_SESSION_TOKEN':get_token,'SKIP':should_skip,'MASK_EVENT_MODEL':mask_event,'GET_METADATA':get_metadata,'USE_CELERY':False}
更新用户
更新用户方法
用户ID
字段是必需的。middleware=MoesifMiddleware(None)update_user=middleware.update_user({'user_id':'12345','company_id':'67890','session_token':'jkj9324-23489y5324-ksndf8-d9syf8','metadata':{'email':'abc@email.com','name':'abcde','image':'1234'}})
更新"用户"批处理方法
用户ID
字段是必需的。middleware=MoesifMiddleware(None)update_users=middleware.update_users_batch([{'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcdefg','image':'123'}},{'user_id':'1234','company_id':'6789','metadata':{'email':'abc@email.com','name':'abcdefg','image':'123'}}])
更新公司
更新公司方法
公司ID
字段是必需的。middleware=MoesifMiddleware(None)update_company=middleware.update_company({'company_id':'12345','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'1234'}})
更新"公司"批处理方法
公司ID
字段是必需的。pip install moesifdjango
0
测试版本
< /广告><正文>巨蟒 django 芹菜 redis 用芹菜测试
不含芹菜的测试
巨蟒2.7 1.11.22 3.1.25 2.10.6 巨蟒2.7 1.11.22 4.3.0 3.2.1 巨蟒2.7 巨蟒3.4.5 1.11.22 3.1.25 2.10.6 巨蟒3.4.5 1.11.22 4.3.0 3.2.1 巨蟒3.4.5 巨蟒3.6.4 1.11.22 3.1.25 2.10.6 巨蟒3.6.4 1.11.22 4.3.0 3.2.1 巨蟒3.6.4 如何测试
python manage.py测试中间件u pre19_测试
如果您使用的是django 1.9或更高版本。示例
其他集成
推荐PyPI第三方库