> ## 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.

# Example PromQL Queries for Apinizer Gateway

> Provides example PromQL queries that can be used to analyze Apinizer Gateway metrics. Includes ready query examples for API traffic analyses, external connection analyses, cache analyses, and JVM analyses. These queries can be used in Grafana dashboards or Prometheus Query UI.

<Info>
  Below are example PromQL queries you can use to analyze Apinizer Gateway metrics. These queries can be used in Grafana dashboards or Prometheus Query UI.
</Info>

## API Traffic Analyses

<CardGroup cols={2}>
  <Card title="Total Request Count" icon="chart-line">
    Calculates total API request count for a specific time range
  </Card>

  <Card title="Requests Per API" icon="list">
    Shows request count separately for each API
  </Card>

  <Card title="Success Rate" icon="check-circle">
    Calculates the ratio of successful requests to total requests
  </Card>

  <Card title="Error Analysis" icon="exclamation-triangle">
    Detects APIs with highest error rates
  </Card>
</CardGroup>

### 1. Total API Request Count (for 1 hour)

```promql theme={null}
sum(increase(apinizer_api_traffic_total_count_total[1h]))
```

### 2. Request Count Per API (for 5 minutes)

```promql theme={null}
sum by (api_name) (increase(apinizer_api_traffic_total_count_tagged_total[5m]))
```

### 3. API Success Rate (%) (for 10 minutes)

```promql theme={null}
(sum(increase(apinizer_api_traffic_success_count_total[10m])) / sum(increase(apinizer_api_traffic_total_count_total[10m]))) * 100
```

### 4. APIs with Highest Error Rate (for 5 minutes)

```promql theme={null}
topk(5, sum by (api_name) (increase(apinizer_api_traffic_error_count_tagged_total[15m])) / sum by (api_name) (increase(apinizer_api_traffic_total_count_tagged_total[15m])))
```

### 5. Average Response Time Per API (for 5 minutes)

```promql theme={null}
sum by (api_name) (rate(apinizer_api_traffic_total_time_tagged_seconds_sum[5m])) / sum by (api_name) (rate(apinizer_api_traffic_total_time_tagged_seconds_count[5m]))
```

## External Connection Analyses

<Info>
  These queries are used to analyze the performance of external service calls made through Apinizer Gateway.
</Info>

### 1. Error Rate Per Target URL

```promql theme={null}
sum by (url) (increase(apinizer_external_requests_total_count_tagged_total[5m])) / sum by (url) (increase(apinizer_external_requests_total_count_tagged_total[5m]))
```

### 2. Slowest Services (Average Response Time)

```promql theme={null}
topk(5, sum by (url) (rate(apinizer_external_response_time_seconds_sum[5m])) / sum by (url) (rate(apinizer_external_response_time_seconds_count[5m])))
```

## Cache Analyses

<Info>
  These queries are used to analyze cache performance and cache hit rates.
</Info>

### 1. Cache Hit Rate (%)

```promql theme={null}
(sum(increase(apinizer_api_traffic_cache_hits_count_total[5m])) / sum(increase(apinizer_api_traffic_total_count_total[5m]))) * 100
```

### 2. Cache Hit Rate Per API (%)

```promql theme={null}
sum by (api_name) (increase(apinizer_api_traffic_cache_hits_count_tagged_total[5m])) / sum by (api_name) (increase(apinizer_api_traffic_total_count_tagged_total[5m])) * 100
```

## JVM Analyses

<Info>
  These queries are used to monitor JVM performance and resource usage in the worker (gateway) pod.
</Info>

### 1. Memory Usage Percentage

```promql theme={null}
sum(jvm_memory_used_bytes) / sum(jvm_memory_max_bytes) * 100
```

### 2. Garbage Collection Duration

```promql theme={null}
sum(rate(jvm_gc_pause_seconds_sum[5m]))
```

### 3. Thread Count

```promql theme={null}
sum(jvm_threads_live_threads)
```
