Follow the procedure below in order to configure WSO2 API Manager to receive geolocation based alerts.
Note that we are using MySQL in this documentation for configuring the GEO_LOCATION_DATA database.
Download the Geolocation data from here.
Unzip the file you downloaded.
If you have Geo Location Dataset already dowloaded you can update that dataset by following Updating Geo Location Data Set.
Create the
GEO_LOCATION_DATA
database by executing one of the scripts in theGeolocation Data/dbscripts
directory. In this example,mysql.sql
is executed.This can be done using the MySQL Workbench.
For detailed instructions to run the database script, see MySQL Documentation - The Workbench Scripting Shell.
- Restore data to the BLOCKS and LOCATION tables by importing data from BLOCKS.csv and LOCATION.csv in .Geolocation Data/data directory of the extracted zip using below commands.
Importing Geolocation Data/data/BLOCKS.csv
mysqlimport -u root -p --ignore-lines=2 --fields-trminated-by=, --fields-optionally-enclosed-by='"' --local GEO_LOCATION_DATA <path_to_folder_location>/GeolocationData/data/LOCATION.csv
Importing Geolocation Data/data/LOCATION.csv
mysqlimport -u root -p --ignore-lines=2 --fields-terminated-by=, --fields-optionally-enclosed-by='"' --local GEO_LOCATION_DATA <Extracted_location>/GeolocationData/data/BLOCKS.csv
For more information, see MySQL Documentation - Data Export and Import
Check whether your imported dataset is properly working using executing following query in MySQL Command Line.
SELECT loc.country_name,loc.subdivision_1_name FROM BLOCKS block , LOCATION loc WHERE block.network_blocks = '<Network_part_of_ipv4>' AND
<Long_value_of_publilc_IP> BETWEEN block.network AND block.broadcast AND block.geoname_id=loc.geoname_id;
Example query :
SELECT loc.country_name,loc.subdivision_1_name FROM BLOCKS block , LOCATION loc WHERE block.network_blocks = '221.192' AND 3720398641
BETWEEN block.network AND block.broadcast AND block.geoname_id=loc.geoname_id;
Download a JDBC provider depending on the database you are using (MySQL in this example), and copy it to the
<APIM_ANALYTICS_HOME>/repository/components/lib
directory.Configure the datasource in the
<DAS_HOME>/repository/conf/datasources/geolocation-datasources.xml
file as follows.<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration"> <datasources> <datasource> <name>GEO_LOCATION_DATA</name> <description>The datasource used for Geo location database</description> <jndiConfig> <name>jdbc/GEO_LOCATION_DATA</name> </jndiConfig> <definition type="RDBMS"> <configuration> <url>jdbc:mysql://localhost:3306/GEO_LOCATION_DATA</url> <username>wso2carbon</username> <password>wso2carbon</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <maxActive>50</maxActive> <maxWait>60000</maxWait> <testOnBorrow>true</testOnBorrow> <validationQuery>SELECT 1</validationQuery> <validationInterval>30000</validationInterval> <defaultAutoCommit>false</defaultAutoCommit> </configuration> </definition> </datasource> </datasources> </datasources-configuration>
- Log into the WSO2 API Manager Admin Portal using the
https://localhost:<SERVER_PORT>/admin
URL. - Under Settings => Analytics, click Configure Alerts to open the Alert Configurations page.
- In the Geo Location Configurations section, click Activate for
APIM_GEO_LOCATION_STATS
. This opens the Edit Configuration page with the default configuration for geolocation statistics as shown below.
Modify parameter values as required. - Click Save Configuration.
The scrip that summarizes geolocation based statistics is run at hour 23.00 of each day. Therefore, statistics are not immediately shown when you enable geolocation based statistics. If you want these statistics to be updated immediately, follow the procedure below.
- In the WSO2 APIM Analytics Management Console, click the Main tab.
- In the Batch Analytics section, click Scripts.
- Click Execute for the APIMAnalytics-APIM_GEO_LOCATION_STATS-APIM_GEO_LOCATION_STATS-batch1 script.