Ana içeriğe geç

Gateway Traffic

Gateway Traffic — list view, filter bar, and table columns
Info

Since an API Proxy can be loaded into multiple Environments, metrics are queried per environment. The Administration menu adds a Project filter; the project-scoped screen covers only the active project.

List View

Open the screen via Administration > Analytic > Gateway Traffic or Analytic > Gateway Traffic in the project menu. The top bar includes environment, project (Administration only), API Proxy, result type, HTTP status code, and Correlation Id filters; the right side shows time range, refresh mode, and Excel export.

ColumnDescription
Status · TimeHTTP status code (color badge) and request timestamp
Method · RequestHTTP method and proxy/method name; sub-line shows API type (REST, SOAP, …) and request server
ClientClient IP address and identity summary (API Client, anonymous, or legacy username/key)
RoutingRouting target; blocked at gateway or direct badge
Latency [request · routing · response]Total duration (ms), phase breakdown, and bar chart
SizeRequest and response body sizes (↑ / ↓)
ActionsRow menu — detailed view, JSON, download, quick test

Features

All API Proxy Traffic

You can view traffic of all API Proxies in the project on a single screen

Advanced Filtering

You can reach the records you want with simple and advanced filtering options

Detailed Review

You can examine each request's message flow in detail by sections

Routing Tracking

You can track how requests are routed to which addresses

JSON Format

You can view and download log records in JSON format

Quick Test

You can quickly retest requests by transferring them to Test Console

Routing Address

This field holds the address information to which the relevant API Proxy is routed. If this field is empty, it indicates that the request did not go to the backend address.

Services using Apinizer as backend are shown with the apinizer:// prefix, written exactly in the format apinizer://<COMPONENT_NAME>/<METHOD_NAME>.

Info

This display is also valid for proxies whose routing is disabled to prevent going to backend.

Routing Address Values

Routing AddressCondition
apinizer://mirror.routing/<METHOD_NAME>API Proxy type Swagger 2.x, OpenAPI/Swagger 3.0.x, WSDL, Reverse Proxy or No-Spec API and Routing option disabled and Mirror option enabled
apinizer://specresponse.routing/<METHOD_NAME>API Proxy type Swagger 2.x, OpenAPI/Swagger 3.0.x, WSDL, Reverse Proxy or No-Spec API and Routing option disabled and Mirror option disabled
apinizer://db2api.apicreator/<METHOD_NAME>API Proxy type DB2API
apinizer://script2api.apicreator/<METHOD_NAME>API Proxy type Script2API
apinizer://mockapi.apicreator/<METHOD_NAME>API Proxy type Mock API
apinizer://connector/<METHOD_NAME>API Proxy type Connector
apinizer://maintenanceAPI Proxy in maintenance mode
apinizer://cache/<METHOD_NAME>Any API Proxy type and Caching enabled
http://<BACKEND_ADDRESS>/<METHOD_NAME>
https://<BACKEND_ADDRESS>/<METHOD_NAME>
API Proxy type Swagger 2.x, OpenAPI/Swagger 3.0.x, WSDL, Reverse Proxy, No-Spec API or KPS and Routing option enabled
apinizer://specAPI Proxy type Swagger 2.x, OpenAPI/Swagger 3.0.x, WSDL, Reverse Proxy, No-Spec API and spec address access
(Empty)Request cannot go to backend address for various reasons
Warning

Since WebSocket and gRPC requests are stored as data coming to Apinizer and data going out from Apinizer, there are only 2 regions in these types of API Proxies.

API Type

Since this screen lists the traffic of every API Proxy in the project, records of different proxy types appear side by side. The API Type column shows which type each record belongs to, and the same values can be selected as a filter under Basic Filtering.

Values: SOAP, REST, GRPC, WEBSOCKET, MCP, A2A

The column is sortable, so records of the same type can be grouped together.

Info

The API Type column and filter are only shown on this screen. In the Traffic tab of a single API Proxy the type is already fixed, and on the AI Gateway traffic screens the records are limited to the AI family — in both cases repeating the same value on every row would only be noise.

Info

AI is not among the type options. AI Gateway traffic is deliberately kept out of this screen and is listed only on the AI Gateway's own traffic and analytics screens; therefore selecting AI here would always return zero records.

Warning

For WebSocket and gRPC records the Request Pipeline, Backend and Response Pipeline duration columns are shown as . These protocols are logged as data arriving at and leaving Apinizer, so a three-phase pipeline duration is not measured for them.

Filtering

With the "More options" option, 2 different types of filtering can be performed:

Records can be filtered with predetermined criteria such as a specific time range, endpoint, or HTTP method.

Gateway Traffic — Basic Filtering tab with Canary and Mirror Traffic filters

Filtering Criteria:

  • Date Range: Start and end date selection
  • API Proxy: Filtering for specific API Proxies
  • API Type: Filtering by proxy type — SOAP, REST, gRPC, WebSocket, MCP, A2A (see API Type)
  • Endpoint/Method: Filtering for specific endpoint or method
  • HTTP Method: Besides HTTP methods such as GET, POST, PUT and DELETE, the list also contains WebSocket message types (OPEN, CLOSE, TEXT, BINARY) and gRPC call types (UNARY, CLIENT_STREAMING, SERVER_STREAMING, BIDI_STREAMING, UNKNOWN). gRPC requests whose call type cannot be determined when the record is written are stored as GRPC and can be filtered from the same list.
  • Status Code: HTTP status codes such as 200, 404, 500
  • Result Type: Successful, Failed, Blocked
  • Canary Request: Filter by Canary Only or Non-Canary Only requests
  • Canary Routing Status: Filter by one of Not Configured, Routed to Canary, Not Selected (Random), Circuit Open Fallback, Cooldown Period Fallback, Error Threshold Failback
  • Mirror Traffic: Filter by Mirror Only or Non-Mirror Only requests

The Clear button resets these three filters along with the other Basic filter fields; it does not touch the Advanced Filtering criteria.

Query Types

2 types of queries are applied to filtered fields:

Term Query

Logs where the searched value (keyword) exactly matches the logged data are returned.

Fields where this query is applied:

  • API Proxy
  • Operation Result Type (Result Type)
  • HTTP Status Code (HTTP Status Code)
  • HTTP Method (HTTP Method)
  • API Client (legacy records: Username or Key)
  • Correlation ID
Match Query

It is a query that searches across all text. The searched value is analyzed before searching.

Analysis Process:

  1. Text is broken into parts according to grammar rules (numbers, punctuation marks, etc.)
  2. Parts pass through the 'Lower Case Token Filter' stage and are converted to lowercase
  3. Example: 'The 2 QUICK Brown-Foxes jumped over the lazy dog's bone.'[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]

Matching Logic:

  • There is an OR operator between parts
  • A score value is obtained based on criteria such as how many parts are in the field in the log document and how frequently they are used
  • Relevant documents are returned according to this score value

Fields where this query is applied:

  • Method/Endpoint Name (Method/Endpoint Name)
  • Request Address (Request Address)
  • Sent Address (Routing Address)
  • Request Body from Client (From Client Body)
  • Request Body to Backend API (To Backend API Body)
  • Response Body from Backend API (From Backend API Body)
  • Response Body to Client (To Client Body)
Wildcard Query

Documents containing terms matching a wildcard character pattern are returned.

Usage:

  • The * character must be added before or after the word to expand your search results
  • Example: user* → all words starting with user
  • Example: *admin → all words ending with admin

Fields where this query is applied:

  • Request Address (Request Address)
  • Sent Address (Routing Address)
Body Field Search

The following rules apply when searching in the From Client Body, To Backend API Body, From Backend API Body, and To Client Body fields:

The four fields behave identically; each one searches only its own region of the message (1. request from client, 2. request to backend API, 3. response from backend API, 4. response to client).

Single-word search:

  • Expressions without spaces, such as birth, work as a case-insensitive substring search — all records containing that word are returned.
  • Values containing punctuation, such as ABC-123, user@example.com or "orderId":5, are also matched as a phrase of their parts, so they are found even though the log text is split into words for indexing.

Multi-word phrase search:

  • Expressions containing spaces, such as date of birth, search for records where the words appear adjacent to each other — phrase search behavior.
  • Wildcards can also be combined: *date of birth*

Explicit wildcard patterns:

  • When the expression contains * or ?, it is used as-is as a wildcard pattern (case-insensitive): ord*123.
Tip

For the most accurate results, use the exact wording of the text you are looking for. Casing does not matter.

Elasticsearch version

Body searches ignore casing on every supported Elasticsearch version. Searches on API Client / Username or Key, header values and parameter values ignore casing on Elasticsearch 7.10 and later; on Elasticsearch 7.0–7.9 they match the lowercase form of the stored value only, because those versions do not support the case-insensitive option and Apinizer automatically retries the search without it.

Detailed View

When the Detailed View button on the right side of the log record is pressed, the message's log information comes grouped by sections in the request and response line.

Note

If Elasticsearch does not respond in time, the window no longer opens empty: it shows "Could not load the log detail because Elasticsearch did not respond in time. Please try again in a moment." If Elasticsearch returns an error, it shows "Could not load the log detail because Elasticsearch returned an error (HTTP ...). Please check the Elasticsearch server and try again." with the actual status code. If the record was genuinely deleted or never written, behavior is unchanged: the window still opens with empty content.

Detailed View Dialog

Message Regions

The log record is grouped according to the following regions:

Overview

Summary information of the request, status code, total duration, and general metrics

Request from Client to API Proxy
  • Request Headers
  • Request Parameters
  • Request Body
  • Client IP and metadata
Request from API Proxy to Backend
  • Backend URL and routing information
  • Sent Headers
  • Sent Body
  • Routing details
Response from Backend to API Proxy
  • Response Status Code
  • Response Headers
  • Response Body
  • Backend response time
Response from API Proxy to Client
  • Headers returned to client
  • Body returned to client
  • Total processing time
Info

By default, the Overview section is open. When the name of the section to be examined is clicked, log records related to that area are displayed.

Type-Specific Details

For records whose API Type is MCP or A2A, the Overview section also contains the protocol fields recorded by the Gateway. These sections are only shown for the relevant type; for other types they do not appear at all.

FieldDescription
Tool NameThe name of the MCP tool the request targets
JSON-RPC IDThe id value of the JSON-RPC envelope — used to match the request with its response
Info

If the request does not carry these fields (for example a protocol-level initialize call rather than a tool invocation), the section states that no type-specific data was recorded instead of showing empty fields.

Routing Diagnostics

If a request to the backend has routing diagnostic signals, a Routing Diagnostics section is shown in the Detailed View window.

Info

This section is only shown for requests that go to the backend; requests served from cache or that never reach the backend (mock, maintenance mode, etc.) do not show this section.

Routing Diagnostics section in the Detailed View window
FieldDescription
Failure ReasonIf the request failed, the classified failure reason (Pool Timeout, Connect Timeout, DNS Failure, TLS Handshake Failure, Read Timeout, Backend/Client Closed, No Healthy Upstream, Circuit Open, Retries Exhausted, Upstream HTTP Error, Unknown)
ConfidenceThe reliability level of the classification (High/Medium/Low)
Probable CauseAn automatically generated explanation based on the failure reason
ExceptionIf present, the exception class and detail that caused the failure
Recommended ActionA suggestion generated from the available signals to help resolve the issue
Phase TimingThe duration (ms) of each of: selection, DNS, TCP connect, TLS handshake, time to first byte (TTFB), body read, and pool wait
Upstream Status (raw)The raw HTTP status code returned by the backend (may differ from the code returned to the client, e.g. if a policy changed it)
Upstream IP:PortThe backend address the request was actually sent to
Connection ReusedWhether the connection was reused from the pool
Response Reached (TTFB)Whether at least one byte of the response was received from the backend
Gateway WorkerThe Worker pod/host that processed the request
Client Write (ms)Time spent writing the response to the client
PoolThe connection pool's instantaneous state: leased, pending, available, and maximum connection counts
Configured TimeoutsThe connect, read, and pool-lease (connection-request) timeout values (ms) configured for the API Proxy
Tip

For an aggregate routing diagnostics summary for this API Proxy (failure reason distribution, phase latency p50/p95/p99, etc.), see the Analytics tab.

JSON View

When the JSON View button on the right side of the record is pressed, the JSON version of the log record appears on the screen.

JSON View Dialog
Info

The key values in this area are written in a readable format to facilitate reading, not as they are in the log file.

For example:

  • The "apiProxyId" value is stored as "api" in the log record
  • When the log record is downloaded, the actual stored log record will be displayed

For the actual log file format, you can examine the "Template Data Structure Table" on the API Traffic Log Record Data Structure page.

Warning

If the data size of the log record is greater than 500KB, the Show Details and View in JSON Format options become disabled. In this case, the log record must be downloaded for examination.

Log Record Download

When the Download button on the right side of the record is pressed, the JSON version of the record is downloaded in .zip format.

Download Options:

  • Single Record: Downloads the selected record
  • All Results: Downloads all filtered records
Tip

Downloaded log files can be used for detailed analysis or processing with external tools.

Excel Export

With the Excel button at the top right of the screen, the result of the current query is exported as a spreadsheet. The export uses the same filters as the list, not only the records on the visible page.

Exported columns, in order: HTTP Status Code, Created, HTTP Method, HTTP Request Server Name, HTTP Request Server Port, API Proxy, API Proxy Method, Request Address, API Client, Routing Address, API Proxy Request Pipeline Time (ms), Backend Routing Time (ms), API Proxy Response Pipeline Time (ms), Total Time (ms), Request Size (byte), Response Size (byte), API Type. (Column headers in the file are in English; older exports may show the identity column as Username or Key.)

Info

API Type is the last column. It was added after the other columns intentionally: the position of the existing columns does not change, so exports processed by an external tool are not affected.

Quick Test

When the Quick Test button on the right side of the record is pressed, the Test Console screen opens with the original message content that came to the record placed in the Test Console.

This feature facilitates retesting the relevant record.

Warning

The Quick Test button must be enabled in general settings to appear.

Note

While the record's original message content is reloaded from Elasticsearch, if Elasticsearch does not respond in time or returns an error, the Test Console still opens but with an explanatory error message — content is never silently blank. This is the same Elasticsearch-timeout behavior as in Detailed View.

The body may be truncated by log limits

The request body that Quick Test fills in comes from the traffic record, not from the request itself. The body may have been shortened while the record was written:

  • If a body size limit is enabled for that region in the API Proxy's traffic log settings, the body is cut at that number of characters.
  • If the installation-wide absolute body ceiling is exceeded, the body is cut as well.
  • For AI-type proxies only the last N messages of the conversation are logged (the message limit in general settings); older messages are removed from the record.

When the body looks incomplete, a warning appears at the top of the Quick Test window and you are asked to confirm before the request is sent — what would be sent may not be identical to the original call, so the result may differ. The same warning also appears when the client itself sent an incomplete body (for example a malformed request the API rejected), because the record alone cannot tell the two apart. If you want later requests to be recorded in full, review the size limit in the relevant traffic log setting.