http_listener

package
v0.0.0-...-5864974 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2019 License: MIT Imports: 18 Imported by: 0

README

HTTP listener service input plugin

The HTTP listener is a service input plugin that listens for messages sent via HTTP POST. The plugin expects messages in the InfluxDB line-protocol ONLY, other Telegraf input data formats are not supported. The intent of the plugin is to allow Telegraf to serve as a proxy/router for the /write endpoint of the InfluxDB HTTP API.

The /write endpoint supports the precision query parameter and can be set to one of ns, u, ms, s, m, h. All other parameters are ignored and defer to the output plugins configuration.

When chaining Telegraf instances using this plugin, CREATE DATABASE requests receive a 200 OK response with message body {"results":[]} but they are not relayed. The output configuration of the Telegraf instance which ultimately submits data to InfluxDB determines the destination database.

Enable TLS by specifying the file names of a service TLS certificate and key.

Enable mutually authenticated TLS and authorize client connections by signing certificate authority by including a list of allowed CA certificate file names in tls_allowed_cacerts.

Enable basic HTTP authentication of clients by specifying a username and password to check for. These credentials will be received from the client as plain text if TLS is not configured.

See: Telegraf Input Data Formats.

Example:

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

This is a sample configuration for the plugin.

# # Influx HTTP write listener
[[inputs.http_listener]]
  ## Address and port to host HTTP listener on
  service_address = ":8186"

  ## timeouts
  read_timeout = "10s"
  write_timeout = "10s"

  ## HTTPS
  tls_cert= "/etc/telegraf/cert.pem"
  tls_key = "/etc/telegraf/key.pem"

  ## MTLS
  tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"]

  ## Basic authentication
  basic_username = "foobar"
  basic_password = "barfoo"

Documentation

Index

Constants

View Source
const (
	// DEFAULT_MAX_BODY_SIZE is the default maximum request body size, in bytes.
	// if the request body is over this size, we will return an HTTP 413 error.
	// 500 MB
	DEFAULT_MAX_BODY_SIZE = 500 * 1024 * 1024

	// MAX_LINE_SIZE is the maximum size, in bytes, that can be allocated for
	// a single InfluxDB point.
	// 64 KB
	DEFAULT_MAX_LINE_SIZE = 64 * 1024
)

Variables

This section is empty.

Functions

func NewPool

func NewPool(n, bufSize int) *pool

NewPool returns a new pool object. n is the number of buffers bufSize is the size (in bytes) of each buffer

Types

type HTTPListener

type HTTPListener struct {
	ServiceAddress string
	ReadTimeout    internal.Duration
	WriteTimeout   internal.Duration
	MaxBodySize    int64
	MaxLineSize    int
	Port           int

	tlsint.ServerConfig

	BasicUsername string
	BasicPassword string

	TimeFunc

	BytesRecv       selfstat.Stat
	RequestsServed  selfstat.Stat
	WritesServed    selfstat.Stat
	QueriesServed   selfstat.Stat
	PingsServed     selfstat.Stat
	RequestsRecv    selfstat.Stat
	WritesRecv      selfstat.Stat
	QueriesRecv     selfstat.Stat
	PingsRecv       selfstat.Stat
	NotFoundsServed selfstat.Stat
	BuffersCreated  selfstat.Stat
	AuthFailures    selfstat.Stat
	// contains filtered or unexported fields
}

func (*HTTPListener) AuthenticateIfSet

func (h *HTTPListener) AuthenticateIfSet(handler http.HandlerFunc, res http.ResponseWriter, req *http.Request)

func (*HTTPListener) Description

func (h *HTTPListener) Description() string

func (*HTTPListener) Gather

func (h *HTTPListener) Gather(_ telegraf.Accumulator) error

func (*HTTPListener) SampleConfig

func (h *HTTPListener) SampleConfig() string

func (*HTTPListener) ServeHTTP

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

func (*HTTPListener) Start

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

Start starts the http listener service.

func (*HTTPListener) Stop

func (h *HTTPListener) Stop()

Stop cleans up all resources

type TimeFunc

type TimeFunc func() time.Time

Jump to

Keyboard shortcuts

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