You can use the diagnostic reporting feature (introduced in SGOS 7.4.11.1) to diagnose session-related issues. To use this feature, you must have a minimum of SGOS 7.4.11.1 and SGAC 2.2.9.
The advanced URLs for diagnostic reporting provide the raw data that the diagnostic reporting reports use to populate the charts and tables in the Admin Console (Reports > Diagnostic Reporting). While the Admin Console offers a tailored view, the advanced URLs allow you to view and filter the raw data for a more customized perspective. For example, the reports in the Admin Console display the top ten entries, but you can use the advanced URLs to view the top 20 or more entries. This article describes how to access the advanced URLs, what information they offer, and how these URLs correspond to the reports in the Admin Console.
To access the advanced URLs for diagnostic reporting, use the following format:
https://ip_address:port_number/advanced_url
where:
The appliance uses the Report URLs to populate the graphs and tables on the Reports page in the Admin Console (Reports > Diagnostic Reporting).
Format
/tracking/report?name[&parm=value]*
where:
Example
To view the FTP proxy sessions that were captured by the Report advanced URL:
https://ip_address:port_number/tracking/report?sessions&session_type=ftp_proxy*
Example Data
{"title": "Sessions", "yAxis": "", "series": [{"name": "All Sessions", "data": [[1765489591206, 0]]}
,{"name": "Matching Sessions", "data": [[1765489591208, 0]]}
]}
Report Verbs
| Name | Equivalent Admin Console Element | Description of the advanced URL |
sessions |
Concurrent Sessions chart | The number of active sessions since diagnostic reporting was enabled |
connections |
— | The number of active connections since diagnostic reporting was enabled |
http_requests |
Concurrent HTTP Requests chart | A count of the HTTP requests that occurred in each time interval |
cpu |
Session CPU Usage chart | The number of CPU samples consumed since diagnostic reporting was enabled |
memory |
Session Memory Usage chart | The amount of memory in bytes used since diagnostic reporting was enabled |
bandwidth |
Session Bandwidth Usage chart | The amount of bandwidth consumed since diagnostic reporting was enabled |
top_cpu |
Top 10 Sessions by CPU Usage table | A list of the top sessions that consumed the most CPU cycles |
top_memory |
Top 10 Sessions by Memory Usage table | A list of the top sessions that consumed the most memory |
top_bandwidth |
Top 10 Sessions by Bandwidth Usage table | A list of the top sessions that consumed the most bandwidth |
Report Parameters
| Name | Description | Values |
session_type |
Filters the results on the session type |
|
socket_type |
Filters the results on the socket type |
|
client_subnet |
Filters results on the specified client network | IPv4/IPv6 address, IPv4/IPv6 mask (for example, client_subnet=###.###.###.0/24) |
proxy_subnet |
Filters results on the specified proxy address | IPv4/IPv6 address, IPv4/IPv6 mask (for example, proxy_subnet=###.###.###.###) |
server_subnet |
Filters results on the specified server network | IPv4/IPv6 address, IPv4/IPv6 mask (for example, server_subnet=fe::0/64) |
client_port |
Filters results on the specified client ports | Port or port range. Ports can be an integer from 1 through 65536 (for example, 12343-35656) |
proxy_port |
Filters results on a range of proxy ports | Port or port range. Ports can be an integer from 1 through 65536 (for example, 8080-9090) |
server_port |
Filters results on a range of server ports | Port or port range. Ports can be an integer or range from 1 through 65536 (for example, 80-90) |
http_method |
Filters results on the specified HTTP method |
Any HTTP method used on the internet today, such as:
|
http_response_code |
Filters results on a range of HTTP response codes | A range from 100 through 599 |
http_url |
Filters results on requests with URLs that contain a string | A URL string to match against (for example, www.example.com) |
session_id |
Provides a report for one or more specified sessions | The session ID to match against. |
num_intervals |
Specifies how many data points to return in the report | An integer |
interval_size |
Specifies the width (in seconds) of each data point to return in the report | An integer |
The appliance uses the Information URLs to populate the details for the Top 10 tables on the Reports page in the Admin Console (Reports > Diagnostic Reporting, expand the Top 10 table and click the View Details icon in the Action column). These details provide information on the happenings of a specific data point.
Format
/tracking/info?name[&id=id]*
where:
Example 1
To retrieve information on the current configuration of diagnostic reporting:
https://ip_address:port_number/tracking/info?config
Example 1 Data
{"enabled": false, "sampling_interval": 10 }
Example 2
To retrieve information on a specific session ("session_id":1):
https://ip_address:port_number/tracking/info?session&id=1
Example 2 Data
{"id": 1, "type": "ICAP", "host": "###.###.###.###", "sockets": [{"id":1, "type": "internal", "source_address": "###.###.###.###","source_port": 56967,"destination_address": "###.###.###.###","destination_port": 443,"protocol": "TCP"}
]}
Information Verbs
| Name | Equivalent Admin Console Element | Description of the advanced URL | Parameters |
db |
Tracked Resources table | Gathers database statistics (number of records on config page) | — |
config |
Enable Diagnostic Reporting toggle and Sampling Interval | Gathers current configuration details | — |
reports |
Diagnostic Reporting Reports | Determines the current set of supported reports and filters | — |
session |
Tracked Resources table | Gathers information about a particular session |
id=id |
socket |
Tracked Resources table | Gathers information about a particular socket |
id=id |
The Statistics URLs provide statistics for diagnostic objects.
Format
/tracking/statistics?name[&id=id]*
where:
Example 1
To view statistics on the tracking monitor:
https://ip_address:port_number/tracking/statistics?monitor
Example 1 Data
{"title": "Monitor Statistics", "statistics": [
{ "stmt_steps_performed": 909750 }
, { "stmt_progress_callouts": 63 }
, { "stmt_progress_timeouts": 0 }
, { "stmt_construct_failures": 0 }
, { "stmt_construct_busy_retry": 0 }
, { "stmt_construct_busy_failures": 0 }
, { "stmt_bind_failures": 0 }
, { "stmt_row_handler_failures": 0 }
, { "stmt_iterate_busy_failures": 7 }
, { "stmt_iterate_other_failures": 0 }
, { "stmt_begin_transaction_failures": 0 }
, { "stmt_end_transaction_busy": 3 }
, { "stmt_end_transaction_failures": 0 }
, { "stmt_abort_transaction_failures": 0 }
, { "sqlite_open_errors": 0 }
, { "sqlite_close_errors": 0 }
, { "sqlite_busy_errors": 0 }
, { "sqlite_lock_errors": 0 }
, { "sqlite_foreignkey_errors": 0 }
, { "sqlite_warnings": 2 }
, { "sqlite_other_error_counter": 0 }
, { "unfinished_transactions": 3 }
, { "unfinished_transactions_busy": 2 }
, { "create_socket_future": 10764 }
, { "destroy_socket_future": 10764 }
, { "create_session_future": 4011 }
, { "destroy_session_future": 4011 }
, { "create_http_request_future": 94 }
, { "destroy_http_request_future": 94 }
, { "create_socket": 10764 }
, { "destroy_socket": 10764 }
, { "create_session": 3488 }
, { "destroy_session": 3542 }
, { "create_http_request": 94 }
, { "destroy_http_request": 94 }
, { "async_operations_size": 0 }
, { "sync_operations_size": 0 }
, { "disposable_operations_size": 0 }
, { "sockets_size": 0 }
, { "sessions_size": 0 }
, { "http_requests_size": 0 }
, { "log_size": 0 }
, { "async_queue_drops": 0 }
, { "disposable_update_drops": 0 }
]}
Example 2
To view statistics on the socket with the ID of 1:
https://ip_address:port_number/tracking/statistics?socket&id=1
Example 2 Data
{"id":1, "stats": [{"name": "Start Time", "value": 1764801803700, "units": "timestamp"},
{"name": "End Time", "value": 1764801803951, "units": "timestamp"},
{"name": "State", "value": "CLOSED"},
{"name": "Transmitted", "value": 5307, "units": "B"},
{"name": "Received", "value": 9460, "units": "B"},
{"name": "Send Window", "value": 60288, "units": "B"},
{"name": "Receive Window", "value": 262480, "units": "B"},
{"name": "Congestion Window", "value": 10579, "units": "B"},
{"name": "Congestion Events", "value": 0},
{"name": "Out of Order Packets", "value": 0},
{"name": "Roundtrip Time", "value": 1362, "units": "ms"},
{"name": "Roundtrip Variance", "value": 1362, "units": "ms"}
]}
Statistics verbs
| Name | Equivalent Admin Console Element | Description of the advanced URL | Parameters |
socket |
Tracked Resources table | Gather statistics about a particular socket |
id=id |
monitor |
— | Gather debug statistics about the tracking monitor | — |
http_request |
Tracked Resources table | Gather statistics about a particular HTTP request |
id=id |
The appliance uses the Download URLs to generate JSON files that contain session data (Configuration > Diagnostics > Diagnostic Reporting and click Download).
Format
/tracking/download?name
Where name is the name of one of the verbs in the following Download Verbs table.
Example
To download a JSON export for HTTP request data:
https://ip_address:port_number/tracking/download?http_request
Download Verbs
| Name | Equivalent Admin Console Element | Description of the advanced URL Report |
socket |
Tracked Resources table | Download the socket table |
socket_statistics |
Tracked Resources table | Download the socket statistics table |
session |
Tracked Resources table | Download the session table |
session_statistics |
Tracked Resources table | Download the session statistics table |
http_request |
Tracked Resources table | Download the HTTP request table |
http_request_statistics |
Tracked Resources table | Download the HTTP request statistics table |
all |
Download All button (under Tracked Resources section) | Download all tables combined into a single JSON |