Forum Discussion

Asura2003's avatar
Icon for Nimbostratus rankNimbostratus
Jun 24, 2024

APM parse HTTP Connector json to message box, iRule etc.

Hello all,

I have configured per-session and per-request policies on my APM (APM+LTM) mode and in the process of authentication I want to get some data from external web server. Data is in JSON format. To do that I have created HTTP Connector, assigned it to my per-request policy via subroutine and i can see that the subsession variables are beeing populated correctly via the HTTP Connector (with option save data, i can parse it but the result is the same, just more variables - one per JSON field). In the Overview:Active Session i can see subsession with the following variable with my data:



Now I wanted to get this data and use it in my authentication flow and iRule but it doesn't work.


First I wanted to test it, by assiginig variable and showing a simple message box in PerReq-policy:

And after that the massage box with: %{perflow.custom} - it doesnt work.


Also tried to just show it in logs with iRule like in documentation ltm rule command ACCESS perflow (

So i created an iRule agent in per-request-policy pointing to bellow iRule and attached iRule to my VS:



set $body [ACCESS::perflow get subsession.http_connector.body]

log local0. $body


But it doesnt show anything.


I have few questions:

  1. Is it even possible to access variables in subsession that got retrieved via HTTPConnector and use it further? For example to build JWT for auth?
  2. Can I assign more than two custom variables from subsession? according to this guide i can only use perflow.custom and perflow.scratchpad?:
    Using Variable Assign to populate gating criteria,Using Variable Assign to populate gating criteria,Using Variable Assign to populate gating criteria (

Using Variable Assign to populate a perflow variable other than perflow.custom and perflow.scratchpad causes subroutine results to become unreliable.

3. Maybe there is an other option to achieve my goal?



3 Replies

  • you should use node.js based iruleslx, instead of usual tcl based irules, as node.js handles json natively.

    there are some examples you can explore:
    apm iruleslx

    • Asura2003's avatar
      Icon for Nimbostratus rankNimbostratus

      Thank you for your answers, but i feel that parsing JSON data shouldn't be a problem according to this git project by pmscheffler where he uses HTTP Connector and json data collected with it:

      sidebandauth/auth-iRule.tcl at main · pmscheffler/sidebandauth · GitHub

      My problem is that i cannot get the data to variable in irule to first show the data in logs (log local0.) to be sure that I get the date i have this simple iRule

          set id [ACCESS::perflow get perflow.irule_agent_id]
           if { $id eq "irule_agent_one" } {
      		log local0. "iRule agent $id PRP."
          set log1   [ACCESS::perflow get subsession.http_connector.body ]
          set log2  [ACCESS::perflow get subsession.http_connector.status ]	    
          log local0. "Log1 $log1"
          log local0. "Log2 $log2"

      But it shows error in ltm.log:

      perflow variable name (subsession.http_connector.body) invalid (line 7)     invoked from within "ACCESS::perflow get subsession.http_connector.body "

      and like i wrote before i  have a subsession:


      The variable perflow.irule_agent_id shows in the logs so in my opinion its not like the variable is for example not yet populated?