httpd - ActiveState ActiveGo 1.8
...

Package httpd

import "github.com/influxdata/influxdb/services/httpd"
Overview
Index

Overview ▾

Package httpd implements the HTTP service and REST API for InfluxDB.

Constants

const (
    // DefaultBindAddress is the default address to bind to.
    DefaultBindAddress = ":8086"

    // DefaultRealm is the default realm sent back when issuing a basic auth challenge.
    DefaultRealm = "InfluxDB"

    // DefaultBindSocket is the default unix socket to bind to.
    DefaultBindSocket = "/var/run/influxdb.sock"
)
const (
    // DefaultChunkSize specifies the maximum number of points that will
    // be read before sending results back to the engine.
    //
    // This has no relation to the number of bytes that are returned.
    DefaultChunkSize = 10000
)

func LimitListener

func LimitListener(l net.Listener, n int) net.Listener

LimitListener returns a Listener that accepts at most n simultaneous connections from the provided Listener and will drop extra connections.

func WriteError

func WriteError(w ResponseWriter, err error) (int, error)

WriteError is a convenience function for writing an error response to the ResponseWriter.

type AuthenticationMethod

AuthenticationMethod defines the type of authentication used.

type AuthenticationMethod int

Supported authentication methods.

const (
    // Authenticate using basic authentication.
    UserAuthentication AuthenticationMethod = iota

    // Authenticate with jwt.
    BearerAuthentication
)

type Config

Config represents a configuration for a HTTP service.

type Config struct {
    Enabled            bool   `toml:"enabled"`
    BindAddress        string `toml:"bind-address"`
    AuthEnabled        bool   `toml:"auth-enabled"`
    LogEnabled         bool   `toml:"log-enabled"`
    WriteTracing       bool   `toml:"write-tracing"`
    PprofEnabled       bool   `toml:"pprof-enabled"`
    HTTPSEnabled       bool   `toml:"https-enabled"`
    HTTPSCertificate   string `toml:"https-certificate"`
    HTTPSPrivateKey    string `toml:"https-private-key"`
    MaxRowLimit        int    `toml:"max-row-limit"`
    MaxConnectionLimit int    `toml:"max-connection-limit"`
    SharedSecret       string `toml:"shared-secret"`
    Realm              string `toml:"realm"`
    UnixSocketEnabled  bool   `toml:"unix-socket-enabled"`
    BindSocket         string `toml:"bind-socket"`
}

func NewConfig

func NewConfig() Config

NewConfig returns a new Config with default settings.

type Handler

Handler represents an HTTP handler for the InfluxDB server.

type Handler struct {
    Version string

    MetaClient interface {
        Database(name string) *meta.DatabaseInfo
        Authenticate(username, password string) (ui *meta.UserInfo, err error)
        User(username string) (*meta.UserInfo, error)
        AdminUserExists() bool
    }

    QueryAuthorizer interface {
        AuthorizeQuery(u *meta.UserInfo, query *influxql.Query, database string) error
    }

    WriteAuthorizer interface {
        AuthorizeWrite(username, database string) error
    }

    QueryExecutor *influxql.QueryExecutor

    Monitor interface {
        Statistics(tags map[string]string) ([]*monitor.Statistic, error)
    }

    PointsWriter interface {
        WritePoints(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, points []models.Point) error
    }

    Config    *Config
    Logger    zap.Logger
    CLFLogger *log.Logger
    // contains filtered or unexported fields
}

func NewHandler

func NewHandler(c Config) *Handler

NewHandler returns a new instance of handler with routes.

func (*Handler) AddRoutes

func (h *Handler) AddRoutes(routes ...Route)

AddRoutes sets the provided routes on the handler.

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP responds to HTTP request to the handler.

func (*Handler) Statistics

func (h *Handler) Statistics(tags map[string]string) []models.Statistic

Statistics returns statistics for periodic monitoring.

type Response

Response represents a list of statement results.

type Response struct {
    Results []*influxql.Result
    Err     error
}

func (*Response) Error

func (r *Response) Error() error

Error returns the first error from any statement. Returns nil if no errors occurred on any statements.

func (Response) MarshalJSON

func (r Response) MarshalJSON() ([]byte, error)

MarshalJSON encodes a Response struct into JSON.

func (*Response) UnmarshalJSON

func (r *Response) UnmarshalJSON(b []byte) error

UnmarshalJSON decodes the data into the Response struct.

type ResponseWriter

ResponseWriter is an interface for writing a response.

type ResponseWriter interface {
    // WriteResponse writes a response.
    WriteResponse(resp Response) (int, error)

    http.ResponseWriter
}

func NewResponseWriter

func NewResponseWriter(w http.ResponseWriter, r *http.Request) ResponseWriter

NewResponseWriter creates a new ResponseWriter based on the Accept header in the request that wraps the ResponseWriter.

type Route

Route specifies how to handle a HTTP verb for a given endpoint.

type Route struct {
    Name           string
    Method         string
    Pattern        string
    Gzipped        bool
    LoggingEnabled bool
    HandlerFunc    interface{}
}

type Service

Service manages the listener and handler for an HTTP endpoint.

type Service struct {
    Handler *Handler

    Logger zap.Logger
    // contains filtered or unexported fields
}

func NewService

func NewService(c Config) *Service

NewService returns a new instance of Service.

func (*Service) Addr

func (s *Service) Addr() net.Addr

Addr returns the listener's address. Returns nil if listener is closed.

func (*Service) Close

func (s *Service) Close() error

Close closes the underlying listener.

func (*Service) Err

func (s *Service) Err() <-chan error

Err returns a channel for fatal errors that occur on the listener.

func (*Service) Open

func (s *Service) Open() error

Open starts the service.

func (*Service) Statistics

func (s *Service) Statistics(tags map[string]string) []models.Statistic

Statistics returns statistics for periodic monitoring.

func (*Service) WithLogger

func (s *Service) WithLogger(log zap.Logger)

WithLogger sets the logger for the service.

type Statistics

Statistics maintains statistics for the httpd service.

type Statistics struct {
    Requests                     int64
    CQRequests                   int64
    QueryRequests                int64
    WriteRequests                int64
    PingRequests                 int64
    StatusRequests               int64
    WriteRequestBytesReceived    int64
    QueryRequestBytesTransmitted int64
    PointsWrittenOK              int64
    PointsWrittenDropped         int64
    PointsWrittenFail            int64
    AuthenticationFailures       int64
    RequestDuration              int64
    QueryRequestDuration         int64
    WriteRequestDuration         int64
    ActiveRequests               int64
    ActiveWriteRequests          int64
    ClientErrors                 int64
    ServerErrors                 int64
}