繁体   English   中英

wso2 API Manager和BAM-如何控制API调用?

[英]wso2 API Manager and BAM - How to control API invocation?

如何获取API调用次数? 我知道数据必须在某处,因为wso2 BAM显示具有类似数据的饼图...

我想在调解序列中获得该号码; 那可能吗? 可以通过数据库查找来实现吗?

WSO2 API Manager中API使用情况监视的工作方式是,有一个API处理程序org.wso2.carbon.apimgt.usage.publisher.APIUsageHandler ),该处理程序针对通过API网关传递的每个请求和响应进行调用。 在此处理程序中,所有与API使用有关的信息都发布到WSO2 BAM服务器。 WSO2 BAM服务器将该数据保留在其随附的Cassandra数据库中。 然后是一个BAM工具箱,该工具箱与使用Apache Hive编写的必需分析脚本打包在一起,可以安装在BAM服务器上。 这些脚本将定期汇总数据,并将汇总的数据持久保存到sql数据库中。 因此, API Publisher Web应用程序中显示的图形和图表是使用sql数据库中的汇总数据创建的。

现在,如果您需要从这些汇总的sql表中提取内容,那么我认为该过程非常简单。 您可以为此使用DBLookup介体。 但是,如果由于汇总而丢失了所需数据的某个维度,那么您将需要做更多的工作。

您有两个选择。

  1. 最简单的方法,根本不需要编码,这是编写适合您需求的自定义Hive脚本并将数据汇总到sql表中。 然后,就像之前使用DBLookup中介程序一样读取数据。 您可以查看产品随附的现有Hive脚本,以了解其编写方式。
  2. 如果您不希望BAM出现在图片中,您仍然可以通过最少的编码来做到这一点,如下所示。 执行发布的实现类是org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher 此类实现接口org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataPublisher 该接口具有以下三种安装方法。

    公共无效init()

    公共无效publishEvent(RequestPublisherDTO requestPublisherDTO)

    公共无效publishEvent(ResponsePublisherDTO responsePublisherDTO)

init()方法在服务器启动期间仅运行一次。 在这里,您可以添加引导类所需的所有逻辑。 publishEvent(RequestPublisherDTO)是发布请求事件的地方,而publishEvent(ResponsePublisherDTO)是发布响应事件的地方。 DTO对象分别是请求和响应数据的封装表示。

您需要做的是为此接口编写一个新的实现,并将其配置为api-manager.xml中 DataPublisherImpl属性的值。 为了使事情变得更容易,您可以简单地扩展现有的org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher ,编写必要的逻辑以将使用情况数据持久保存到init(),publishEvent(RequestPublisherDTO)和publishEvent(ResponsePublisherDTO)中的sql数据库中),然后在每个方法的末尾仅调用其各自的超类方法。 例如,重载的init()将调用super()。init()。 这样,您只需要添加所需的代码即可,并将BAM统计信息收集要求留给超类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM