<!-- review: finished -->

<a id="custom-metrics-config"></a>

# Configuração de Métricas Personalizadas

O Angie pode coletar métricas numéricas personalizadas em memória compartilhada e expô-las através
da [API de estatísticas](https://pt.angie.software//angie/docs/configuration/modules/http/http_api.md#metrics) em tempo real em
`/status/http/metric_zones/`. Isso é fornecido pelo módulo
[Metric](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#http-metric).

<a id="configuration-steps-1"></a>

## Etapas de Configuração

1. Defina uma zona de métricas no bloco `http`:
   - [metric_zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#metric-zone) cria uma zona com um único modo de métrica.
   - [metric_complex_zone](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#metric-complex-zone) cria uma zona com múltiplas métricas nomeadas.
2. Atualize as métricas no processamento de requisições com a diretiva [metric](https://pt.angie.software//angie/docs/configuration/modules/http/http_metric.md#id3).
   Use um par `chave=valor` (ambos são [valores complexos](https://pt.angie.software//angie/docs/configuration/configfile.md#syntax)), e
   escolha o estágio de atualização com `on=` (`request`, `response`,
   ou `end`).
3. Exponha a API com um `location`:
   ```nginx
   location /status/ {
       api /status/http/metric_zones/;
   }
   ```

<a id="example"></a>

## Exemplo

Conte requisições por host e exponha as métricas na API:

```nginx
http {
    metric_zone requests:128k count;

    server {
        listen 80;

        location / {
            metric requests $host=1;
        }

        location /status/ {
            api /status/http/metric_zones/;
        }
    }
}
```

<a id="notes"></a>

## Observações

- Se `expire=on` estiver definido na zona e a memória compartilhada estiver cheia, as
  entradas usadas menos recentemente são expiradas. Se `expire=off`, novas atualizações
  são descartadas e o contador `discarded` aumenta.
- Se `discard_key` estiver definido, as métricas de entradas expiradas são agregadas
  sob essa chave na saída da API.
- Chaves e valores são limitados a 255 bytes; chaves mais longas são truncadas na API.
- Um valor vazio é tratado como `0`, e um valor não vazio sem um
  número inicial é tratado como `1`.
