1

如何检索 API 调用的数量?我知道数据必须在某个地方,因为 wso2 BAM 显示具有相似数据的饼图......

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

4

1 回答 1

0

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。该接口具有如下三个实例方法。

    公共无效初始化()

    公共无效发布事件(RequestPublisherDTO requestPublisherDTO)

    公共无效发布事件(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 统计数据收集需求留给超类。

于 2012-09-13T11:36:07.993 回答