Metrics, logs and tracing
In the following sections, you will find detailed information about the available metrics, access log, application log, and tracing for Airlock Microgateway. For a convenient way to review metrics and logs, we recommend using our Grafana dashboards. You may also be interested in how logs can suport you during the troubleshooting of your Airlock Microgateway configuration.
Metrics
This article lists exposed metrics, i.e., for monitoring licensed throughput and common indicator values. Prometheus supports different metric types such as counter, gauge, histogram, and summary.
Engine metrics
The following labels are set on all metrics when a PodMonitor and ServiceMonitor is configured as described in Grafana dashboards for metrics and log visualization.
managed_byholding the name of the Operator managing the Airlock Microgateway Engine in question.gatewayholding the name of the gateway resource.
Metric name | Metric type | Description |
|---|---|---|
Standard Envoy metrics – see Envoy documentation. | – | Note that metrics are named statistics in the Envoy online documentation:
|
| gauge | Metric shows the static value |
| counter | Number of authenticated requests. The metric has the following labels:
|
| counter | Number of requests ( The metric has the following labels:
|
| counter | Number of ( The metric has the following labels:
|
| counter | Number of total requests. |
| counter | Number of backchannel requests sent to OpenID Connect Providers in the context of authentication. The metric has the following labels:
|
| histogram | Time in milliseconds between the first received downstream byte and the last sent upstream byte of a request. The metric has the following labels:
|
| histogram | Time in milliseconds between the first received upstream byte and the last sent downstream byte of a response. The metric has the following labels:
|
| histogram | Number of performed token exchanges. The metric has the following labels:
|
| histogram | Time in milliseconds between the last request byte sent upstream to the first response byte received from upstream. The metric has the following labels:
|
Operator metrics
Metric name | Metric type | Description |
|---|---|---|
| gauge | Metric shows the static value |
| gauge | Metric shows the static value |
| gauge | Whether the Airlock Microgateway Operator has a valid license |
| gauge | The licensed request count per month. When using the community edition license, no monthly count is available, but instead the value |
| gauge | Whether the active license (if any) is a premium license |
| gauge | (Unix) timestamp when the active license expires. |
| gauge | Whether a condition of the resources Gateway is true The metric has the following labels:
|
| gauge | Whether a status of the resources Gateway is true The metric has the following labels:
|
Access log
All requests handled by Airlock Microgateway Engine are logged in the access log. Each filter (deny rules, header rewrites, limits, etc.) may provide additional information. Some filters have settings like threatHandlingMode or operationalMode, directly influencing how much information is logged. For further information, consider the API reference documentation.
The access log follows the Elastic Common Schema (ECS). The information in this article can be used to look up the meaning of log fields and configure a CR Telemetry based on the listed log fields and command operators.
Log field types:
- Some log fields show logging output using standard Envoy command operators. See online Envoy command operators documentation for details.
- Other log fields use Microgateway command operators to show logging output. The corresponding Microgateway command operators are listed in the table.
Log field reference table
Log field | Description | Microgateway command operators |
|---|---|---|
| Timestamp of the logged request. | |
| Access control-related logs with authorization and authentication information, depending on your access control configuration.
|
|
| Contains block type and block subtype information, including further details, for blocked requests. |
|
| Shows a list of header rewrite actions applied on request or response headers. Requires Each item in the list contains the following fields:
|
|
| Contains block types and block subtype information, including further details, for threats logged in |
|
| Contains the values of the | |
| Contains the redirect URL extracted from the | |
| ID of the session the request belongs to. |
|
| Shows the connection ID respectively stream ID. These IDs allow correlating access and application log entries for in-depth analysis. |
|
| ||
| Summary of the Airlock Microgateway action. Can be |
|
| Shows a response code with detailed information.
|
|
| The Envoy access log response flags provides additional information about response or connection. |
|
| Direct remote destination IP address of the upstream. | |
| Direct remote destination port of the upstream. | |
| Shows the HTTP version ( |
|
| Direct destination IP address of the Pod containing the Microgateway Engine. | |
| Direct destination port of the Pod containing the Microgateway Engine. | |
| Our logging is built on a version of the Elastic Common Schema (ECS) reference. | |
| ECS categorization field. | |
| Name of the dataset. | |
| Duration of the request in nanoseconds as recorded by the Microgateway Engine. |
|
| Time the response was finished by the Microgateway Engine. |
|
| ECS categorization field. | |
| Module that recorded the event, i.e. | |
| ECS categorization field. | |
| Time the Microgateway Engine received the request. | |
| ECS categorization field. Indicates whether a request has been forwarded to the upstream. Available event types:
|
|
| Total request size in bytes (body and headers). |
|
| MIME type of the request body. |
|
| Request body size in bytes. | |
| UID of the HTTP request. | |
| HTTP method of the request. | |
| Value of the | |
| Response body size in bytes. | |
| Total response size in bytes (body and headers). |
|
| MIME type of the response body. |
|
| HTTP response code. | |
| Shows the HTTP version ( |
|
|
| |
|
| |
| Shows the identified remote IP address. | |
|
| |
| The type of observer that created the log entry, i.e. | |
|
| |
| Release version of the Airlock Microgateway, i.e. |
|
| Direct remote source IP address of the downstream, as detected by the Microgateway Engine. | |
| Direct remote source port of the downstream, as detected by the Microgateway Engine. | |
| Domain/IP without port number as extracted from the host header. |
|
| Path of the request without query string. |
|
| Query string of the request. Note that the | |
| Unparsed user agent string. |
Microgateway response code details
The following response code details can appear in the airlock.summary.details log field:
Response code details | Description |
|---|---|
| Upstream response was replaced with a custom response. |
| There was a problem during ICAP processing. |
| Response was generated by an ICAP service. |
| Redirect response when redirected to the OIDC authorization endpoint/login page. |
| Redirect to the original URL from the callback path because the configuration changed. |
| Redirect to the original URL after successful OIDC authentication. |
| Redirect to the original URL from the callback path because the session is already authenticated. |
| Redirect response after a successful OIDC logout. |
| Redirect response when redirected to the OIDC authorization endpoint/login page for step up authorization. |
| Redirect to the original URL if the OIDC state parameter was invalid (e.g., state has expired or session has changed). |
| Cross-site request forgery (CSRF) detected. The request was blocked. |
| The request contains multiple 'Host' or ':authority' headers. The request was blocked. |
| A deny rule detected malicious data. The request was blocked. |
| Denial of Service mitigation was triggered. The request was blocked. |
| The request contains data with invalid encoding (UTF-8 required). The request was blocked. |
| GraphQL schema violation detected. The request was blocked. |
| A limit was exceeded. The request was blocked. |
| OpenAPI request validation failed. The request was blocked. |
| The request contains data that could not be parsed, for example, due to a syntax error in JSON data. The request was blocked. |
| There was a problem processing the request. Consult the log files for more information. |
| GraphQL configuration is invalid. The request was rejected. |
| JWT configuration is invalid. The request was rejected. |
| OIDC configuration is invalid. The request was rejected. |
| OpenAPI configuration is invalid. The request was rejected. |
| The applied access control policy has been violated. The request was blocked. |
| The JWT extraction or validation has failed. The request was blocked. |
| OIDC authentication failed or authorization requirements were not fulfilled. The request was blocked. |
| OAuth Token Exchange has failed. The request was blocked. |
| OpenAPI response validation failed. The response was blocked. |
| There was a problem concerning the session handling. The request was blocked. |
Application log
The Airlock Microgateway Operator, Engine and Session Agent provide an application log which are intended for complex or in-depth analysis. They are usually not required in day-to-day operations, where the access logs are typically sufficient.
If needed, the log level for each component can be adjusted. Note that any change applies to the entire component, not just part of its configuration:
- Operator: Configure via the Microgateway Helm Chart in the
values.yamlusingoperator.config.logLevel. - Engine: Configure via CR GatewayParameters using
spec.logging.level. - Session Agent: Configure via CR SessionHandling using
spec.agent.logging.level.
Tracing
Tracing can be configured to export sampled tracing data to an exporter. See Tracing for more information.