Docs » Integrations Guide » Use the SignalFx Smart Agent » Monitor Configuration » prometheus-exporter

prometheus-exporter

This monitor reads metrics from a Prometheus exporter endpoint.

All metric types are supported. See https://prometheus.io/docs/concepts/metric_types/ for a description of the Prometheus metric types. The conversion happens as follows:

  • Gauges are converted directly to SignalFx gauges
  • Counters are converted directly to SignalFx cumulative counters
  • Untyped metrics are converted directly to SignalFx gauges
  • Summary metrics are converted to three distinct metrics, where <basename> is the root name of the metric:
    • The total count gets converted to a cumulative counter called <basename>_count
    • The total sum gets converted to a cumulative counter called <basename>
    • Each quantile value is converted to a gauge called <basename>_quantile and will include a dimension called quantile that specifies the quantile.
  • Histogram metrics are converted to three distinct metrics, where <basename> is the root name of the metric:
    • The total count gets converted to a cumulative counter called <basename>_count
    • The total sum gets converted to a cumulative counter called <basename>
    • Each histogram bucket is converted to a cumulative counter called <basename>_bucket and will include a dimension called upper_bound that specifies the maximum value in that bucket. This metric specifies the number of events with a value that is less than or equal to the upper bound.

All Prometheus labels will be converted directly to SignalFx dimensions.

This supports service discovery so you can set a discovery rule such as:

port >= 9100 && port <= 9500 && containerImage =~ "exporter"

assuming you are running exporters in container images that have the word “exporter” in them and fall within the standard exporter port range. In K8s, you could also try matching on the container port name as defined in the pod spec, which is the name variable in discovery rules for the k8s-api observer.

Filtering can be very useful here since exporters tend to be fairly verbose.

Sample YAML configuration:

monitors:
 - type: prometheus-exporter
   discoveryRule: port >= 9100 && port <= 9500 && container_image =~ "exporter"
   extraDimensions:
     metric_source: prometheus
   host: 127.0.0.1
   port: 9100

Monitor Type: prometheus-exporter

Monitor Source Code

Accepts Endpoints: Yes

Multiple Instances Allowed: Yes

Configuration

Config option Required Type Description
host yes string Host of the exporter
port yes integer Port of the exporter
useHTTPS no bool If true, the Smart Agent will connect to the exporter using HTTPS instead of plain HTTP. (default: false)
skipVerify no bool If useHTTPS is true and this option is also true, the exporter’s TLS cert will not be verified. (default: false)
metricPath no string Path to the metrics endpoint on the exporter server, usually /metrics (the default). (default: /metrics)