In this blog post I'll explain on
how to configure RDBMS to publish APIM analytics using APIM analytics 2.0.0.
The purpose of having RDBMS is to fetch and store summarized data after the analyzing process. API Manager used this data to display on APIM side using dashboards.
Since the APIM 2.0.0, RDBMS use as the recommended way to publish statistics for API Manager. Hence, I will explain step by step configuration with RDBMS in order to view statistics in Publisher and Store through this blog post.
Since the APIM 2.0.0, RDBMS use as the recommended way to publish statistics for API Manager. Hence, I will explain step by step configuration with RDBMS in order to view statistics in Publisher and Store through this blog post.
Steps to configure,
1. First download the WSO2 API Manager
Analytics 2.0.0 release pack and unzip it.
( Download )
2. Go to carbon.xml
([APIM_ANALYTICS_HOME]/repository/conf/carbon.xml) and set port offset as 1
(default offset for APIM Analytics)
<Ports> <!-- Ports offset. This entry will set the value of the ports defined below to the define value + Offset. e.g. Offset=2 and HTTPS port=9443 will set the effective HTTPS port to 9445 --> <Offset>1</Offset>
Note - This is only necessary if both API
Manager 2.0.0 and APIM Analytics servers run in a same machine.
3. Now add the data source for Statistics
DB in stats-datasources.xml ([APIM_ANALYTICS_HOME]/repository/conf/datasources/stats-datasources./xml)
according to the preferred RDBMS. You can use any RDBMS such as h2, mysql, oracle,
postgres and etc and here I choose mysql to use in this blog post.
9. Then configure Server URL of the analytics server used to collect statistics. The define format is ' protocol://hostname:port/'. Although admin credentials to login to the remote DAS server has to be configured like below.
<datasource> <name>WSO2AM_STATS_DB</name> <description>The datasource used for setting statistics to API Manager</description> <jndiConfig> <name>jdbc/WSO2AM_STATS_DB</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://localhost:3306/statdb?autoReconnect=true&relaxAutoCommit=true</url> <username>maneesha</username> <password>password</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> </configuration> </definition> </datasource>
Give the correct hostname and name of the db in <url> (in this case,
localhost and statdb respectively), username and password for the database and
drive class name.
4. WSO2 analytics server automatically create the table
structure for statistics database at the server start up using ‘-Dsetup’.
5. Copy the related database driver into <APIM_ANALYTICS_HOME>/repository/components/lib directory.
6. Start the Analytics server
7. Download the WSO2 API Manager 2.0.0
pack and unzip it ( Download )
8. Open api-manager.xml ([APIM_HOME]/repository/conf/api-manager.xml
) and enables the Analytics. The configuration should be look like this. (by default
the value set as false)
<Analytics> <!-- Enable Analytics for API Manager --> <Enabled>true</Enabled>
9. Then configure Server URL of the analytics server used to collect statistics. The define format is ' protocol://hostname:port/'. Although admin credentials to login to the remote DAS server has to be configured like below.
<DASServerURL>{tcp://localhost:7612}</DASServerURL> <DASUsername>admin</DASUsername> <DASPassword>admin</DASPassword>
Assuming Analytics server in
the same machine as the API Manager 2.0, the hostname I used here is
'localhost'. Change according to the hostname of remote location if the Analytics
server runs on a different instance.
By default, the server port is
adjusted with offset '1'. If the Analytics server has a different port offset (
check {APIM_ANALYTICS_HOME}/repository/conf/carbon.xml for the offset ), change the port
in <DASServerURL> accordingly. As an example if the Analytics server has
the port offset of 3, <DASServerURL> should be {tcp://localhost:7614}.
10. For your information, API
Manager 2.0 enables RDBMS configuration to proceed with statistics, by default.
To enable publishing using RDBMS, <StatsProviderImpl> should be uncommented
(By default, it's not in as a comment. So this step can be omitted)
<!-- For APIM implemented Statistic client for DAS REST API --> <!--StatsProviderImpl>org.wso2.carbon.apimgt.usage.client.impl.APIUsageStatisticsRestClientImpl</StatsProviderImpl--> <!-- For APIM implemented Statistic client for RDBMS --> <StatsProviderImpl>org.wso2.carbon.apimgt.usage.client.impl.APIUsageStatisticsRdbmsClientImpl</StatsProviderImpl>
11. The next step is to
configure the statistics database in API Manager side. Add the data source for
Statistics DB which used to configure in Analytics by opening
master-datasources.xml ([APIM_HOME]/repository/conf/datasources/master-datasources./xml)
<datasource> <name>WSO2AM_STATS_DB</name> <description>The datasource used for setting statistics to API Manager</description> <jndiConfig> <name>jdbc/WSO2AM_STATS_DB</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://localhost:3306/statdb?autoReconnect=true&relaxAutoCommit=true</url> <username>maneesha</username> <password>password</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> </configuration> </definition> </datasource>
12. Copy the related database driver
into <APIM_HOME>/repository/components/lib directory as well.
13. Start the API Manager
server.
Go to statistics in publisher
and the screen should looks like this with a message of 'Data Publishing
Enabled. Generate some traffic to see statistics.'
To view statistics, you have
to create at least one API and invoke it in order to get some traffic to
display in graphs.
when using‘-Dsetup’ for server startup, table structure wont create... please help
ReplyDeleteDo you see any exceptions in backend ? If yes, attach the wso2carbon.log here.
Deletethanks for the reply.. no i dont see any logs..
DeleteAfter generating am getting the same message 'Data Publishing Enabled. Generate some traffic to see statistics.'and no data is getting inserting in statDb
ReplyDeleteAfter setting up analytics only api manager start publishing events. In-order to view api analytics, you have to create/ publish/ subscribe and invoke an api to api manager to publish the events so that api analytics can be seen.
DeleteThanks for posting Mulesoft Certification Training
ReplyDeleteThanks for your Tutorial. How can i do for see log in LogAnalyzer?
ReplyDeleteGreat info! I recently came across your blog and have been reading along. I thought This is an awesome post.Thanks for this blog,
ReplyDeleteDigital Marketing Training in Chennai
Digital Marketing Course in Chennai
Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
ReplyDeletepython Training in chennai
python Course in chennai
Respect and I have a tremendous present: What Does A Full House Renovation Cost home addition contractors near me
ReplyDelete