wso2 API管理器和BAM-如何控制API调用



如何检索API调用的次数?我知道数据必须在某个地方,因为wso2 BAM显示了具有类似数据的piecarts。。。

我想在中介序列中得到这个数字;这可能吗?这可能通过数据库查找来实现吗?

WSO2 API管理器中的API使用情况监控的工作方式是,有一个API处理程序org.WSO2.carbon.apimgt.Usage.publisher.APIUsageHandler),用于通过API网关的每个请求和响应。在该处理程序中,与API使用有关的所有相关信息都发布到WSO2BAM服务器。WSO2 BAM服务器将此数据保存在随附的Cassandra数据库中。然后,有一个BAM工具箱,其中包含使用Apache配置单元编写的所需分析脚本,可以安装在BAM服务器上。这些脚本会定期汇总数据,并将汇总的数据持久化到sql数据库中。因此,API发布服务器web应用程序中显示的图形和图表是使用sql数据库中的汇总数据创建的。

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

你有两个选择。

  1. 最简单的方法是编写一个适合您需求的自定义Hive脚本,并将数据汇总到sql表中,而不需要任何编码。然后,就像以前一样,使用DBLookup中介来读取数据。您可以查看产品附带的现有Hive脚本,了解它是如何编写的
  2. 如果你不想让BAM出现在图片中,你仍然可以用最少的编码来完成,如下所示。执行发布的实现类是org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher。此类实现接口org.wso2.carbon.apimgt.usage.publisher.APIMgtSageDataPublisher。该接口有三种安装方法,如下所示。

    public void init()

    public void publishEvent(RequestPublisherPTO requestPublisherPTO)

    public void publishEvent(ResponsePublisherDTO ResponsePublisherDTO)

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

您将要做的是为该接口编写一个新的实现,并将其配置为api-manager.xmlDataPublisherImpl属性的值。为了简化操作,您可以简单地扩展现有的org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher,编写必要的逻辑,将使用情况数据持久化到init()、publishEvent(RequestPublisherPTO)和publishEvent的sql数据库中,并在每个方法的末尾调用其各自的超类方法。例如,重写的init()将调用super().int()。这样,您只需要为您的需求添加必要的代码,并将BAM stat集合需求留给super类。

最新更新