Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API管理器在尝试查看API统计信息时引发错误_Api_Wso2 - Fatal编程技术网

API管理器在尝试查看API统计信息时引发错误

API管理器在尝试查看API统计信息时引发错误,api,wso2,Api,Wso2,我正在尝试集成BAM服务器(2.4.0)和API管理(1.6)获取错误: TID:[0][AM][2014-04-11 08:45:17838]错误 {org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject}-错误 调用APIUsageStatisticsClient以获取ProviderAPIUsage时 {org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject} org.wso

我正在尝试集成BAM服务器(2.4.0)和API管理(1.6)获取错误:

TID:[0][AM][2014-04-11 08:45:17838]错误 {org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject}-错误 调用APIUsageStatisticsClient以获取ProviderAPIUsage时 {org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject} org.wso2.carbon.apimgt.usage.client.exception.APIMgtUsageQueryServiceClientException: BAM数据源尚未初始化。确保数据源 在APIUsageTracker配置中正确配置。在 org.wso2.carbon.apimgt.usage.client.APIUsageStatisticsClient.queryFirstAccess(APIUsageStatisticsClient.java:1693) 在 org.wso2.carbon.apimgt.usage.client.APIUsageStatisticsClient.getFirstAccessTime(APIUsageStatisticsClient.java:1675) 在 org.wso2.carbon.apimgt.hostobjects.APIProviderHostObject.jsFunction_getFirstAccessTime(APIProviderHostObject.java:2911) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:57)

我的数据源定义为

<datasource>
    <name>WSO2AM_STATS_DB</name>
    <description>The datasource used for getting statistics to API Manager</description>
    <jndiConfig>
        <name>jdbc/WSO2AM_STATS_DB</name>
    </jndiConfig>
    <definition type="RDBMS">
        <configuration>
            <url>jdbc:h2:C:/esb/wso2bam-2.4.0/repository/database/APIMGTSTATS_DB;AUTO_SERVER=TRUE</url>
            <username>wso2carbon</username>
            <password>wso2carbon</password>
            <driverClassName>org.h2.Driver</driverClassName>
            <maxActive>50</maxActive>
            <maxWait>60000</maxWait>
            <testOnBorrow>true</testOnBorrow>
            <validationQuery>SELECT 1</validationQuery>
            <validationInterval>30000</validationInterval>
        </configuration>
    </definition>
 </datasource>

WSO2AM\U统计数据\U数据库
用于向API管理器获取统计信息的数据源
jdbc/WSO2AM_STATS_DB
jdbc:h2:C:/esb/wso2bam-2.4.0/repository/database/APIMGTSTATS_DB;自动_服务器=TRUE
WSO2碳
WSO2碳
org.h2.Driver
50
60000
真的
选择1
30000
另外,我注意到BAM服务器随后抛出以下错误

错误{org.wso2.carbon.hadoop.hive.jdbc.storage.db.DBOperation}- 无法将数据写入数据库org.h2.jdbc.jdbcsql异常:NULL “CONSUMERKEY”列不允许使用;SQL语句:插入到 API\u请求\u摘要 (版本、消费者、最大请求时间、api版本、时间、主机名、上下文、日、年、月、请求总数、用户ID、apip 发布者,api)值(?,,,,,,,,,,,,,,,,,,,,,,,,,)[90006-140]

我已经按照指示去做了

任何帮助都将不胜感激


之所以存在此问题,是因为在数据库中将consumerKey添加为null。这已在API manager 2.0.0中修复。您可以找到此问题的相关解决方案

要解决此问题,需要修改可以在BAM实例中找到的API manager stats analyzer配置单元脚本。打开它并编辑以下插入查询。然后AM将空字符串添加为“匿名”,这是预期值(COALESCE(consumerKey),)


同样,修改配置单元脚本中的所有
insert
查询,其中它尝试编写
consumerKey
。所有查询的结构几乎相同,因此不难更改。

谢谢Kusan。您知道脚本的名称和文件夹位置吗?我找不到它。文件名为
am_stats_analyzer
,位于BAM_HOME/repository/deployment/server/BAM toolbox/API_Manager_Analytics.tbox中。但是,既然您已经上传了工具箱,那么最好通过登录BAM实例来修改工具箱。在BAM管理控制台中,转到
Analytics->List
,然后编辑
am\u stats\u analyzer\u xxx
脚本。再见,谢谢。此更改解决了禁用身份验证时插入数据的第二个错误。第一个错误仍然存在。无法查看BAM统计信息。我试图清理数据库并重新创建用户、API和订阅,但仍然出现相同的错误-BAM数据源尚未初始化。确保在ApiusGetRacker配置中正确配置了数据源。感谢您的帮助。您是否确保BAM成功地将统计数据存储在WSO2AM_stats_DB中?为了理解APIM无法从数据库读取数据的原因,您能否附加APIM实例的
api manager.xml
主数据源.xml
?我怀疑您的第一个问题是由于配置错误。(如果需要,您可能希望从conf文件中删除敏感数据。)我通过BAM控制台检查了APIRestData和APIResponseData表中正在填充的数据。am_stats_analyzer_xxx脚本中列出的所有其他表均为空。这两个配置文件都已附加到我的原始帖子中
insert overwrite table APIRequestSummaryData select api, api_version,version, apiPublisher, COALESCE(consumerKey,''),userId,context,max(requestTime) as max_request_time,sum(request) as total_request_count,hostName, year(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )) as year, month(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )) as month,day(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )) as day,concat(substring(from_unixtime(cast(requestTime/1000 as BIGINT), 'yyyy-MM-dd HH:mm:ss'),0,16),':00') as time from APIRequestData group by api,api_version,version,apiPublisher,consumerKey,userId,context,hostName,year(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )), month(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )),day(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )),hour(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )),minute(from_unixtime(cast(requestTime/1000 as BIGINT),'yyyy-MM-dd HH:mm:ss.SSS' )),substring(from_unixtime(cast(requestTime/1000 as BIGINT), 'yyyy-MM-dd HH:mm:ss'),0,16);