> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview of Apinizer Gateway Metrics

> Apinizer Gateway collects various metrics about API traffic, external connections, cache operations, and JVM status. These metrics are provided in Prometheus format and are divided into six categories: API traffic metrics, external connection metrics, cache metrics, JVM metrics, system metrics, and process metrics. Each metric is collected in two formats: general and tagged, and uses Prometheus's Counter, Gauge, Timer, and DistributionSummary metric types.

<Info>
  ApinizerMetricsService collects various metrics about API traffic, external connections, cache operations, and JVM status. These metrics are provided in Prometheus format and can be integrated with monitoring systems.
</Info>

<CardGroup cols={2}>
  <Card title="API Traffic Metrics" icon="chart-line">
    API requests, success/error rates, response times, and sizes
  </Card>

  <Card title="External Connection Metrics" icon="globe">
    Requests made to external services, success/error rates, response times
  </Card>

  <Card title="Cache Metrics" icon="database">
    Cache operations, success/error rates, response times
  </Card>

  <Card title="JVM Metrics" icon="microchip">
    Memory usage, GC, thread status, processor usage
  </Card>
</CardGroup>

Each metric is collected in two formats:

* **General Metric**: Total values without labels (e.g., total count of all API requests)

* **Tagged Metric**: Metrics enriched with labels for detailed analysis (e.g., requests by API ID)

* **API Traffic Metrics**: API requests, success/error rates, response times, and sizes

* **External Connection Metrics**: Requests made to external services, success/error rates, response times

* **Cache Metrics**: Cache operations, success/error rates, response times

* **JVM Metrics**: Memory usage, GC, thread status, processor usage

Each metric is collected in two formats:

* **General Metric**: Total values without labels (e.g., total count of all API requests)
* **Tagged Metric**: Metrics enriched with labels for detailed analysis (e.g., requests by API ID)

## Prometheus Metric Types

Gateway metrics are collected using Prometheus's four basic metric types. These types are designed to best represent different data types and behaviors. Each metric type serves different purposes depending on how you collect and analyze the data.

<AccordionGroup>
  <Accordion title="Counter (Counter)">
    Counter is a value that only increases. It starts from zero when the application runs and only resets when the application is restarted. Counter type metrics are ideal for tracking continuously increasing values such as total request count, error count, or completed operation count.

    **Available Operations:**

    * `sum`: The total value itself
    * `rate`: Calculates the rate of increase over time (such as how much it increases per second)
    * `increase`: Calculates the total increase over a specific time range
  </Accordion>

  <Accordion title="Gauge (Indicator)">
    Gauge represents an instantaneous value. This value can increase, decrease, or remain constant. Gauge type metrics are used to monitor an instantaneous state or level such as current memory usage, instantaneous CPU usage, or number of active threads.

    **Available Operations:**

    * `sum`: Sum of Gauge values grouped by labels
    * `mean`: Average of Gauge values grouped by labels
    * `min/max`: Minimum or maximum of values grouped by labels
  </Accordion>

  <Accordion title="Timer (Timer)">
    Timer measures how long an operation takes (usually in milliseconds or seconds). Although not technically a special type in Prometheus, it is a metric created by libraries like Micrometer through a combination of DistributionSummary and Counter. These metrics provide information such as average duration, maximum duration, and percentiles.

    **Available Operations:**

    * `sum`: Gives the total duration
    * `count`: Gives how many times the operation was performed in total
    * `mean`: Calculates the average duration of the operation
    * `max`: Gives the longest observed duration
    * `histogram_quantile`: Calculates percentiles
  </Accordion>

  <Accordion title="DistributionSummary (Distribution Summary)">
    DistributionSummary is used to track the distribution of a value. It works similarly to Timer, but instead of measuring time, it measures arbitrary numerical values such as request size, file size. This metric also provides statistical information such as average, maximum, and percentiles.

    **Available Operations:**

    * `sum`: Gives the total value
    * `count`: Gives the number of observed values
    * `mean`: Calculates the average of values
    * `max`: Gives the largest observed value
    * `histogram_quantile`: Calculates percentiles
  </Accordion>
</AccordionGroup>

## API Traffic Metrics

<Info>
  These metrics are used to monitor and measure the performance of API requests passing through Apinizer. While total request, success, error, and cache hit rates are tracked numerically, request processing duration and data sizes are measured for performance analysis. Some metrics are provided with **api\_id** and **api\_name** tags for detailed API-based examination.
</Info>

| Metric Name                                              | Description                         | Type                | Labels             |
| -------------------------------------------------------- | ----------------------------------- | ------------------- | ------------------ |
| apinizer\_api\_traffic\_total\_count                     | Total API traffic requests          | Counter             | -                  |
| apinizer\_api\_traffic\_success\_count                   | Successful API requests             | Counter             | -                  |
| apinizer\_api\_traffic\_error\_count                     | Failed API requests                 | Counter             | -                  |
| apinizer\_api\_traffic\_blocked\_count                   | Blocked API requests                | Counter             | -                  |
| apinizer\_api\_traffic\_request\_pipeline\_time          | API request pipeline duration (ms)  | Timer               | -                  |
| apinizer\_api\_traffic\_routing\_time                    | API routing duration (ms)           | Timer               | -                  |
| apinizer\_api\_traffic\_response\_pipeline\_time         | API response pipeline duration (ms) | Timer               | -                  |
| apinizer\_api\_traffic\_total\_time                      | API total duration (ms)             | Timer               | -                  |
| apinizer\_api\_traffic\_request\_size                    | API request size (byte)             | DistributionSummary | -                  |
| apinizer\_api\_traffic\_response\_size                   | API response size (byte)            | DistributionSummary | -                  |
| apinizer\_api\_traffic\_cache\_hits\_count               | API cache hit count                 | Counter             | -                  |
| apinizer\_api\_traffic\_total\_count\_tagged             | Total API traffic requests          | Counter             | api\_id, api\_name |
| apinizer\_api\_traffic\_success\_count\_tagged           | Successful API requests             | Counter             | api\_id, api\_name |
| apinizer\_api\_traffic\_error\_count\_tagged             | Failed API requests                 | Counter             | api\_id, api\_name |
| apinizer\_api\_traffic\_blocked\_count\_tagged           | Blocked API requests                | Counter             | api\_id, api\_name |
| apinizer\_api\_traffic\_request\_pipeline\_time\_tagged  | API request pipeline duration (ms)  | Timer               | api\_id, api\_name |
| apinizer\_api\_traffic\_routing\_time\_tagged            | API routing duration (ms)           | Timer               | api\_id, api\_name |
| apinizer\_api\_traffic\_response\_pipeline\_time\_tagged | API response pipeline duration (ms) | Timer               | api\_id, api\_name |
| apinizer\_api\_traffic\_total\_time\_tagged              | API total duration (ms)             | Timer               | api\_id, api\_name |
| apinizer\_api\_traffic\_request\_size\_tagged            | API request size (byte)             | DistributionSummary | api\_id, api\_name |
| apinizer\_api\_traffic\_response\_size\_tagged           | API response size (byte)            | DistributionSummary | api\_id, api\_name |
| apinizer\_api\_traffic\_cache\_hits\_count\_tagged       | API cache hit count                 | Counter             | api\_id, api\_name |

## External Connection Metrics

<Info>
  These metrics are used to monitor external requests made through Apinizer. External service performance is analyzed by measuring total request, error count, and response time. Some metrics are provided with the **url** tag for detailed URL-based examination.
</Info>

| Metric Name                                        | Description                  | Type    | Labels |
| -------------------------------------------------- | ---------------------------- | ------- | ------ |
| apinizer\_external\_requests\_total\_count         | Total external request count | Counter | -      |
| apinizer\_external\_errors\_total\_count           | Total external error count   | Counter | -      |
| apinizer\_external\_response\_time                 | External response time (ms)  | Timer   | -      |
| apinizer\_external\_requests\_total\_count\_tagged | Total external request count | Counter | url    |
| apinizer\_external\_errors\_total\_count\_tagged   | Total external error count   | Counter | url    |
| apinizer\_external\_response\_time\_tagged         | External response time (ms)  | Timer   | url    |

## Cache Metrics

<Info>
  These metrics are used to monitor the worker (gateway) pod's interaction with cache. The worker pod's cache operations and performance are analyzed by measuring total request, error count, and response time.
</Info>

| Metric Name                             | Description                        | Type    | Labels |
| --------------------------------------- | ---------------------------------- | ------- | ------ |
| apinizer\_cache\_requests\_total\_count | Total cache request count          | Counter | -      |
| apinizer\_cache\_errors\_total\_count   | Total cache error count            | Counter | -      |
| apinizer\_cache\_response\_time         | Cache operation response time (ms) | Timer   | -      |

## JVM Metrics

<Info>
  These metrics are used to monitor JVM performance and resource usage in the worker (gateway) pod. They help analyze system efficiency by providing detailed information about memory, GC (Garbage Collection) activity, and thread status.
</Info>

| Metric Name                              | Description                            | Type    | Labels |
| ---------------------------------------- | -------------------------------------- | ------- | ------ |
| jvm\_buffer\_count\_buffers              | Number of buffers used by JVM          | Gauge   | -      |
| jvm\_buffer\_memory\_used\_bytes         | Total buffer memory used (byte)        | Gauge   | -      |
| jvm\_buffer\_total\_capacity\_bytes      | Buffer total capacity (byte)           | Gauge   | -      |
| jvm\_gc\_live\_data\_size\_bytes         | Data size surviving after GC (byte)    | Gauge   | -      |
| jvm\_gc\_max\_data\_size\_bytes          | Maximum data size for GC (byte)        | Gauge   | -      |
| jvm\_gc\_memory\_allocated\_bytes\_total | Memory allocated by GC (byte)          | Counter | -      |
| jvm\_gc\_memory\_promoted\_bytes\_total  | Memory promoted by GC (byte)           | Counter | -      |
| jvm\_gc\_pause\_seconds\_count           | Total number of GC pauses              | Counter | -      |
| jvm\_gc\_pause\_seconds\_max             | Longest GC pause (seconds)             | Gauge   | -      |
| jvm\_gc\_pause\_seconds\_sum             | Total GC pause duration (seconds)      | Gauge   | -      |
| jvm\_memory\_committed\_bytes            | Memory allocated by JVM (byte)         | Gauge   | -      |
| jvm\_memory\_max\_bytes                  | Maximum memory available to JVM (byte) | Gauge   | -      |
| jvm\_memory\_used\_bytes                 | Memory used by JVM (byte)              | Gauge   | -      |
| jvm\_threads\_daemon\_threads            | Number of running daemon threads       | Gauge   | -      |
| jvm\_threads\_live\_threads              | Number of actively running threads     | Gauge   | -      |
| jvm\_threads\_peak\_threads              | Highest thread count reached           | Gauge   | -      |
| jvm\_threads\_started\_threads\_total    | Total number of threads started        | Counter | -      |
| jvm\_threads\_states\_threads            | Number of different thread states      | Gauge   | state  |

## System Metrics

<Info>
  These metrics are used to monitor the worker (gateway) pod's CPU and system load. Provides information about CPU core count, usage rate, and load average.
</Info>

| Metric Name               | Description                               | Type  | Labels |
| ------------------------- | ----------------------------------------- | ----- | ------ |
| system\_cpu\_count        | Total CPU core count                      | Gauge | -      |
| system\_cpu\_usage        | System-wide CPU usage rate                | Gauge | -      |
| system\_load\_average\_1m | System load average for the last 1 minute | Gauge | -      |

## Process Metrics

<Info>
  These metrics monitor the resource usage of the JVM process running in the worker (gateway) pod. Provides information about CPU usage, open file count, and maximum file limit.
</Info>

| Metric Name                 | Description                                | Type  | Labels |
| --------------------------- | ------------------------------------------ | ----- | ------ |
| process\_cpu\_usage         | JVM's CPU usage rate                       | Gauge | -      |
| process\_files\_max\_files  | Maximum number of files that can be opened | Gauge | -      |
| process\_files\_open\_files | Number of open files                       | Gauge | -      |
