http_listener

package
v0.0.0-...-0e59cf9 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2020 License: MIT Imports: 18 Imported by: 0

README

InfluxDB Listener Input Plugin

InfluxDB Listener is a service input plugin that listens for requests sent according to the InfluxDB HTTP API. The intent of the plugin is to allow Telegraf to serve as a proxy/router for the /write endpoint of the InfluxDB HTTP API.

Note: This plugin was previously known as http_listener. If you wish to send general metrics via HTTP it is recommended to use the http_listener_v2 instead.

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.

Configuration:
[[inputs.influxdb_listener]]
  ## Address and port to host HTTP listener on
  service_address = ":8186"

  ## 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 536,870,912 bytes (500 mebibytes)
  max_body_size = 0

  ## Maximum line size allowed to be sent in bytes.
  ## 0 means to use the default of 65536 bytes (64 kibibytes)
  max_line_size = 0

  ## 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 tag name used to store the database name.
  ## If the write has a database in the query string then it will be kept in this tag name.
  ## This tag can be used in downstream outputs.
  ## The default value of nothing means it will be off and the database will not be recorded.
  ## If you have a tag that is the same as the one specified below, and supply a database,
  ## the tag will be overwritten with the database supplied.
  # database_tag = ""

  ## 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"
Metrics:

Metrics are created from InfluxDB Line Protocol in the request body.

Troubleshooting:

Example Query:

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

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 `toml:"service_address"`
	// Port gets pulled out of ServiceAddress
	Port int
	tlsint.ServerConfig

	ReadTimeout   internal.Duration `toml:"read_timeout"`
	WriteTimeout  internal.Duration `toml:"write_timeout"`
	MaxBodySize   internal.Size     `toml:"max_body_size"`
	MaxLineSize   internal.Size     `toml:"max_line_size"`
	BasicUsername string            `toml:"basic_username"`
	BasicPassword string            `toml:"basic_password"`
	DatabaseTag   string            `toml:"database_tag"`

	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

	Log telegraf.Logger
	// 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