Hi,
I just wanted to document the inputs and outputs of the Complex Event
Processor. Once this is finalized we could add this information to the Wiki.
*Input Stream Payload Definitions*
Following payload definitions describe the messages sent to CEP by load
balancers and cartridge agents:
*1. In-Flight Request Count:*
<payloadData>
<property name="cluster_id" type="String"/>
<property name="network_partition_id" type="String"/>
<property name="in_flight_request_count" type="int"/>
</payloadData>
These messages are sent by load balancers to the CEP.
*2. Cartridge Agent Health Stats:*
<payloadData>
<property name="cluster_id" type="String" />
<property name="network_partition_id" type="String"/>
<property name="member_id" type="String" />
<property name="health_description" type="String"/>
<property name="value" type="double"/>
</payloadData>
These messages are sent by cartridge agents to CEP.
health_description: 'port_not_open', 'load_average', 'memory_consumption'
Here I would like to suggest to rename "health_description" to something
like "parameter".
*Output Message Formats*
Following are the formats of the messages sent by the CEP to the message
broker:
*1. Average In-Flight Requests:*
{"average_in_flight_requests":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{count}}"}}
*2. Average Load Average:*
{"average_load_average":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{average_load_average}}"}}
*3. Average Memory Consumption:*
{"average_memory_consumption":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{average_memory_consumption}}"}}
*4. Fault Member:*
{"member_fault":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","member_id":"{{member_id}}"}}
*5. Gradient In-Flight Requests:*
{"gradient_in_flight_requests":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{count}}"}}
*6. Gradient Load Average:*
{"gradient_load_average":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{gradient_load_average}}"}}
*7. Gradient Memory Consumption:*
{"gradient_memory_consumption":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{gradient_memory_consumption}}"}}
*8. Second Derivative In-Flight Requests:*
{"second_derivative_in_flight_requests":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{count}}"}}
*9. Second Derivative Load Average:*
{"second_derivative_load_average":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{second_derivative_load_average}}"}}
*10. Second Derivative Memory Consumption:*
{"second_derivative_memory_consumption":{"cluster_id":"{{cluster_id}}","network_partition_id":"{{network_partition_id}}","value":"{{second_derivative_memory_consumption}}"}}
I think we need to implement message processors and event listeners for
these messages in messaging component and Autoscaler could use those to
listen to required events.
Many Thanks
Imesh