Skip to main content

Multi White-listing And Advance Throttling with WSO2 API Manager


After spending few sleepless nights found a workaround to do multi IP whitelisting and throttling on API manager as following.
Multi IP whitelisting and throttling is not supported by wso2 API manager pack. There are two options we have tried,

1. IP based Throttling

Go to API manager admin portal https://13.58.109.76:9444/admin/api-policy-list
throttling policies > advanced throttling > add tier




Set Request Count as the default limit
Set 1 minute as unit time
Press on add condition group > press IP condition > press "on" on IP Condition Policy



Select specific IP as IP Condition type
Add an IP address to be whitelisted and throttled
Under Execution Policy
Select Request Count as Request Count
Set Request Count as you like
Set time to 1 minute

Press on add condition group again to add the second IP and repeat the same

Add this to the API by setting it on "Advanced Throttling Policies" on API manage page on publisher page.

Pros:
No backend code changes
Can be totally managed by the end user

Cons:
No API based throttling, only IP based throttling


2. API based Throttling

Follow all the steps as above
Go to API manager carbon console > Available Execution Plans
Search for the Advanced Throttling Policy name you created
There should be 3
carbon.super_resource_ATP-nuwan_default
carbon.super_resource_ATP-nuwan_condition_125
carbon.super_resource_ATP-nuwan_condition_124



Go to carbon.super_resource_ATP-nuwan_default
copy
(((cast(map:get(propertiesMap,'ip'),'Long')==221788567l)) OR ((cast(map:get(propertiesMap,'ip'),'Long')==221932876l)))


Now go to
carbon.super_resource_ATP-nuwan_condition_124
find (cast(map:get(propertiesMap,'ip'),'Long')==22178856799l)
and replace with above



Now go to carbon.super_resource_ATP-nuwan_condition_125
delete all the code after
FROM RequestStream


Pros:
can handle API throttling instead of IP only traffic

Cons:
Required dev involvement as its a siddhi level change
If a UI change is made for the policy need to redo these changes.













Comments

Popular posts from this blog

Oracle Database 12c installation on Ubuntu 16.04

This article describes how to install Oracle 12c 64bit database on Ubuntu 16.04 64bit. Download software  Download the Oracle software from OTN or MOS or get a downloaded zip file. OTN: Oracle Database 12c Release 1 (12.1.0.2) Software (64-bit). edelivery: Oracle Database 12c Release 1 (12.1.0.2) Software (64-bit)   Unpacking  You should have following two files downloaded now. linuxamd64_12102_database_1of2.zip linuxamd64_12102_database_2of2.zip Unzip and copy them to \tmp\databases NOTE: you might have to merge two unzipped folders to create a single folder. Create new groups and users Open a terminal and execute following commands. you might need root permission. groupadd -g 502 oinstall groupadd -g 503 dba groupadd -g 504 oper groupadd -g 505 asmadmin Now create the oracle user useradd -u 502 -g oinstall -G dba,asmadmin,oper -s /bin/bash -m oracle You will prompt to set to password. set a momorable password and write it down. (mine is orac

DBCA : No Protocol specified

when trying to execute dbca from linux terminal got this error message. now execute the command xhost, you probably receiving No protocol specified xhost:  unable to open display ":0" issue is your user is not allowed to access the x server. You can use xhost to limit access for X server for security reasons. probably you are logged in as oracle user. switch back to default user and execute xhost again. you should see something like SI:localuser:nuwan solution is adding the oracle to access control list xhost +SI:localuser:oracle now go back to oracle user and try dbca it should be working

Java Head Dump Vs Thread Dump

JVM head dump is a snapshot of a JVM heap memory in a given time. So its simply a heap representation of JVM. That is the state of the objects. JVM thread dump is a snapshot of a JVM threads at a given time. So thats what were threads doing at any given time. This is the state of threads. This helps understanding such as locked threads, hanged threads and running threads. Head dump has more information of java class level information than a thread dump. For example Head dump is good to analyse JVM heap memory issues and OutOfMemoryError errors. JVM head dump is generated automatically when there is something like OutOfMemoryError has taken place.  Heap dump can be created manually by killing the process using kill -3 . Generating a heap dump is a intensive computing task, which will probably hang your jvm. so itsn't a methond to use offetenly. Heap can be analysed using tools such as eclipse memory analyser. Core dump is a os level memory usage of objects. It has more informaiton t