$ mvn clean install tomee:runMétricas com MicroProfile @Counted (Contado)
            Este é um exemplo sobre como utilizar as métricas de MicroProfile no Tomee. O projeto inclui um perfil de Docker que se pode usar para criar uma imagem de Docker.
Executando a aplicação:
Dentro do aplicativo, há um endpoint que fornecerá o estado do tempo para o dia e a semana.
Veja o clima da semana:
$ curl -X GET http://localhost:8080/mp-metrics-counted/weather/week/statusIMPORTANTE: Se você executar usando o Docker, porque o aplicativo está instalado como o aplicativo ROOT, remova o nome do aplicativo do URL:
$ curl -X GET http://localhost:8080/weather/week/statusResposta:
Hi, today is a sunny day!Usando @Counted
As métricas do MicroProfile têm uma função que pode ser usada para contar requisições para um serviço.
Para usar esta função, você deve anotar os métodos dos recursos JAX-RS com @Counted.
@Path("/weather")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
public class WeatherService {
    @Path("/day/status")
    @Counted(monotonic = true, name = "weather_day_status", absolute = true)
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String dayStatus() {
        return "Hi, today is a sunny day!";
    }
...
}Existem algumas configurações, como parte do @Counted, que você precisa saber:
String name Opcional. Define o nome da métrica. Se não for fornecido explicitamente, o nome do objeto anotado é usado.
boolean absolute Se verdadeiro, use o nome fornecido como o nome absoluto da métrica. Se falso, coloque o nome do pacote e o nome da classe antes do nome fornecido. O valor padrão é falso.
String displayName Opcional. Um nome de exibição legível para metadados.
String description Opcional. Uma descrição da métrica.
String[] tags Opcional. Matriz de cadeia no formato = para fornecer etiquetas especiais para uma métrica.
boolean reusable Indica se uma métrica com um determinado nome pode ser
registrado em mais de um local. Não se aplica a @Gauges (metros).
Dados Métricos
Verifique a métrica do contador, fazendo uma solicitação GET:
Formato Prometheus:
$ curl -X GET http://localhost:8080/mp-metrics-counted/metrics/application/weather_day_statusResposta Prometheus:
# TYPE application:weather_day_status counter
application:weather_day_status 1.0Formato JSON:
Para o formato json, adicione o cabeçalho Accept:application/json à requisição HTTP.
$ curl -X GET -H "Accept: application/json" http://localhost:8080/mp-metrics-counted/metrics/application/weather_day_statusResposta JSON:
{
    "weather_day_status": {
        "delegate": {},
        "unit": "none",
        "count": 1
    }
}Metadatos Métrica
Uma métrica terá metadados para que você possa saber mais sobre ela, como displayName,descrição, tags etc.
Verifique os metadados da métrica fazendo uma requisição HTTP OPTIONS:
Requisição HTTP OPTIONS
$ curl -X OPTIONS http://localhost:8080/mp-metrics-counted/metrics/application/weather_day_statusResposta:
{
    "weather_day_status": {
        "unit": "none",
        "displayName": "Weather Day Status",
        "name": "weather_day_status",
        "typeRaw": "COUNTER",
        "description": "This metric shows the weather status of the day.",
        "type": "counter",
        "value": {
            "unit": "none",
            "displayName": "Weather Day Status",
            "name": "weather_day_status",
            "tagsAsString": "",
            "typeRaw": "COUNTER",
            "description": "This metric shows the weather status of the day.",
            "type": "counter",
            "reusable": false,
            "tags": {}
        },
        "reusable": false,
        "tags": ""
    }
}Você também pode testá-lo usando WeatherServiceTest.java disponível no projeto.
