Monitor performance

Monitor the performance of your site and services through reports. Each report returns data based on the time interval you set.

📘

Support for specific intervals, filters, and metrics may vary by report type.

List all report types

To get a list of available report types, use the List-ReportTypes command.

List-ReportTypes
name                : urlhits-by-time
description         : Returns URL traffic data over time.
businessObjectName  : cpcode
version             : 1
status              : PUBLISHED
deprecated          : False
internalOnly        : False
timeBased           : True
supportsPagination  : False
outputType          : FLAT
requiredProducts    : {Basic Traffic Reports}
requiredRoles       : {Reports - All privileges , Reports - View only, OTA App User}
available           : True
metrics             : {@{name=allEdgeHitsPerSecond; description=The rate of hits from Akamai to the end user.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND; summaryStatistic=False}, @{name=allEdgeHitsPerSecondMax; description=The highest rate of hits from Akamai to the end user.; label=Edge Hits/Sec Maximum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsPerSecondMin; description=The lowest rate of hits from Akamai to the end user.; label=EdgeHits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsSlope; description=Represents the overall change in the number of hits from Akamai to the end user, a positive number if increasing or a negative number if decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy             : {date_id}
filters             : {@{name=url_end_with; type=string; description=URL ends with the specified string.; required=False}, @{name=url_not_contain; type=string; description=URL 
does not contain the specified string.; required=False}, @{name=url_match; type=string; description=URL matches the specified string.; required=False}, @{name=url_not_start_with; type=string; description=URL does not start with the specified string.; required=False}…}
intervals           : {MONTH, WEEK, DAY}
dataRetentionDays   : 92
links               : {@{rel=self; href=/reporting-api/v1/reports/urlhits-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlhits-by-time/versions}, @{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlhits-by-time/versions/1/report-data}}

name                : urlresponses-by-time
description         : Returns URL data by response class over time.
businessObjectName  : cpcode
version             : 1
status              : PUBLISHED
deprecated          : False
internalOnly        : False
timeBased           : True
supportsPagination  : False
outputType          : FLAT
requiredProducts    : {Basic Traffic Reports}
requiredRoles       : {Reports - All privileges, Reports - View only, OTA App User}
available           : True
metrics             : {@{name=0XXEdgeHitsMax; description=The highest number of hits from Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec Maximum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=0XXEdgeHitsMin; description=The lowest number of hits from Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=0XXEdgeHitsPerSecond; description=The rate of hits from 
Akamai to the end user returning 0XX responses.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND; summaryStatistic=False}, @{name=0XXEdgeHitsSlope; description=Represents the overall change in the number of of URLs returning 0XX responses, a positive number if increasing or a negative number if 
decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy             : {date_id}
filters             : {@{name=url_end_with; type=string; description=URL ends with the specified string. ; required=False}, @{name=url_not_contain; type=string; description=URL does not contain the specified string.; required=False}, @{name=url_match; type=string; description=URL matches the specified string.; required=False}, @{name=url_not_start_with; type=string; description=URL does not start with the specified string.; required=False}…}
intervals           : {MONTH, WEEK, DAY}
dataRetentionDays   : 92
links               : {@{rel=self; href=/reporting-api/v1/reports/urlresponses-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlresponses-by-time/versions}, @{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlresponses-by-time/versions/1/report-data}}
...

Sort report list

The number of available reports is large and so is the total information returned for each report. Reduce the list using a sort term, for example, name or version.

To make the list of report types manageable, sort the list by a filter.

# Gets a running list of all report names and versions
List-ReportTypes | Sort-Object -Property name | Select name, version

# Gets a list of reports by reports with today in the name
List-ReportTypes | where name -Like *today* | Sort-Object -Property name | Select name, version
# All report names and versions (truncated)
name version
---- -------
actionstaken-by-cpcode 1
actionstaken-by-time 1
aic-by-time 1
aic-by-time 2
aic-by-time-test 1
apirequests-by-agentfamily 1
apirequests-by-endpoint 1
apirequests-by-httpmethod 1
apirequests-by-owner 1
apirequests-internal-by-httpmethod 1
apiusage-by-time 1
...

# All reports with today in the name
todaytraffic-by-response 1
todaytraffic-by-time 1
todaytraffic-by-time-rl 1
todaytraffic-by-timeandresponseclass 1
todaytraffic-bytes-by-cpcode 1
todaytraffic-hits-by-cpcode 1

Get a specific type

Some reports have multiple versions to choose from. For example, the load-balancing-dns-traffic-property-load-feedback report has four versions, all of which you can use. The versions denote changes to the report structure. If you're not sure which version to use, choose the latest version.

Get-ReportType -ReportType urlhits-by-time -Version 1
name                : urlhits-by-time
description         : Returns URL traffic data over time.
businessObjectName  : cpcode
version             : 1
status              : PUBLISHED
deprecated          : False
internalOnly        : False
timeBased           : True
supportsPagination  : False
outputType          : FLAT
requiredProducts    : {Basic Traffic Reports}
requiredRoles       : {Reports - All privileges , Reports - View only, OTA App User}
available           : True
metrics             : {@{name=allEdgeHitsPerSecond; description=The rate of hits from Akamai to the end user.; label=Edge Hits/Sec; unit=COUNT_PER_SECOND; 
                      summaryStatistic=False}, @{name=allEdgeHitsPerSecondMax; description=The highest rate of hits from Akamai to the end user.; label=Edge Hits/Sec Maximum; 
                      unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsPerSecondMin; description=The lowest rate of hits from Akamai to the end user.; label=Edge 
                      Hits/Sec Minimum; unit=COUNT_PER_SECOND; summaryStatistic=True}, @{name=allEdgeHitsSlope; description=Represents the overall change in the number of hits 
                      from Akamai to the end user, a positive number if increasing or a negative number if decreasing.; label=Edge Hits Slope; unit=COUNT; summaryStatistic=True}…}
groupOutlyingValues : @{enabled=False}
groupBy             : {date_id}
filters             : {@{name=url_not_end_with; type=string; description=URL does not end with the specified string.; required=False}, @{name=delivery_type; type=enum; 
                      description=Distinguishes secure from non-secure traffic. Optional. No selection returns both secure and non-secure traffic.  ; values=System.Object[]; 
                      required=False}, @{name=url_contain; type=string; description=URL contains the specified string. ; required=False}, @{name=url_end_with; type=string; 
                      description=URL ends with the specified string. ; required=False}…}
intervals           : {MONTH, WEEK, DAY}
dataRetentionDays   : 92
links               : {@{rel=self; href=/reporting-api/v1/reports/urlhits-by-time/versions/1}, @{rel=versions; href=/reporting-api/v1/reports/urlhits-by-time/versions}, 
                      @{rel=all-reports; href=/reporting-api/v1/reports}, @{rel=execute-report; href=/reporting-api/v1/reports/urlhits-by-time/versions/1/report-data}}

Use filters and metrics

You can also reduce the output of most reports using filters and metrics. Filters allow you reduce the data by various conditions, such as IP version or response code. Metrics reduce the result to the metric(s) returned, such as maxEdgeHits. You can see the filters and metrics in the response for a given report type. For example:

# Using filters
$Report = Get-ReportType -ReportType hits-by-tophostnameandtime -Version 1
$Report.filters

# Using metrics
$Report = Get-ReportType -ReportType hits-by-tophostnameandtime -Version 1
$Report.metrics
# Filter
name type description  required
---- ---- -----------  --------
hostname_not_end_with string Hostname does not end with the specified string. False
hostname_contain string Hostname contains the specified string.  False  
http_version enum HTTP version.  False
hostname_not_start_with string Hostname does not start with the specified string.  False
hostname_end_with string Hostname ends with the specified string.  False
response_status enum An indicator of whether the response resulted in success or error. False
hostname_not_match regexp Hostname does not match the specified string.  False
hostname_match regexp Hostname is an exact match for the specified string.  False
hostname_not_contain string Hostname does not contain the specified string.  False
hostname_exact_match string Hostname is an exact match for the specified string.  False
response_code string An HTTP response status code, for example, 201.  False
delivery_type enum Distinguishes secure from non-secure traffic.  False
response_class enum A class of HTTP response status codes, from 0xx through 6xx.  False
traffic enum HTTP traffic to be included in the report data.  False
hostname_start_with string Hostname starts with the specified string.  False
ip_version enum IP for which the report is shown.  False

# Metrics
name : maxEdgeHits
description : Maximum Edge Hits.
label : Maximum Edge Hits
unit : COUNT
summaryStatistic : False

Get report data

There are two ways to get your report data.

  • Get a cacheable report. Get-CacheableReport uses a cacheable result and returns data for subsequent requests quicker. This method does have a query string max. If your query is long, use the generate a report instead.
  • Generate a report. This method does not cache results. Generate-Report and is better for large data requests and non-repeating requests.

Both commands use the same parameters.

ParameterDescription
-ReportTypeThe name of the report.
-VersionThe version of the report.
-StartThe start date of the report request range in IS0-8601 format, YYYY-MM-DDTHH-MM-SSZ.
-EndThe end date of the report request range in IS0-8601 format, YYYY-MM-DDTHH-MM-SSZ.
-IntervalThe frequency with which to get the report. Values are MONTH, WEEK, DAY, HOUR, FIVE_MINUTES.

Note: Not all reports supports all values. Check the output of List-ReportTypes or Get-ReportType for a supported list of intervals.
-ObjectIdsA comma separated list of the objects you're looking for. Most reports use a value for CP codes or hostnames.

For all object IDs for a given report, use a value of all. For the cacheable reports, you can also use the AllObjectIDs switch.
# Get a cacheable report
$Report = Get-CacheableReport -ReportType todaytraffic-by-time -Version 1 -Start 2022-11-27T00:00:00Z -End 2022- 11-28T00:00:00Z -Interval HOUR -ObjectIds 12345
# Generate a report
$Report = Generate-Report -ReportType todaytraffic-by-time -Version 1 -Start 2022-11-27T00:00:00Z -End 2022-11-28T00:00:00Z -Interval HOUR -ObjectIds 12345

📘

You can also supply a reports given Metrics or Filters in your command.

Parsing results

Assign your report results to a variable and parse out the information you need to analyze your data.

  1. Printing the results of a report saved to $Report may not display all of the information contained within the variable. To see more information, pipe your results to Format-List or fl.

    $Report | fl
    metadata : @{name=todaytraffic-by-time; version=1; outputType=FLAT; groupBy=System.Object[];  interval=HOUR; start=27/11/2022 00:00:00; end=28/11/2022
    00:00:00; availableDataEnds=; suggestedRetryTime=; rowCount=24; filters=System.Object[];  columns=System.Object[]; objectType=cpcode;
    objectIds=System.Object[]}
    data : {@{startdatetime=27/11/2022 00:00:00; bytesOffload=N/A; edgeBitsPerSecond=N/A;  edgeHitsPerSecond=N/A; hitsOffload=N/A; midgressBitsPerSecond=N/A;
    midgressHitsPerSecond=N/A; originBitsPerSecond=N/A; originHitsPerSecond=N/A}, @ {startdatetime=27/11/2022 01:00:00; bytesOffload=N/A;
    edgeBitsPerSecond=N/A; edgeHitsPerSecond=N/A; hitsOffload=N/A; midgressBitsPerSecond=N/A;  midgressHitsPerSecond=N/A; originBitsPerSecond=N/A;
    originHitsPerSecond=N/A}, @{startdatetime=27/11/2022 02:00:00; bytesOffload=N/A;  edgeBitsPerSecond=N/A; edgeHitsPerSecond=N/A; hitsOffload=N/A;
    midgressBitsPerSecond=N/A; midgressHitsPerSecond=N/A; originBitsPerSecond=N/A;  originHitsPerSecond=N/A}, @{startdatetime=27/11/2022 03:00:00;
    bytesOffload=N/A; edgeBitsPerSecond=N/A; edgeHitsPerSecond=N/A; hitsOffload=N/A;  midgressBitsPerSecond=N/A; midgressHitsPerSecond=N/A;
    originBitsPerSecond=N/A; originHitsPerSecond=N/A}…}
    summaryStatistics : @{bytesOffloadAvg=; bytesOffloadMax=; bytesOffloadMin=; bytesOffloadSlope=;  edgeBitsPerSecondMax=; edgeBitsPerSecondMin=; edgeBytesSlope=;
    edgeBytesTotal=; edgeHitsPerSecondMax=; edgeHitsPerSecondMin=; edgeHitsSlope=;  edgeHitsTotal=; hitsOffloadAvg=; hitsOffloadMax=; hitsOffloadMin=;
    hitsOffloadSlope=; midgressBitsPerSecondMax=; midgressBitsPerSecondMin=;  midgressBytesSlope=; midgressBytesTotal=; midgressHitsPerSecondMax=;
    midgressHitsPerSecondMin=; midgressHitsSlope=; midgressHitsTotal=; originBitsPerSecondMax=;  originBitsPerSecondMin=; originBytesSlope=;
    originBytesTotal=; originHitsPerSecondMax=; originHitsPerSecondMin=; originHitsSlope=;  originHitsTotal=; hitsOffloadTotal=; bytesOffloadTotal=}
    
  2. Export the results of your request to wherever you normally keep report data.

    $Report.data | Export-CSV results.csv