Documentation
¶
Overview ¶
Package httpd implements the HTTP service and REST API for InfluxDB.
Index ¶
- Constants
- func LimitListener(l net.Listener, n int) net.Listener
- func WriteError(w ResponseWriter, err error) (int, error)
- type AuthenticationMethod
- type Config
- type Handler
- type RequestInfo
- type RequestProfile
- type RequestStats
- type RequestTracker
- type Response
- type ResponseWriter
- type Route
- type Service
- type Statistics
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" // DefaultMaxBodySize is the default maximum size of a client request body, in bytes. Specify 0 for no limit. DefaultMaxBodySize = 25e6 )
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 DefaultDebugRequestsInterval = 10 * time.Second MaxDebugRequestsInterval = 6 * time.Hour )
Variables ¶
This section is empty.
Functions ¶
func LimitListener ¶ added in v1.0.0
LimitListener returns a Listener that accepts at most n simultaneous connections from the provided Listener and will drop extra connections.
func WriteError ¶ added in v1.0.0
func WriteError(w ResponseWriter, err error) (int, error)
WriteError is a convenience function for writing an error response to the ResponseWriter.
Types ¶
type AuthenticationMethod ¶ added in v1.0.0
type AuthenticationMethod int
AuthenticationMethod defines the type of authentication used.
const ( // Authenticate using basic authentication. UserAuthentication AuthenticationMethod = iota // Authenticate with jwt. BearerAuthentication )
Supported authentication methods.
type Config ¶
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"`
Realm string `toml:"realm"`
UnixSocketEnabled bool `toml:"unix-socket-enabled"`
BindSocket string `toml:"bind-socket"`
MaxBodySize int `toml:"max-body-size"`
}
Config represents a configuration for a HTTP service.
func (Config) Diagnostics ¶ added in v1.3.0
func (c Config) Diagnostics() (*diagnostics.Diagnostics, error)
Diagnostics returns a diagnostics representation of a subset of the Config.
type Handler ¶
type Handler struct {
Version string
BuildType string
MetaClient interface {
Database(name string) *meta.DatabaseInfo
Databases() []meta.DatabaseInfo
Authenticate(username, password string) (ui meta.User, err error)
User(username string) (meta.User, error)
AdminUserExists() bool
}
QueryAuthorizer interface {
AuthorizeQuery(u meta.User, query *influxql.Query, database string) error
}
WriteAuthorizer interface {
AuthorizeWrite(username, database string) error
}
QueryExecutor *query.QueryExecutor
Monitor interface {
Statistics(tags map[string]string) ([]*monitor.Statistic, error)
Diagnostics() (map[string]*diagnostics.Diagnostics, error)
}
PointsWriter interface {
WritePoints(database, retentionPolicy string, consistencyLevel models.ConsistencyLevel, user meta.User, points []models.Point) error
}
Config *Config
Logger zap.Logger
CLFLogger *log.Logger
// contains filtered or unexported fields
}
Handler represents an HTTP handler for the InfluxDB server.
func NewHandler ¶
NewHandler returns a new instance of handler with routes.
type RequestInfo ¶ added in v1.3.0
func (*RequestInfo) String ¶ added in v1.3.0
func (r *RequestInfo) String() string
type RequestProfile ¶ added in v1.3.0
type RequestProfile struct {
Requests map[RequestInfo]*RequestStats
// contains filtered or unexported fields
}
func (*RequestProfile) AddQuery ¶ added in v1.3.0
func (p *RequestProfile) AddQuery(info RequestInfo)
func (*RequestProfile) AddWrite ¶ added in v1.3.0
func (p *RequestProfile) AddWrite(info RequestInfo)
func (*RequestProfile) Stop ¶ added in v1.3.0
func (p *RequestProfile) Stop()
Stop informs the RequestTracker to stop collecting statistics for this profile.
type RequestStats ¶ added in v1.3.0
type RequestTracker ¶ added in v1.3.0
type RequestTracker struct {
// contains filtered or unexported fields
}
func NewRequestTracker ¶ added in v1.3.0
func NewRequestTracker() *RequestTracker
func (*RequestTracker) Add ¶ added in v1.3.0
func (rt *RequestTracker) Add(req *http.Request, user meta.User)
func (*RequestTracker) TrackRequests ¶ added in v1.3.0
func (rt *RequestTracker) TrackRequests() *RequestProfile
type Response ¶
Response represents a list of statement results.
func (*Response) Error ¶
Error returns the first error from any statement. Returns nil if no errors occurred on any statements.
func (Response) MarshalJSON ¶
MarshalJSON encodes a Response struct into JSON.
func (*Response) UnmarshalJSON ¶
UnmarshalJSON decodes the data into the Response struct.
type ResponseWriter ¶ added in v1.0.0
type ResponseWriter interface {
// WriteResponse writes a response.
WriteResponse(resp Response) (int, error)
http.ResponseWriter
}
ResponseWriter is an interface for writing a response.
func NewResponseWriter ¶ added in v1.0.0
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 ¶ added in v0.12.0
type Route struct {
Name string
Method string
Pattern string
Gzipped bool
LoggingEnabled bool
HandlerFunc interface{}
}
Route specifies how to handle a HTTP verb for a given endpoint.
type Service ¶
type Service struct {
Handler *Handler
Logger zap.Logger
// contains filtered or unexported fields
}
Service manages the listener and handler for an HTTP endpoint.
func (*Service) BoundHTTPAddr ¶ added in v1.4.0
BoundHTTPAddr returns the string version of the address that the HTTP server is listening on. This is useful if you start an ephemeral server in test with bind address localhost:0.
func (*Service) Statistics ¶ added in v1.0.0
Statistics returns statistics for periodic monitoring.
func (*Service) WithLogger ¶ added in v1.2.1
WithLogger sets the logger for the service.
type Statistics ¶ added in v1.0.0
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
RecoveredPanics int64
PromWriteRequests int64
PromReadRequests int64
}
Statistics maintains statistics for the httpd service.