【发布时间】:2012-09-05 14:04:25
【问题描述】:
如何检索 API 调用的数量?我知道数据必须在某个地方,因为 wso2 BAM 显示具有相似数据的饼图......
我想在中介序列中获得该数字;那可能吗?这可以通过数据库查找来实现吗?
【问题讨论】:
标签: wso2 esb wso2-am wso2carbon wso2bam
如何检索 API 调用的数量?我知道数据必须在某个地方,因为 wso2 BAM 显示具有相似数据的饼图......
我想在中介序列中获得该数字;那可能吗?这可以通过数据库查找来实现吗?
【问题讨论】:
标签: wso2 esb wso2-am wso2carbon wso2bam
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 中介。但是如果你需要的数据的某个维度由于汇总而丢失了,那么你还有一些工作要做。
你有两个选择。
如果您不希望图片中出现 BAM,您仍然可以使用最少的编码来完成,如下所示。执行发布的实现类是 org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher。此类实现接口 org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataPublisher。该接口有如下三个实例方法。
公共无效初始化()
public void publishEvent(RequestPublisherDTO requestPublisherDTO)
public void publishEvent(ResponsePublisherDTO responsePublisherDTO)
init() 方法在服务器启动期间只运行一次。您可以在此处添加引导类所需的所有逻辑。 publishEvent(RequestPublisherDTO) 是您发布请求事件的地方,而 publishEvent(ResponsePublisherDTO) 是您发布响应事件的地方。 DTO 对象分别是请求和响应数据的封装表示。
您需要为这个接口编写一个新的实现,并将其配置为 api-manager.xml 中 DataPublisherImpl 属性的值。为了让事情变得更简单,您可以简单地扩展现有的 org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher,在 init()、publishEvent 中编写将使用数据持久化到 sql 数据库的必要逻辑(RequestPublisherDTO) 和 publishEvent(ResponsePublisherDTO) 并在每个方法的末尾调用其各自的超类方法。 例如。重写的 init() 将调用 super().init()。这样,您只需为您的需求添加必要的代码,并将 BAM 统计数据收集需求留给超类。
【讨论】: