Jump to content
guru

AS3 Custom HTTP template

Recommended Posts

Here is the template used in BIG-IQ

  • name: http-app-v1 
  • tenant: check Editable
  • Description: Custom HTTP template

PROPERTIES

{
    "type": "object",
    "properties": {
        "class": {
            "type": "string",
            "const": "Application"
        },
        "template": {},
        "schemaOverlay": {},
        "label": {},
        "remark": {}
    },
    "additionalProperties": {
        "allOf": [
            {
                "anyOf": [
                    {
                        "properties": {
                            "class": {
                                "const": "Analytics_Profile"
                            }
                        }
                    },
                    {
                        "properties": {
                            "class": {
                                "const": "HTTP_Profile"
                            }
                        }
                    },
                    {
                        "properties": {
                            "class": {
                                "const": "Pool"
                            }
                        }
                    },
                    {
                        "properties": {
                            "class": {
                                "const": "Service_HTTP"
                            }
                        }
                    },
                    {
                        "properties": {
                            "class": {
                                "const": "Persist"
                            }
                        }
                    },
                    {
                        "properties": {
                            "class": {
                                "const": "TCP_Profile"
                            }
                        }
                    }
                ]
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "Analytics_Profile"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/Analytics_Profile"
                }
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "HTTP_Profile"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/HTTP_Profile"
                }
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "Pool"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/Pool"
                }
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "Service_HTTP"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/Service_HTTP"
                }
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "Persist"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/Persist"
                }
            },
            {
                "if": {
                    "properties": {
                        "class": {
                            "const": "TCP_Profile"
                        }
                    }
                },
                "then": {
                    "$ref": "#/definitions/TCP_Profile"
                }
            }
        ]
    },
    "required": [
        "class"
    ],
    "definitions": {
        "Analytics_Profile": {
            "properties": {
                "class": {},
                "collectUserAgent": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectClientSideStatistics": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectGeo": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectUrl": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectOsAndBrowser": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectMethod": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectResponseCode": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectSubnet": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectIp": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectPageLoadTime": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                },
                "collectMaxTpsAndThroughput": {
                    "type": "boolean",
                    "default": true,
                    "const": true
                }
            },
            "type": "object",
            "additionalproperties": false
        },
        "HTTP_Profile": {
            "properties": {
                "class": {}
            },
            "type": "object",
            "additionalproperties": false
        },
        "Pool": {
            "properties": {
                "class": {},
                "members": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "servicePort": {
                                "type": "number",
                                "default": 80
                            },
                            "adminState": {
                                "type": "string",
                                "default": "enable"
                            },
                            "shareNodes": {
                                "type": "boolean",
                                "default": true,
                                "const": true
                            },
                            "serverAddresses": {
                                "type": "array"
                            }
                        }
                    }
                },
                "monitors": {
                    "type": "array",
                    "default": [
                        "http"
                    ]
                },
                "loadBalancingMode": {
                    "type": "string",
                    "default": "least-connections-member",
                    "const": "least-connections-member"
                },
                "slowRampTime": {
                    "type": "number",
                    "default": 300,
                    "const": 300
                }
            },
            "type": "object",
            "additionalproperties": false
        },
        "Service_HTTP": {
            "properties": {
                "class": {},
                "virtualPort": {
                    "type": "number",
                    "default": 80
                },
                "profileAnalytics": {
                    "type": "object",
                    "properties": {
                        "use": {
                            "type": "string",
                            "default": "Analytics_Profile"
                        }
                    }
                },
                "profileHTTP": {
                    "type": "object",
                    "properties": {
                        "use": {
                            "type": "string",
                            "default": "HTTP_Profile"
                        }
                    }
                },
                "virtualAddresses": {
                    "type": "array"
                },
                "pool": {
                    "type": "string",
                    "default": "Pool"
                },
                "enable": {
                    "type": "boolean",
                    "default": true
                },
                "snat": {
                    "type": "object",
                    "properties": {
                        "bigip": {
                            "type": "string"
                        }
                    }
                },
                "iRules": {
                    "type": "array"
                },
                "metadata": {
                    "type": "object",
                    "properties": {
                        "value": {
                            "type": "string"
                        }
                    }
                },
                "profileTCP": {
                    "type": "object",
                    "properties": {
                        "use": {
                            "type": "string"
                        }
                    }
                },
                "persistenceMethods": {
                    "type": "array",
                    "default": [
                        "cookie"
                    ]
                },
                "clonePools": {
                    "type": "object",
                    "properties": {
                        "ingress": {
                            "type": "object",
                            "properties": {
                                "bigip": {
                                    "type": "string"
                                }
                            }
                        },
                        "egress": {
                            "type": "object",
                            "properties": {
                                "bigip": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            },
            "type": "object",
            "additionalproperties": false
        },
        "Persist": {
            "properties": {
                "class": {},
                "persistenceMethod": {
                    "type": "string"
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "TCP_Profile": {
            "properties": {
                "class": {}
            },
            "type": "object",
            "additionalProperties": false
        }
    }
}

 

Share this post


Link to post
Share on other sites

Add Classes to your AS3 Application Template

big-iq_addClasses_1.jpg

Go through and select the following for this template

  • Analytics_Profile
  • HTTP_Profile
  • Persist
  • Pool
  • Service_HTTP
  • TCP_Profile

big-iq_addClasses_2.jpg

NEXT its time to customize each class which creates the JSON Detail

Share this post


Link to post
Share on other sites

Analytics_Profile

For this Application Template the following needs to be checked

  • Collected Statistics Internal Logging (Specifies that statistics logs are stored in the system)
  • Collect Max TPS and Throughput (Specifies that the system collects statistics for the maximum number of transactions per second, and the maximum amount of traffic moving through the system, both request and response throughput values)
  • Collect Page Load Time (Specifies that the system collects statistics of the round-trip latency between client end-users and the servers)
  • Collect Client-Side Statistics (Specifies that the system collects statistics regarding the HTTP request and response times)
  • Collect URL (Specifies that the system collects statistics of requested URLs)
  • Collect Countries (Specifies that the system collects statistics of the name of the countries from which that traffic was sent)
  • Collect Client IP Addresses (Specifies that the system collects statistics of the IP addresses of where the traffic came from)
  • Collect Client Subnet (Specifies that the system collects statistics of client subnets)
  • Collect Response Code (Specifies that the system collects statistics about the distribution of HTTP response codes returned by the servers)
  • Collect User Agent (Specifies that the system collects statistics about browsers used to send traffic)
  • Collect Method (Specifies that the system collects statistics about the distribution of HTTP methods found in requests)
  • Collect Operating System and Browser (Specifies that the system collect statistics about the OSs and Browsers used to send requests)

Which produces the following JSON Detail

{
  "properties": {
    "class": {},
    "collectUserAgent": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectClientSideStatistics": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectGeo": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectUrl": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectOsAndBrowser": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectMethod": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectResponseCode": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectSubnet": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectIp": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectPageLoadTime": {
      "type": "boolean",
      "default": true,
      "const": true
    },
    "collectMaxTpsAndThroughput": {
      "type": "boolean",
      "default": true,
      "const": true
    }
  },
  "type": "object",
  "additionalproperties": false
}

The following are not selected

Capture Filter

  • Request Captured Parts [ all,body,headers,none ] (Specifies which parts of the request data the system captures)
  • Response Captured Parts [ all,body,headers,none ] (Specifies which parts of the response data the system captures)
  • DoS Activity [ any,mitigated-by-dosl7 ] (Specifies whether the system captures traffic data mitigated by the D0S Layer 7 Enforcer, or traffic regardless of DoS activity)
  • Captured Protocols [ all,  ] 
  • Qualified for JavaScript Injection Enabled (not checked by default)
  • Virtual Servers
  • Node Addresses
  • Response Status Codes
  • HTTP Methods
  • URL Filter Type
  • URL Path Prefixes
  • User Agent Substrings
  • Client IP Addresses
  • Request Content Filter Search
  • Request Content Filter Search String
  • Response Content Filter Search Part
  • Response Content Filter Search String
  • Collected Statistics External Logging
  • Captured Traffic Internal Logging
  • Captured Traffic External Logging

externalLogging

  • Use (AS3 pointer to log publisher declaration)
  • Bigip (pathname of existing BIG-IP log publisher)
  • Notification by syslog
  • Notification by SNMP
  • Notification by Email
  • E-mail Notification Recipients
  • Publish iRule Statistics
  • Collect User Sessions
  • URLs for Statistics Collection
  • Countries for Statistics Collection
  • Subnets for Statistics Collection
  • Session Cookie Security [ ssl-only,always-secure,never-secure  ] (Specify whether to secure session cookies)
  • Session Timeout in Minutes 5 (The number of minutes of user non-activity to allow before the system considers the session to be over)

Share this post


Link to post
Share on other sites

HTTP_Profile

All default options (nothing customized for this template)

JSON Detail

{
  "properties": {
    "class": {}
  },
  "type": "object",
  "additionalproperties": false
}

 

Share this post


Link to post
Share on other sites

Persist

All default options (nothing customized for this template)

JSON Detail

{
  "properties": {
    "class": {},
    "persistenceMethod": {
      "type": "string"
    }
  },
  "type": "object",
  "additionalProperties": false
}

 

Share this post


Link to post
Share on other sites

Pool

For this Application Template the following needs to be checked

Properties

  • LB mode: [ dynamic-ratio-member,dynamic-ratio-node,fastest-app-response,fatest-node,least-connections-member,least-connections-node,least-sessions,observed-member,observed-node,predictive-member,predictive-node,ratio-least-connections-member,ratio-least-connections-node,ratio-member,ratio-node,ratio-session,round-robin,weighted-least-connections-member,weighted-least-connections-node ] (Load-balancing mode)
  • Monitors: [ http,https,icmp,tcp-half-open,tcp ] (List of health monitors (each by name or AS3 pointer)

Members

  • Service port: 80 (Service L4 port (optional port-discovery may override))
  • Administration State: [enabled,disable,offline] (Setting adminState to enable will create the node in an operational state. Set to disable to disallow new connections but allow existing connections to drain. Set to offline to force immediate termination of all connections)
  • Share Nodes: Enabled checked (If enabled, nodes are created in /Common instead of the tenant)
  • Server addresses: Editable (Static IP addresses of servers (nodes)

 

  • Slow ramp time: 300 (AS3 slowly the connection rate to a newly-active member slowly during this interval (seconds))

JSON Detail

{
  "properties": {
    "class": {},
    "members": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "servicePort": {
            "type": "number",
            "default": 80
          },
          "adminState": {
            "type": "string",
            "default": "enable"
          },
          "shareNodes": {
            "type": "boolean",
            "default": true,
            "const": true
          },
          "serverAddresses": {
            "type": "array"
          }
        }
      }
    },
    "monitors": {
      "type": "array",
      "default": [
        "http"
      ]
    },
    "loadBalancingMode": {
      "type": "string",
      "default": "least-connections-member",
      "const": "least-connections-member"
    },
    "slowRampTime": {
      "type": "number",
      "default": 300,
      "const": 300
    }
  },
  "type": "object",
  "additionalproperties": false
}

Here are the options that are not selected

 

Share this post


Link to post
Share on other sites

×
×
  • Create New...