# Performance Monitoring

## Programmatic Monitoring

#### Observability Tooling

VGS system performance can be programmatically monitored by customer SRE teams using a Prometheus API. More details on how to access VGS metrics can be found [here](/enterprise-platform/core-platform-services/observability.md).

#### Identifying Third-Party Status Codes

During an HTTP request, VGS will always set the HTTP response status code to the value returned by a third-party API. This means that if the third-party API responds with a 500 error, VGS will set the response code returned to the client to 500. In order to be sure that VGS is not the cause of the error, VGS appends a `vgs-upstream-status-code` to the response that is forwarded to the client. Using a combination of the HTTP status code in the response and the added header, customers can confidently narrow down which vendor is the source of an issue.

## Monitoring in the VGS Dashboard

The Home section of the Dashboard provides you with useful information about the performance and health of your integration. You can witness the processing of proxy requests with real-time charts, review proxy errors.

Every metric goes with an appropriate legend and timeframe and is displayed for the current vault. The data is currently displayed for the last **30 minutes** (by default). Use time range controls to change the time range. Currently, we provide the following common time ranges:

| Time range | Intervals |
| ---------- | --------- |
| Realtime   | 10s       |
| 24 hours   | 10m       |
| 7 days     | 1h        |
| 30 days    | 4h        |

<figure><img src="/files/1L3w4a41GkWpQ23UxCTP" alt=""><figcaption></figcaption></figure>

#### Metrics

* **Requests** - number of requests made via VGS proxy
* **Upstream processing time** - the time it took to get a response from upstream (in ms)
* **Proxy processing time** - the time it took for the VGS proxy to process a request (in ms), excluding upstream processing time
* **Proxy response status codes** - VGS HTTP proxy response status codes
* **Upstream response status codes** - HTTP upstream response status codes
* **Record operations count** - number of record operations: created, de-dupe, retrieve, re-alias, de-alias, delete
* **Failed reveal count** - number of failed reveal records

Use the dashboard to monitor your requests. Keep an eye on your dashboard analytics. These analytics are a good source of data for troubleshooting requests.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.verygoodsecurity.com/vault/http-proxy/performance-monitoring.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
