client

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2020 License: MIT Imports: 7 Imported by: 2

README

prom-metrics-client

Build Status Coverage Standard README GoDoc golang version

A simple client that fetches and parses metrics from a prometheus /metrics endpoint.

https://prometheus.io/docs/instrumenting/exposition_formats/

Install

go get github.com/alanshaw/prom-metrics-client

Usage

⚠️ Currently has no special handling for histogram or summary types.

package main

import (
	pmc "github.com/alanshaw/prom-metrics-client"
)

func main() {
	c := pmc.PromMetricsClient{
		URL: "http://localhost:8888/metrics",
	}

	ms, _ := c.GetMetrics()

	for _, m := range ms {
		fmt.Printf("%+v\n", m)
	}
}

/*
Example output:
&{Name:http_requests_total Description:The total number of HTTP requests. Type:counter Samples:[0xc000132090 0xc0001320c0]}
&{Name:msdos_file_access_time_seconds Description: Type: Samples:[0xc0001320f0]}
&{Name:metric_without_timestamp_and_labels Description: Type: Samples:[0xc000132120]}
&{Name:something_weird Description: Type: Samples:[0xc000132150]}
&{Name:http_request_duration_seconds Description:A histogram of the request duration. Type:histogram Samples:[0xc000132180 0xc0001321b0 0xc0001321e0 0xc000132210 0xc000132240 0xc000132270 0xc0001322a0 0xc0001322d0]}
&{Name:rpc_duration_seconds Description:A summary of the RPC duration in seconds. Type:summary Samples:[0xc000132300 0xc000132330 0xc000132360 0xc000132390 0xc0001323c0 0xc0001323f0 0xc000132420]}
*/

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

MIT © Alan Shaw

Documentation

Index

Constants

View Source
const (
	// Untyped is the metric type of metrics that have no specified type
	Untyped MetricType = ""
	// CounterType is a cumulative metric that represents a single monotonically increasing counter whose value can only increase or be reset to zero on restart.
	CounterType = "counter"
	// GaugeType is a metric that represents a single numerical value that can arbitrarily go up and down.
	GaugeType = "gauge"
	// HistogramType samples observations (usually things like request durations or response sizes) and counts them in configurable buckets.
	HistogramType = "histogram"
	// SummaryType samples observations (usually things like request durations and response sizes). While it also provides a total count of observations and a sum of all observed values, it calculates configurable quantiles over a sliding time window.
	SummaryType = "summary"
)

Variables

View Source
var ErrParseFail = fmt.Errorf("failed to parse line")

ErrParseFail is returned when parsing of metrics data fails

View Source
var ErrUnexpectedHTTPStatusCode = fmt.Errorf("unexpected HTTP status code")

ErrUnexpectedHTTPStatusCode is returned when the HTTP status is not 200

Functions

This section is empty.

Types

type Metric

type Metric struct {
	Name        string
	Description string
	Type        MetricType
	Samples     []*Sample
}

Metric is a parsed metric from the endpoint.

func Parse

func Parse(r io.Reader) ([]*Metric, error)

Parse reads raw metrics data from the reader, parses it and returns the result

type MetricType

type MetricType string

MetricType describes the type of the metric that was collected. See https://prometheus.io/docs/concepts/metric_types/

type PromMetricsClient

type PromMetricsClient struct {
	URL string
}

PromMetricsClient is a simple client that fetches and parses metrics from a prometheus /metrics endpoint.

func (*PromMetricsClient) GetMetrics

func (c *PromMetricsClient) GetMetrics() ([]*Metric, error)

GetMetrics retrieves metrics from the stored URL

type Sample

type Sample struct {
	Name      string
	Labels    map[string]string
	Value     float64
	Timestamp int64
}

Sample is a sample taken for a particular metric.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL