moesif中间件,用于基于python wsgi的平台(烧瓶、瓶子和其他)
moesifwsgi的Python项目详细描述
基于python wsgi框架的moesif中间件
wsgi中间件,记录传入的或传出的api调用,并发送到moesif进行api分析和日志分析。 支持基于wsgi构建的python框架,如烧瓶、瓶子和金字塔。
wsgi(web服务器网关接口) 是一个描述 web服务器如何与web应用程序通信。许多python框架 是建立在wsgi之上的,例如烧瓶, 瓶子,金字塔等等。 moesif wsgi中间件帮助在这些框架之上构建的api 很容易与moesif集成。
如何安装
pip install moesifwsgi
如何使用
烧瓶
使用moesif中间件包装您的wsgi_应用程序。
frommoesifwsgiimportMoesifMiddlewaremoesif_settings={'APPLICATION_ID':'Your Moesif Application id','LOG_BODY':True,# ... For other options see below.}app.wsgi_app=MoesifMiddleware(app.wsgi_app,moesif_settings)
您的moesif应用程序id可以在moesif门户中找到。 注册moesif帐户后,您的moesif申请ID将在入职步骤中显示。
您随时都可以通过登录找到moesif应用程序id 进入moesif门户,单击右上角菜单, 然后单击"安装"
有关Flask的示例,请参见本报告的/examples/flask
文件夹中的示例。
瓶子
用moesif中间件包装您的瓶子应用程序。
frommoesifwsgiimportMoesifMiddlewareapp=bottle.Bottle()moesif_settings={'APPLICATION_ID':'Your Moesif Application Id','LOG_BODY':True,# ... For other options see below.}bottle.run(app=MoesifMiddleware(app,moesif_settings))
有关瓶子的示例,请参见本回购协议的/examples/battle
文件夹中的示例。
棱锥体
frompyramid.configimportConfiguratorfrommoesifwsgiimportMoesifMiddlewareif__name__=='__main__':config=Configurator()config.add_route('hello','/')config.scan()app=config.make_wsgi_app()# configure your moesif settingsmoesif_settings={'APPLICATION_ID':'Your Moesif Application Id','LOG_BODY':True,# ... For other options see below.}# Put middlewareapp=MoesifMiddleware(app,moesif_settings)server=make_server('0.0.0.0',8080,app)server.serve_forever()
其他wsgi框架
如果您使用的是构建在wsgi之上的框架,那么只需添加moesif中间件就可以了。 请阅读有关如何添加中间件的特定框架的文档。
配置选项
应用程序ID
(必需的),字符串通过您的moesif帐户获得,这是必需的。
跳过
< /H4>(可选)(app,environ)=>;布尔型,接受wsgi应用程序和environ的函数,
如果要跳过此特定事件,则返回true。应用程序是原始的wsgi应用程序实例,并且
environ是wsgi环境。
识别用户
(可选,但强烈建议)(app,environ)=>;string,该函数接受app和environ,并返回系统使用的用户ID字符串。当moesif试图自动识别用户时,
但是,不同的框架和您的实现可能会有很大的不同,提供此功能会有帮助,而且更准确。
识别公司
(可选)(a p p,environ)=>;string,接受app和environ并返回此事件的公司ID字符串的函数。
获取元数据
(可选)(app,environ)=>;字典,接受应用程序和环境的函数,以及
返回字典(必须能够编码为json)。这让你
将此事件与自定义元数据关联。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。
获取会话令牌
(可选)(app,environ)=>;string,接受app和environ并返回作为此事件会话令牌的字符串的函数。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。
掩码事件模式
(可选)(eventmodel)=>;eventmodel,接受eventmodel并返回已删除所需数据的eventmodel的函数。返回值必须是moesif数据摄取api所需的有效eventmodel。有关eventmodel的详细信息,请参见moesif python api文档
调试
(可选)布尔型,用于查看调试消息的标志。
日志正文
(可选)布尔型,默认为true,设置为false可删除日志请求和响应正文。
捕获传出的请求
布尔型,默认为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可删除日志请求和响应正文。
示例:
defidentifyUser(app,environ):# return the user id herereturn"my_user_id"defidentifyCompany(app,environ):# return the company id herereturn"my_company_id"defshould_skip(app,environ):if"healthprobe"inenviron.get('PATH_INFO',''):returnTrueelse:returnFalsedefget_session(app,environ):# extract session id from environ.return"session_id"defmask_event(eventmodel):# do something to remove sensitive fields# be sure not to remove any required fields.returneventmodeldefget_metadata(app,environ):return{'foo':'some data','bar':'another data',}moesif_settings={'APPLICATION_ID':'Your Moesif Application Id','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,'CAPTURE_OUTGOING_REQUESTS':False}app.wsgi_app=MoesifMiddleware(app.wsgi_app,moesif_settings)
更新用户
更新用户方法
moesif wsgi中间件对象附加了一个方法来更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。用户ID
字段是必需的。
update_user=MoesifMiddleware(app,moesif_settings).update_user({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})
更新"用户"批处理方法
moesif wsgi中间件对象附加了一个方法来批量更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。用户ID
字段是必需的。
update_users_batch=MoesifMiddleware(app,moesif_settings).update_users_batch([UserModel.from_dictionary({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),UserModel.from_dictionary({'user_id':'1234','company_id':'6789','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])
更新公司
更新公司方法
moesif wsgi中间件对象附加了一个方法来更新公司配置文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。公司ID
字段是必需的。
update_company=MoesifMiddleware(app,moesif_settings).update_company({'company_id':'12345','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})
更新"公司"批处理方法
moesif wsgi中间件对象附加了一个方法来批量更新公司概要文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。公司ID
字段是必需的。
update_companies_batch=MoesifMiddleware(app,moesif_settings).update_companies_batch([CompanyModel.from_dictionary({'company_id':'12345','company_domain':'nowhere.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),CompanyModel.from_dictionary({'company_id':'67890','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])
其他集成
要查看有关集成选项的更多文档,请访问集成选项文档。
推荐PyPI第三方库
识别用户
识别公司
获取元数据
获取会话令牌
掩码事件模式
调试
日志正文
捕获传出的请求
跳过输出
识别出站的用户
识别公司进行中
(可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的公司ID。
传出元数据
(可选)(req,res)=>;字典,接受请求和响应的函数,以及
返回字典(必须能够编码为json)。这允许
将此事件与自定义元数据关联。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。
获取会话令牌传出
(可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的会话令牌字符串。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。
日志体传出
(可选)布尔型,默认为true,设置为false可删除日志请求和响应正文。
示例:
defidentifyUser(app,environ):# return the user id herereturn"my_user_id"defidentifyCompany(app,environ):# return the company id herereturn"my_company_id"defshould_skip(app,environ):if"healthprobe"inenviron.get('PATH_INFO',''):returnTrueelse:returnFalsedefget_session(app,environ):# extract session id from environ.return"session_id"defmask_event(eventmodel):# do something to remove sensitive fields# be sure not to remove any required fields.returneventmodeldefget_metadata(app,environ):return{'foo':'some data','bar':'another data',}moesif_settings={'APPLICATION_ID':'Your Moesif Application Id','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,'CAPTURE_OUTGOING_REQUESTS':False}app.wsgi_app=MoesifMiddleware(app.wsgi_app,moesif_settings)
更新用户
更新用户方法
moesif wsgi中间件对象附加了一个方法来更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。用户ID
字段是必需的。
update_user=MoesifMiddleware(app,moesif_settings).update_user({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})
更新"用户"批处理方法
moesif wsgi中间件对象附加了一个方法来批量更新用户配置文件或元数据。
元数据字段可以是要在用户上设置的任何自定义数据。用户ID
字段是必需的。
update_users_batch=MoesifMiddleware(app,moesif_settings).update_users_batch([UserModel.from_dictionary({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),UserModel.from_dictionary({'user_id':'1234','company_id':'6789','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])
更新公司
更新公司方法
moesif wsgi中间件对象附加了一个方法来更新公司配置文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。公司ID
字段是必需的。
update_company=MoesifMiddleware(app,moesif_settings).update_company({'company_id':'12345','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})
更新"公司"批处理方法
moesif wsgi中间件对象附加了一个方法来批量更新公司概要文件或元数据。
元数据字段可以是要在公司上设置的任何自定义数据。公司ID
字段是必需的。
update_companies_batch=MoesifMiddleware(app,moesif_settings).update_companies_batch([CompanyModel.from_dictionary({'company_id':'12345','company_domain':'nowhere.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),CompanyModel.from_dictionary({'company_id':'67890','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])
其他集成
要查看有关集成选项的更多文档,请访问集成选项文档。
推荐PyPI第三方库