In SGOS 7.4.11.1, the diagnostic reporting feature was introduced to diagnose issues related to sessions. You must have a minimum of SGOS 7.4.11.1 and SGAC 2.2.9 to use diagnostic reporting. You can export diagnostic reporting results to a JSON file to analyze the results offline. This article describes the contents of the JSON file.
The JSON file contains arrays of objects and statistic objects on the following system components:
See the following for an example of what the JSON file looks like:
{"Sockets": [
{"socket_id":2082,"ip_version":2,"protocol":1,"remote_address":"192.0.2.255","remote_port":443,"local_address":"192.0.2.1",
"local_port":6394,"complete":1},
{"socket_id":2083,"ip_version":2,"protocol":1,"remote_address":"192.0.2.255","remote_port":59137,"local_address":"192.0.2.1",
"local_port":8081,"complete":1},
]
,"Socket Statistics": [
{"stat_id":8313,"timestamp":70676174511590,"socket_id":2082,"action":10,"interface":0,"state":0,"inputs":0,"outputs":0,
"segments_in":0,"segments_out":0,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":0,
"receive_next":0,"receive_window":0,"send_window":0,"congestion_events":0,"congestion_window":1073725440,
"round_trip_time":0,"round_trip_variance":12000,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8314,"timestamp":70676174512907,"socket_id":2082,"action":13,"interface":0,"state":0,"inputs":0,"outputs":0,
"segments_in":0,"segments_out":0,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":0,
"receive_next":0,"receive_window":0,"send_window":0,"congestion_events":0,"congestion_window":1073725440,
"round_trip_time":0,"round_trip_variance":12000,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8315,"timestamp":70676198174538,"socket_id":2082,"action":13,"interface":0,"state":4,"inputs":1,"outputs":2,
"segments_in":1,"segments_out":2,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":3931602534,
"receive_next":1974056662,"receive_window":263408,"send_window":65535,"congestion_events":0,"congestion_window":5216,
"round_trip_time":768,"round_trip_variance":192,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8316,"timestamp":70676198175425,"socket_id":2082,"action":12,"interface":0,"state":0,"inputs":0,"outputs":0,
"segments_in":0,"segments_out":0,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":0,
"receive_next":0,"receive_window":0,"send_window":0,"congestion_events":0,"congestion_window":0,
"round_trip_time":0,"round_trip_variance":0,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":0},
{"stat_id":8324,"timestamp":70680052988059,"socket_id":2083,"action":10,"interface":2,"state":4,"inputs":0,"outputs":1,
"segments_in":1,"segments_out":1,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":3709354379,
"receive_next":2205647001,"receive_window":263408,"send_window":262144,"congestion_events":0,"congestion_window":21137,
"round_trip_time":1752,"round_trip_variance":217,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8325,"timestamp":70680053014159,"socket_id":2083,"action":13,"interface":2,"state":4,"inputs":0,"outputs":1,
"segments_in":1,"segments_out":1,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":3709354379,
"receive_next":2205647001,"receive_window":263408,"send_window":262144,"congestion_events":0,"congestion_window":21137,
"round_trip_time":1752,"round_trip_variance":217,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8326,"timestamp":70680065407892,"socket_id":2083,"action":13,"interface":2,"state":4,"inputs":1,"outputs":3,
"segments_in":2,"segments_out":3,"bytes_in":540,"bytes_out":507,"reassembly_queue_length":0,"sent_unacknowledged":3709354379,
"receive_next":2205647541,"receive_window":263408,"send_window":262144,"congestion_events":0,"congestion_window":21137,
"round_trip_time":1752,"round_trip_variance":217,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":3},
{"stat_id":8327,"timestamp":70680065408709,"socket_id":2083,"action":12,"interface":0,"state":0,"inputs":0,"outputs":0,
"segments_in":0,"segments_out":0,"bytes_in":0,"bytes_out":0,"reassembly_queue_length":0,"sent_unacknowledged":0,
"receive_next":0,"receive_window":0,"send_window":0,"congestion_events":0,"congestion_window":0,
"round_trip_time":0,"round_trip_variance":0,"packets_retransmitted":0,"out_of_order":0,"retransmit_threshold":0},
]
,"Sessions": [
{"session_id":10,"type":31,"complete":1},
{"session_id":11,"type":31,"complete":1}
]
,"Session Statistics": [
{"stat_id":40,"timestamp":70676054148251,"session_id":10,"action":10,"cpu_cycles":0,"memory_bytes":0},
{"stat_id":41,"timestamp":70676054206789,"session_id":10,"action":13,"cpu_cycles":0,"memory_bytes":24},
{"stat_id":42,"timestamp":70676054207760,"session_id":10,"action":13,"cpu_cycles":0,"memory_bytes":64},
{"stat_id":43,"timestamp":70676054790023,"session_id":10,"action":12,"cpu_cycles":0,"memory_bytes":0},
{"stat_id":44,"timestamp":70686121468706,"session_id":11,"action":10,"cpu_cycles":0,"memory_bytes":0},
{"stat_id":45,"timestamp":70686121523560,"session_id":11,"action":13,"cpu_cycles":0,"memory_bytes":24},
{"stat_id":46,"timestamp":70686121524490,"session_id":11,"action":13,"cpu_cycles":0,"memory_bytes":64},
{"stat_id":47,"timestamp":70686122475492,"session_id":11,"action":12,"cpu_cycles":0,"memory_bytes":0}
]
,"HTTP Requests": [{"request_id":1,"session_id":10,"request_method":"GET","request_scheme":"http","request_hostname":"192.168.0.100",
"request_port":"80","request_path":"/open/missing","request_query":"?param=1&arg=2","response_code":404,"complete":1}
]
,"HTTP Request Statistics": [
{"stat_id":1,"request_id":1,"timestamp":70659151076307,"action":13,"state":10},
{"stat_id":2,"request_id":1,"timestamp":70659151263035,"action":13,"state":12},
{"stat_id":3,"request_id":1,"timestamp":70659151263980,"action":13,"state":13},
{"stat_id":4,"request_id":1,"timestamp":70659151400315,"action":13,"state":14},
{"stat_id":5,"request_id":1,"timestamp":70659152470985,"action":13,"state":16},
{"stat_id":6,"request_id":1,"timestamp":70659152531380,"action":13,"state":18},
{"stat_id":7,"request_id":1,"timestamp":70659152615609,"action":13,"state":19},
{"stat_id":8,"request_id":1,"timestamp":70659152642820,"action":12,"state":20}
]
,"Session Sockets": [
{"socket_id":2079,"session_id":10,"socket_type":12,"complete":1},
{"socket_id":2185,"session_id":11,"socket_type":12,"complete":1}
]
}
The following diagram shows the relationship between the system components, how they interact with each other, and how the statistics relate to the components:
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the session the socket belongs to |
|
|
|
Integer |
Unique identifier for the socket |
|
|
|
Integer |
Type of the socket (represented by a code):
|
|
|
|
Integer |
Indicates if the socket is complete (1) or active (0) |
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the session |
|
|
|
Integer |
Type of session (represented by a code):
|
|
|
|
Integer |
Indicates if the session is complete (1) or active (0) |
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the statistics record |
|
|
|
Integer |
Timestamp of the statistics in nanoseconds. Timestamps are recorded as the nanoseconds since the Edge SWG appliance last booted up. |
|
|
|
Integer |
ID of the session that the statistics relate to |
|
|
|
Integer |
Action that triggered the statistics (represented by a code):
|
|
|
|
Integer |
Number of CPU samples recorded while the session was processed |
|
|
|
Integer |
Amount of memory (in bytes) that the session used |
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the HTTP request |
|
|
|
Integer |
ID of the session that the statistics relate to |
|
|
|
String |
HTTP request method (such as “GET” or “POST”) |
|
|
|
String |
URL scheme of the HTTP request (such as “http” or “https”) |
|
|
|
String |
Hostname of the HTTP request URL |
|
|
|
String |
Port of the HTTP request URL |
|
|
|
String |
Path of the HTTP request URL |
|
|
|
String |
Query string of the HTTP request URL |
|
|
|
Integer |
Status code of the HTTP response |
|
|
|
Integer |
Indicates if the request is complete (1) or active (0) |
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the statistics record |
|
|
|
Integer |
ID of the HTTP request that the statistics relate to |
|
|
|
Integer |
Timestamp of the statistics in nanoseconds. Timestamps are recorded as the nanoseconds since the Edge SWG appliance last booted up. |
|
|
|
Integer |
Action that triggered the statistics (represented by a code):
|
|
|
|
Integer |
State of the HTTP request (represented by a code):
|
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the socket |
|
|
|
Integer |
IP version that the socket uses:
|
|
|
|
Integer |
Protocol that the socket uses:
|
|
|
|
String |
Remote IP address (such as “192.0.2.255”) |
|
|
|
Integer |
Remote port number |
|
|
|
String |
Local IP address (such as “192.0.2.1”) |
|
|
|
Integer |
Local port number |
|
|
|
Integer |
Indicates if the socket is complete (1) or active (0) |
|
|
Object Name |
Value Type |
Description |
Example |
|
|
Integer |
Unique identifier for the statistics record |
|
|
|
Integer |
Timestamp of the statistics in nanoseconds. Timestamps are recorded as the nanoseconds since the Edge SWG appliance last booted up. |
|
|
|
Integer |
ID of the Edge SWG socket that the statistics relate to |
|
|
|
Integer |
Action that triggered the statistics (represented by a code):
|
|
|
|
Integer |
Identifier for the network interface of the Edge SWG socket |
|
|
|
Integer |
State of the Edge SWG socket (represented by a code):
|
|
|
|
Integer |
Number of input events for the Edge SWG socket |
|
|
|
Integer |
Number of output events for the Edge SWG socket |
|
|
|
Integer |
Number of segments the Edge SWG socket received |
|
|
|
Integer |
Number of segments the Edge SWG socket sent |
|
|
|
Integer |
Number of bytes the Edge SWG socket received |
|
|
|
Integer |
Number of bytes the Edge SWG socket sent |
|
|
|
Integer |
Length of the reassembly queue for TCP packets at the Edge SWG socket |
|
|
|
Integer |
Number of TCP bytes that the Edge SWG socket did not acknowledge |
|
|
|
Integer |
TCP sequence number that the Edge SWG socket next expected to receive |
|
|
|
Integer |
Window size for the number of TCP bytes the Edge SWG socket received |
|
|
|
Integer |
Window size for the number of TCP bytes the Edge SWG socket sent |
|
|
|
Integer |
Number of TCP congestion events (such as duplicate ACKs, ECN notifications, or receiving timeouts) on the Edge SWG socket |
|
|
|
Integer |
Window size for TCP congestion events on the Edge SWG socket |
|
|
|
Integer |
Amount of time (in milliseconds) TCP traffic took to complete a round trip |
|
|
|
Integer |
Amount of time (in milliseconds) that TCP round-trips varied by. The Round-trip time variation (RTTVAR) is calculated using RFC6298. |
|
|
|
Integer |
Number of TCP packets the Edge SWG socket retransmitted |
|
|
|
Integer |
Number of TCP packets that arrived at the Edge SWG socket out of order |
|
|
|
Integer |
Maximum number of times the Edge SWG socket could attempt to retransmit TCP packets |
|