Package httpd
Overview ▹
Index ▹
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
}
ActiveGo 1.8