/*
 * Copyright 2018 Red Hat, Inc. and/or its affiliates
 * and other contributors as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.vertx.micrometer;

import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.http.HttpServerOptions;
import io.vertx.core.json.JsonObject;

Options for Prometheus metrics backend.
Author:Joel Takvorian
/** * Options for Prometheus metrics backend. * * @author Joel Takvorian */
@DataObject(generateConverter = true, inheritConverter = true) public class VertxPrometheusOptions {
Default value for enabled = false.
/** * Default value for enabled = false. */
public static final boolean DEFAULT_ENABLED = false;
Default value for starting an embedded server = false.
/** * Default value for starting an embedded server = false. */
public static final boolean DEFAULT_START_EMBEDDED_SERVER = false;
The default metrics endpoint = /metrics when using an embedded server.
/** * The default metrics endpoint = /metrics when using an embedded server. */
public static final String DEFAULT_EMBEDDED_SERVER_ENDPOINT = "/metrics";
Default value for publishing histogram quantiles = false.
/** * Default value for publishing histogram quantiles = false. */
public static final boolean DEFAULT_PUBLISH_QUANTILES = false; private boolean enabled; private boolean startEmbeddedServer; private HttpServerOptions embeddedServerOptions; private String embeddedServerEndpoint; private boolean publishQuantiles;
Default constructor
/** * Default constructor */
public VertxPrometheusOptions() { enabled = DEFAULT_ENABLED; startEmbeddedServer = DEFAULT_START_EMBEDDED_SERVER; embeddedServerEndpoint = DEFAULT_EMBEDDED_SERVER_ENDPOINT; publishQuantiles = DEFAULT_PUBLISH_QUANTILES; }
Copy constructor
Params:
/** * Copy constructor * * @param other The other {@link VertxPrometheusOptions} to copy when creating this */
public VertxPrometheusOptions(VertxPrometheusOptions other) { enabled = other.enabled; startEmbeddedServer = other.startEmbeddedServer; embeddedServerEndpoint = other.embeddedServerEndpoint != null ? other.embeddedServerEndpoint : DEFAULT_EMBEDDED_SERVER_ENDPOINT; if (other.embeddedServerOptions != null) { embeddedServerOptions = new HttpServerOptions(other.embeddedServerOptions); } publishQuantiles = other.publishQuantiles; }
Create an instance from a JsonObject
Params:
  • json – the JsonObject to create it from
/** * Create an instance from a {@link io.vertx.core.json.JsonObject} * * @param json the JsonObject to create it from */
public VertxPrometheusOptions(JsonObject json) { this(); VertxPrometheusOptionsConverter.fromJson(json, this); }
Returns:a JSON representation of these options
/** * @return a JSON representation of these options */
public JsonObject toJson() { JsonObject json = new JsonObject(); VertxPrometheusOptionsConverter.toJson(this, json); return json; }
Will Prometheus reporting be enabled?
Returns:true if enabled, false if not.
/** * Will Prometheus reporting be enabled? * * @return true if enabled, false if not. */
public boolean isEnabled() { return enabled; }
Set true to enable Prometheus reporting
/** * Set true to enable Prometheus reporting */
public VertxPrometheusOptions setEnabled(boolean enabled) { this.enabled = enabled; return this; }
Returns true if it is configured to init an embedded web server to expose Prometheus metrics
/** * Returns true if it is configured to init an embedded web server to expose Prometheus metrics */
public boolean isStartEmbeddedServer() { return startEmbeddedServer; }
When true, an embedded server will init to expose metrics with Prometheus format.
/** * When true, an embedded server will init to expose metrics with Prometheus format. */
public VertxPrometheusOptions setStartEmbeddedServer(boolean startEmbeddedServer) { this.startEmbeddedServer = startEmbeddedServer; return this; }
Get the HTTP server options of the embedded server, if any
/** * Get the HTTP server options of the embedded server, if any */
public HttpServerOptions getEmbeddedServerOptions() { return embeddedServerOptions; }
HTTP server options for the embedded server
Params:
  • embeddedServerOptions – the server options
/** * HTTP server options for the embedded server * @param embeddedServerOptions the server options */
public VertxPrometheusOptions setEmbeddedServerOptions(HttpServerOptions embeddedServerOptions) { this.embeddedServerOptions = embeddedServerOptions; return this; }
Set metrics endpoint. Use conjointly with the embedded server options. Defaults to /metrics.
Params:
  • embeddedServerEndpoint – metrics endpoint
/** * Set metrics endpoint. Use conjointly with the embedded server options. Defaults to <i>/metrics</i>. * @param embeddedServerEndpoint metrics endpoint */
public VertxPrometheusOptions setEmbeddedServerEndpoint(String embeddedServerEndpoint) { this.embeddedServerEndpoint = embeddedServerEndpoint; return this; }
Get the HTTP endpoint used if an embedded server is configured
/** * Get the HTTP endpoint used if an embedded server is configured */
public String getEmbeddedServerEndpoint() { return embeddedServerEndpoint; }
Returns:true if quantile stats are published
/** * @return true if quantile stats are published */
public boolean isPublishQuantiles() { return publishQuantiles; }
Set true to publish histogram stats, necessary to compute quantiles. Note that it generates many new timeseries for stats, which is why it is deactivated by default.
Params:
  • publishQuantiles – the publishing quantiles flag
Returns:a reference to this, so the API can be used fluently
/** * Set true to publish histogram stats, necessary to compute quantiles. * Note that it generates many new timeseries for stats, which is why it is deactivated by default. * * @param publishQuantiles the publishing quantiles flag * @return a reference to this, so the API can be used fluently */
public VertxPrometheusOptions setPublishQuantiles(boolean publishQuantiles) { this.publishQuantiles = publishQuantiles; return this; } }