http_listener_v2

package
v1.23.4 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2022 License: MIT Imports: 19 Imported by: 3

README

HTTP Listener v2 Input Plugin

HTTP Listener v2 is a service input plugin that listens for metrics sent via HTTP. Metrics may be sent in any supported data format. For metrics in InfluxDB Line Protocol it's recommended to use the influxdb_listener or influxdb_v2_listener instead.

Note: The plugin previously known as http_listener has been renamed influxdb_listener. If you would like Telegraf to act as a proxy/relay for InfluxDB it is recommended to use influxdb_listener or influxdb_v2_listener.

Configuration

# Generic HTTP write listener
[[inputs.http_listener_v2]]
  ## Address and port to host HTTP listener on
  service_address = ":8080"

  ## Paths to listen to.
  # paths = ["/telegraf"]

  ## Save path as http_listener_v2_path tag if set to true
  # path_tag = false

  ## HTTP methods to accept.
  # methods = ["POST", "PUT"]

  ## maximum duration before timing out read of the request
  # read_timeout = "10s"
  ## maximum duration before timing out write of the response
  # write_timeout = "10s"

  ## Maximum allowed http request body size in bytes.
  ## 0 means to use the default of 524,288,000 bytes (500 mebibytes)
  # max_body_size = "500MB"

  ## Part of the request to consume.  Available options are "body" and
  ## "query".
  # data_source = "body"

  ## Set one or more allowed client CA certificate file names to
  ## enable mutually authenticated TLS connections
  # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"]

  ## Add service certificate and key
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"

  ## Optional username and password to accept for HTTP basic authentication.
  ## You probably want to make sure you have TLS configured above for this.
  # basic_username = "foobar"
  # basic_password = "barfoo"

  ## Optional setting to map http headers into tags
  ## If the http header is not present on the request, no corresponding tag will be added
  ## If multiple instances of the http header are present, only the first value will be used
  # http_header_tags = {"HTTP_HEADER" = "TAG_NAME"}

  ## Data format to consume.
  ## Each data format has its own unique set of configuration options, read
  ## more about them here:
  ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
  data_format = "influx"

Metrics

Metrics are collected from the part of the request specified by the data_source param and are parsed depending on the value of data_format.

Troubleshooting

Send Line Protocol:

curl -i -XPOST 'http://localhost:8080/telegraf' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

Send JSON:

curl -i -XPOST 'http://localhost:8080/telegraf' --data-binary '{"value1": 42, "value2": 42}'

Send query params:

curl -i -XGET 'http://localhost:8080/telegraf?host=server01&value=0.42'

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type HTTPListenerV2

type HTTPListenerV2 struct {
	ServiceAddress string            `toml:"service_address"`
	Path           string            `toml:"path" deprecated:"1.20.0;use 'paths' instead"`
	Paths          []string          `toml:"paths"`
	PathTag        bool              `toml:"path_tag"`
	Methods        []string          `toml:"methods"`
	DataSource     string            `toml:"data_source"`
	ReadTimeout    config.Duration   `toml:"read_timeout"`
	WriteTimeout   config.Duration   `toml:"write_timeout"`
	MaxBodySize    config.Size       `toml:"max_body_size"`
	Port           int               `toml:"port"`
	BasicUsername  string            `toml:"basic_username"`
	BasicPassword  string            `toml:"basic_password"`
	HTTPHeaderTags map[string]string `toml:"http_header_tags"`

	tlsint.ServerConfig

	TimeFunc
	Log telegraf.Logger

	parsers.Parser
	// contains filtered or unexported fields
}

HTTPListenerV2 is an input plugin that collects external metrics sent via HTTP

func (*HTTPListenerV2) Gather

func (*HTTPListenerV2) Init added in v1.21.0

func (h *HTTPListenerV2) Init() error

func (*HTTPListenerV2) SampleConfig

func (*HTTPListenerV2) SampleConfig() string

func (*HTTPListenerV2) ServeHTTP

func (h *HTTPListenerV2) ServeHTTP(res http.ResponseWriter, req *http.Request)

func (*HTTPListenerV2) SetParser

func (h *HTTPListenerV2) SetParser(parser parsers.Parser)

func (*HTTPListenerV2) Start

func (h *HTTPListenerV2) Start(acc telegraf.Accumulator) error

Start starts the http listener service.

func (*HTTPListenerV2) Stop

func (h *HTTPListenerV2) Stop()

Stop cleans up all resources

type TimeFunc

type TimeFunc func() time.Time

TimeFunc provides a timestamp for the metrics

Jump to

Keyboard shortcuts

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