agent

package
v0.1.26 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2026 License: AGPL-3.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProtocolMajor = 2
	ProtocolMinor = 3
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ConfigApplier

type ConfigApplier interface {
	Apply(ctx context.Context, snapshot ConfigSnapshot) error
}

type ConfigApplyError added in v0.1.19

type ConfigApplyError struct {
	Message string
	Errors  []ConfigApplyErrorDetail
}

func (ConfigApplyError) Error added in v0.1.19

func (err ConfigApplyError) Error() string

type ConfigApplyErrorDetail added in v0.1.19

type ConfigApplyErrorDetail struct {
	Code             string          `json:"code"`
	RuleIDs          []string        `json:"rule_ids"`
	Protocol         domain.Protocol `json:"protocol"`
	ListenIP         string          `json:"listen_ip"`
	Port             int             `json:"port"`
	Dataplane        string          `json:"dataplane,omitempty"`
	Owner            string          `json:"owner,omitempty"`
	DriftStatus      string          `json:"drift_status,omitempty"`
	ExternalResource string          `json:"external_resource,omitempty"`
	Message          string          `json:"message"`
}

func StructuredApplyErrors added in v0.1.19

func StructuredApplyErrors(err error) []ConfigApplyErrorDetail

type ConfigSnapshot

type ConfigSnapshot struct {
	AgentProtocolVersion ProtocolVersion `json:"agent_protocol_version"`
	NodeID               string          `json:"node_id"`
	ConfigVersion        int             `json:"config_version"`
	ConfigHash           string          `json:"config_hash"`
	DataplaneMode        string          `json:"dataplane_mode,omitempty"`
	DataplaneInstanceID  string          `json:"dataplane_instance_id,omitempty"`
	ConflictPolicy       string          `json:"dataplane_conflict_policy,omitempty"`
	Rules                []RuleConfig    `json:"rules"`
}

type DataplaneResolver added in v0.1.23

type DataplaneResolver interface {
	ResolvedDataplanes() map[string]string
}

type HealthResultPayload added in v0.1.19

type HealthResultPayload struct {
	HealthCheckID       string `json:"health_check_id"`
	HealthCheckTargetID string `json:"health_check_target_id"`
	TargetID            string `json:"target_id"`
	NodeID              string `json:"node_id,omitempty"`
	Status              string `json:"status"`
	LatencyMS           int    `json:"latency_ms,omitempty"`
	ErrorMessage        string `json:"error_message,omitempty"`
	ObservedAt          string `json:"observed_at"`
}

type MetricsPayload

type MetricsPayload struct {
	TCPConnections       int64                  `json:"tcp_connections"`
	UDPPacketsPerSecond  int64                  `json:"udp_packets_per_second"`
	BandwidthBps         int64                  `json:"bandwidth_bps"`
	CPUPercent           float64                `json:"cpu_percent"`
	CPUModel             string                 `json:"cpu_model"`
	CPULogicalCores      int                    `json:"cpu_logical_cores"`
	CPUPhysicalCores     int                    `json:"cpu_physical_cores"`
	RAMUsedBytes         uint64                 `json:"ram_used_bytes"`
	RAMTotalBytes        uint64                 `json:"ram_total_bytes"`
	DiskUsedBytes        uint64                 `json:"disk_used_bytes"`
	DiskTotalBytes       uint64                 `json:"disk_total_bytes"`
	UploadBytes          int64                  `json:"upload_bytes"`
	DownloadBytes        int64                  `json:"download_bytes"`
	UptimeSeconds        int64                  `json:"uptime_seconds"`
	BootTime             string                 `json:"boot_time"`
	OSName               string                 `json:"os_name"`
	OSVersion            string                 `json:"os_version"`
	KernelVersion        string                 `json:"kernel_version"`
	Architecture         string                 `json:"architecture"`
	VirtualizationSystem string                 `json:"virtualization_system"`
	VirtualizationRole   string                 `json:"virtualization_role"`
	AppliedConfigVersion int                    `json:"applied_config_version"`
	Targets              []TargetMetricsPayload `json:"targets"`
	TrafficReportID      string                 `json:"traffic_report_id,omitempty"`
	TrafficDeltas        []RuleTrafficDelta     `json:"traffic_deltas,omitempty"`
}

type MetricsProvider

type MetricsProvider interface {
	AgentMetrics() MetricsPayload
}

type MonitorConfigSnapshot added in v0.1.19

type MonitorConfigSnapshot struct {
	MonitorID      string               `json:"monitor_id"`
	ConfigVersion  int                  `json:"config_version"`
	GeneratedAtUTC string               `json:"generated_at"`
	HealthChecks   []MonitorHealthCheck `json:"health_checks"`
}

type MonitorHealthCheck added in v0.1.19

type MonitorHealthCheck struct {
	ID              string                `json:"id"`
	ProbeType       string                `json:"probe_type"`
	IntervalSeconds int                   `json:"interval_seconds"`
	TimeoutSeconds  int                   `json:"timeout_seconds"`
	ConfigJSON      string                `json:"config_json"`
	Targets         []MonitorHealthTarget `json:"targets"`
}

type MonitorHealthTarget added in v0.1.19

type MonitorHealthTarget struct {
	HealthCheckTargetID string `json:"health_check_target_id"`
	TargetID            string `json:"target_id"`
	NodeID              string `json:"node_id,omitempty"`
	AddressType         string `json:"address_type,omitempty"`
	Name                string `json:"name"`
	Host                string `json:"host"`
	Port                int    `json:"port"`
}

type NodeRuntime

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

func NewMonitorRuntime

func NewMonitorRuntime(config RuntimeConfig) *NodeRuntime

func NewNodeRuntime

func NewNodeRuntime(config RuntimeConfig, applier ConfigApplier) *NodeRuntime

func (*NodeRuntime) Run

func (runtime *NodeRuntime) Run(ctx context.Context) error

type PortSegmentConfig added in v0.1.23

type PortSegmentConfig struct {
	StartPort int `json:"start_port"`
	EndPort   int `json:"end_port"`
}

type ProtocolVersion

type ProtocolVersion struct {
	Major int `json:"major"`
	Minor int `json:"minor"`
}

func CurrentProtocolVersion

func CurrentProtocolVersion() ProtocolVersion

func LeastLoadTargetGroupProtocolVersion added in v0.1.25

func LeastLoadTargetGroupProtocolVersion() ProtocolVersion

func ManagedDataplaneProtocolVersion added in v0.1.23

func ManagedDataplaneProtocolVersion() ProtocolVersion

func SendIPProtocolVersion added in v0.1.23

func SendIPProtocolVersion() ProtocolVersion

func (ProtocolVersion) Accepts

func (server ProtocolVersion) Accepts(agent ProtocolVersion) bool

type RuleConfig

type RuleConfig struct {
	ID               string                `json:"id"`
	RuntimeID        string                `json:"runtime_id,omitempty"`
	ConfigVersion    int                   `json:"config_version"`
	Enabled          bool                  `json:"enabled"`
	Dataplane        string                `json:"dataplane,omitempty"`
	ForwardingType   domain.ForwardingType `json:"forwarding_type"`
	Protocol         domain.Protocol       `json:"protocol"`
	NodeIDs          []string              `json:"node_ids,omitempty"`
	NodeGroupIDs     []string              `json:"node_group_ids,omitempty"`
	ListenIP         string                `json:"listen_ip"`
	Port             int                   `json:"port"`
	PortSegments     []PortSegmentConfig   `json:"port_segments,omitempty"`
	SendIP           string                `json:"send_ip,omitempty"`
	MatchType        string                `json:"match_type"`
	SNIHostname      string                `json:"sni_hostname,omitempty"`
	ProxyProtocolIn  string                `json:"proxy_protocol_in"`
	ProxyProtocolOut string                `json:"proxy_protocol_out"`
	Upstream         RuleUpstreamConfig    `json:"upstream"`
}

type RuleTrafficDelta added in v0.1.18

type RuleTrafficDelta struct {
	RuleID         string `json:"rule_id"`
	UploadBytes    int64  `json:"upload_bytes"`
	DownloadBytes  int64  `json:"download_bytes"`
	TCPConnections int64  `json:"tcp_connections"`
	UDPPackets     int64  `json:"udp_packets"`
}

type RuleUpstreamConfig

type RuleUpstreamConfig struct {
	Type        string                 `json:"type"`
	Target      *TargetEndpoint        `json:"target,omitempty"`
	Scheduler   string                 `json:"scheduler,omitempty"`
	TargetGroup []TargetPriorityBucket `json:"target_group,omitempty"`
}

type RuntimeConfig

type RuntimeConfig struct {
	AppName             string
	ConfigFile          string
	ControlPlaneURL     string
	AgentID             string
	RegistrationToken   string
	EnrollmentToken     string
	AgentCredential     string
	AgentCredentialFile string
	ServiceName         string
	InstallDir          string
	DataplaneMode       string
	DataplaneInstanceID string
	LogLevel            string
	// contains filtered or unexported fields
}

func LoadRuntimeConfig

func LoadRuntimeConfig() (RuntimeConfig, error)

func LoadRuntimeConfigFromArgs

func LoadRuntimeConfigFromArgs(args []string) (RuntimeConfig, error)

type TargetEndpoint

type TargetEndpoint struct {
	ID      string `json:"id"`
	Host    string `json:"host"`
	Port    int    `json:"port"`
	Weight  int    `json:"weight,omitempty"`
	Enabled bool   `json:"enabled"`
}

type TargetMetricsPayload

type TargetMetricsPayload struct {
	RuleID              string `json:"rule_id"`
	TargetID            string `json:"target_id"`
	TCPConnections      int64  `json:"tcp_connections"`
	UDPPacketsPerSecond int64  `json:"udp_packets_per_second"`
	BandwidthBps        int64  `json:"bandwidth_bps"`
	UploadBytes         int64  `json:"upload_bytes"`
	DownloadBytes       int64  `json:"download_bytes"`
	LatencyMS           int64  `json:"latency_ms"`
}

type TargetPriorityBucket

type TargetPriorityBucket struct {
	Priority int              `json:"priority"`
	Targets  []TargetEndpoint `json:"targets"`
}

Jump to

Keyboard shortcuts

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