api

package
v0.0.0-...-d79780e Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: Apache-2.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

func NewQueryable

func NewQueryable(store *store.Store, agentIDFunc func() string) metricQueryable

NewQueryable returns a metricQueryable that only do queries on the main agent.

Types

type API

type API struct {
	BindAddress        string
	StaticCDNURL       string
	LocalUIDisabled    bool
	Endpoints          config.WebEndpoints
	MetricFormat       types.MetricFormat
	DB                 metricQueryable
	ContainerRuntime   containerInterface
	PsFact             *facts.ProcessProvider
	FactProvider       *facts.FactProvider
	Discovery          *discovery.Discovery
	AgentInfo          agentInterface
	PrometheurExporter http.Handler
	Threshold          *threshold.Registry
	DiagnosticPage     func(ctx context.Context) string
	DiagnosticArchive  func(ctx context.Context, w types.ArchiveWriter) error
	// contains filtered or unexported fields
}

API contains API's port.

func (*API) Run

func (api *API) Run(ctx context.Context) error

Run starts our API.

type AgentInfo

type AgentInfo struct {
	RegistrationAt *time.Time `json:"registrationAt,omitempty"`
	LastReport     *time.Time `json:"lastReport,omitempty"`
	IsConnected    bool       `json:"isConnected"`
}

type AgentStatus

type AgentStatus struct {
	Status            float64  `json:"status"`
	StatusDescription []string `json:"statusDescription"`
}

type CPUUsage

type CPUUsage struct {
	User      float64 `json:"User"`
	Nice      float64 `json:"Nice"`
	System    float64 `json:"System"`
	Idle      float64 `json:"Idle"`
	IOWait    float64 `json:"IOWait"`
	Guest     float64 `json:"Guest"`
	GuestNice float64 `json:"GuestNice"`
	Irq       float64 `json:"IRQ"`
	SoftIrq   float64 `json:"SoftIRQ"`
	Steal     float64 `json:"Steal"`
}

type ComplexityRoot

type ComplexityRoot struct {
	AgentInfo struct {
		IsConnected    func(childComplexity int) int
		LastReport     func(childComplexity int) int
		RegistrationAt func(childComplexity int) int
	}

	AgentStatus struct {
		Status            func(childComplexity int) int
		StatusDescription func(childComplexity int) int
	}

	CPUUsage struct {
		Guest     func(childComplexity int) int
		GuestNice func(childComplexity int) int
		IOWait    func(childComplexity int) int
		Idle      func(childComplexity int) int
		Irq       func(childComplexity int) int
		Nice      func(childComplexity int) int
		SoftIrq   func(childComplexity int) int
		Steal     func(childComplexity int) int
		System    func(childComplexity int) int
		User      func(childComplexity int) int
	}

	Container struct {
		CPUUsedPerc  func(childComplexity int) int
		Command      func(childComplexity int) int
		CreatedAt    func(childComplexity int) int
		FinishedAt   func(childComplexity int) int
		ID           func(childComplexity int) int
		Image        func(childComplexity int) int
		InspectJSON  func(childComplexity int) int
		IoReadBytes  func(childComplexity int) int
		IoWriteBytes func(childComplexity int) int
		MemUsedPerc  func(childComplexity int) int
		Name         func(childComplexity int) int
		NetBitsRecv  func(childComplexity int) int
		NetBitsSent  func(childComplexity int) int
		StartedAt    func(childComplexity int) int
		State        func(childComplexity int) int
	}

	Containers struct {
		Containers   func(childComplexity int) int
		Count        func(childComplexity int) int
		CurrentCount func(childComplexity int) int
	}

	Fact struct {
		Name  func(childComplexity int) int
		Value func(childComplexity int) int
	}

	MemoryUsage struct {
		Buffers func(childComplexity int) int
		Cached  func(childComplexity int) int
		Free    func(childComplexity int) int
		Total   func(childComplexity int) int
		Used    func(childComplexity int) int
	}

	Process struct {
		CPUPercent  func(childComplexity int) int
		CPUTime     func(childComplexity int) int
		Cmdline     func(childComplexity int) int
		ContainerID func(childComplexity int) int
		CreateTime  func(childComplexity int) int
		Executable  func(childComplexity int) int
		MemoryRss   func(childComplexity int) int
		Name        func(childComplexity int) int
		Pid         func(childComplexity int) int
		Ppid        func(childComplexity int) int
		Status      func(childComplexity int) int
		Username    func(childComplexity int) int
	}

	Query struct {
		AgentInformation func(childComplexity int) int
		AgentStatus      func(childComplexity int) int
		Containers       func(childComplexity int, input *Pagination, allContainers bool, search string) int
		Facts            func(childComplexity int) int
		Processes        func(childComplexity int, containerID *string) int
		Services         func(childComplexity int, isActive bool) int
		Tags             func(childComplexity int) int
	}

	Service struct {
		Active            func(childComplexity int) int
		ContainerID       func(childComplexity int) int
		ExePath           func(childComplexity int) int
		IPAddress         func(childComplexity int) int
		ListenAddresses   func(childComplexity int) int
		Name              func(childComplexity int) int
		Status            func(childComplexity int) int
		StatusDescription func(childComplexity int) int
	}

	SwapUsage struct {
		Free  func(childComplexity int) int
		Total func(childComplexity int) int
		Used  func(childComplexity int) int
	}

	Tag struct {
		TagName func(childComplexity int) int
	}

	Topinfo struct {
		CPU       func(childComplexity int) int
		Loads     func(childComplexity int) int
		Memory    func(childComplexity int) int
		Processes func(childComplexity int) int
		Swap      func(childComplexity int) int
		Time      func(childComplexity int) int
		Uptime    func(childComplexity int) int
		Users     func(childComplexity int) int
	}
}

type Config

type Config struct {
	Schema     *ast.Schema
	Resolvers  ResolverRoot
	Directives DirectiveRoot
	Complexity ComplexityRoot
}

type Container

type Container struct {
	Command      string     `json:"command"`
	CreatedAt    *time.Time `json:"createdAt,omitempty"`
	ID           string     `json:"id"`
	Image        string     `json:"image"`
	InspectJSON  string     `json:"inspectJSON"`
	Name         string     `json:"name"`
	StartedAt    *time.Time `json:"startedAt,omitempty"`
	State        string     `json:"state"`
	FinishedAt   *time.Time `json:"finishedAt,omitempty"`
	IoWriteBytes float64    `json:"ioWriteBytes"`
	IoReadBytes  float64    `json:"ioReadBytes"`
	NetBitsRecv  float64    `json:"netBitsRecv"`
	NetBitsSent  float64    `json:"netBitsSent"`
	MemUsedPerc  float64    `json:"memUsedPerc"`
	CPUUsedPerc  float64    `json:"cpuUsedPerc"`
}

type Containers

type Containers struct {
	Count        int          `json:"count"`
	CurrentCount int          `json:"currentCount"`
	Containers   []*Container `json:"containers"`
}

type DirectiveRoot

type DirectiveRoot struct {
}

type Fact

type Fact struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type LabelInput

type LabelInput struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type MemoryUsage

type MemoryUsage struct {
	Total   float64 `json:"Total"`
	Used    float64 `json:"Used"`
	Free    float64 `json:"Free"`
	Buffers float64 `json:"Buffers"`
	Cached  float64 `json:"Cached"`
}

type MetricInput

type MetricInput struct {
	Labels []*LabelInput `json:"labels"`
}

type Pagination

type Pagination struct {
	Offset int `json:"offset"`
	Limit  int `json:"limit"`
}

type Process

type Process struct {
	Pid         int       `json:"pid"`
	Ppid        int       `json:"ppid"`
	CreateTime  time.Time `json:"create_time"`
	Cmdline     string    `json:"cmdline"`
	Name        string    `json:"name"`
	MemoryRss   int       `json:"memory_rss"`
	CPUPercent  float64   `json:"cpu_percent"`
	CPUTime     float64   `json:"cpu_time"`
	Status      string    `json:"status"`
	Username    string    `json:"username"`
	Executable  string    `json:"executable"`
	ContainerID string    `json:"container_id"`
}

type Query

type Query struct {
}

type QueryResolver

type QueryResolver interface {
	Containers(ctx context.Context, input *Pagination, allContainers bool, search string) (*Containers, error)
	Processes(ctx context.Context, containerID *string) (*Topinfo, error)
	Facts(ctx context.Context) ([]*Fact, error)
	Services(ctx context.Context, isActive bool) ([]*Service, error)
	AgentInformation(ctx context.Context) (*AgentInfo, error)
	Tags(ctx context.Context) ([]*Tag, error)
	AgentStatus(ctx context.Context) (*AgentStatus, error)
}

type Resolver

type Resolver struct {
	// contains filtered or unexported fields
}

Resolver is the api resolver.

func (*Resolver) Query

func (r *Resolver) Query() QueryResolver

Query queries the resolver.

type ResolverRoot

type ResolverRoot interface {
	Query() QueryResolver
}

type Service

type Service struct {
	Name              string   `json:"name"`
	ContainerID       string   `json:"containerId"`
	IPAddress         string   `json:"ipAddress"`
	ListenAddresses   []string `json:"listenAddresses"`
	ExePath           string   `json:"exePath"`
	Active            bool     `json:"active"`
	Status            float64  `json:"status"`
	StatusDescription *string  `json:"statusDescription,omitempty"`
}

type SwapUsage

type SwapUsage struct {
	Total float64 `json:"Total"`
	Used  float64 `json:"Used"`
	Free  float64 `json:"Free"`
}

type Tag

type Tag struct {
	TagName string `json:"tagName"`
}

type Topinfo

type Topinfo struct {
	Time      time.Time    `json:"Time"`
	Uptime    int          `json:"Uptime"`
	Loads     []float64    `json:"Loads"`
	Users     int          `json:"Users"`
	Processes []*Process   `json:"Processes"`
	CPU       *CPUUsage    `json:"CPU,omitempty"`
	Memory    *MemoryUsage `json:"Memory,omitempty"`
	Swap      *SwapUsage   `json:"Swap,omitempty"`
}

Jump to

Keyboard shortcuts

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