Documentation
¶
Overview ¶
Package flow implements the Flow component graph system. Flow configuration files are parsed from River, which contain a listing of components to run.
Components ¶
Each component has a set of arguments (River attributes and blocks) and optionally a set of exported fields. Components can reference the exports of other components using River expressions.
See the top-level component package for more information on components, and subpackages for defined components.
Component Health ¶
A component will have various health states during its lifetime:
- Unknown: The initial health state for new components.
- Healthy: A healthy component
- Unhealthy: An unhealthy component.
- Exited: A component which is no longer running.
Health states are paired with a time for when the health state was generated and a message providing more detail for the health state.
Components can report their own health states. The health state reported by a component is merged with the Flow-level health of that component: an error when evaluating the configuration for a component will always be reported as unhealthy until the next successful evaluation.
Component Evaluation ¶
The process of converting the River block associated with a component into the appropriate Go struct is called "component evaluation."
Components are only evaluated after all components they reference have been evaluated; cyclic dependencies are invalid.
If a component updates its Exports at runtime, other components which directly or indirectly reference the updated component will have their Arguments re-evaluated.
The arguments and exports for a component will be left in their last valid state if a component shuts down or is given an invalid config. This prevents a domino effect of a single failed component taking down other components which are otherwise healthy.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ComponentHealth ¶ added in v0.28.0
type ComponentHealth struct { State string `json:"state"` Message string `json:"message"` UpdatedTime time.Time `json:"updatedTime"` }
ComponentHealth represents the health of a component.
type ComponentInfo ¶ added in v0.28.0
type ComponentInfo struct { Name string `json:"name,omitempty"` Type string `json:"type,omitempty"` ID string `json:"id,omitempty"` Label string `json:"label,omitempty"` References []string `json:"referencesTo"` ReferencedBy []string `json:"referencedBy"` Health *ComponentHealth `json:"health"` Original string `json:"original"` Arguments json.RawMessage `json:"arguments,omitempty"` Exports json.RawMessage `json:"exports,omitempty"` DebugInfo json.RawMessage `json:"debugInfo,omitempty"` }
ComponentInfo represents a component in flow.
type File ¶
type File struct { Name string // File name given to ReadFile. Node *ast.File // Raw File node. // Components holds the list of raw River AST blocks describing components. // The Flow controller can interpret them. Components []*ast.BlockStmt ConfigBlocks []*ast.BlockStmt }
File holds the contents of a parsed Flow file.
type Flow ¶
type Flow struct {
// contains filtered or unexported fields
}
Flow is the Flow system.
func (*Flow) ComponentHandler ¶ added in v0.28.0
func (f *Flow) ComponentHandler() http.HandlerFunc
ComponentHandler returns an http.HandlerFunc which will delegate all requests to a component named by the first path segment
func (*Flow) ComponentInfos ¶ added in v0.28.0
func (c *Flow) ComponentInfos() []*ComponentInfo
ComponentInfos returns the component infos.
func (*Flow) ComponentJSON ¶ added in v0.28.0
func (f *Flow) ComponentJSON(w io.Writer, ci *ComponentInfo) error
ComponentJSON returns the json representation of the flow component.
func (*Flow) LoadFile ¶
LoadFile synchronizes the state of the controller with the current config file. Components in the graph will be marked as unhealthy if there was an error encountered during Load.
The controller will only start running components after Load is called once without any configuration errors.
type Options ¶
type Options struct { // Logger for components to use. A no-op logger will be created if this is // nil. Logger *logging.Logger // Tracer for components to use. A no-op tracer will be created if this is // nil. Tracer *tracing.Tracer // Directory where components can write data. Components will create // subdirectories for component-specific data. DataPath string // Reg is the prometheus register to use Reg prometheus.Registerer // HTTPListenAddr is the base address that the server is listening on. // The controller does not itself listen here, but some components // need to know this to set the correct targets. HTTPListenAddr string }
Options holds static options for a flow controller.
Directories
¶
Path | Synopsis |
---|---|
Package componenttest provides utilities for testing Flow components.
|
Package componenttest provides utilities for testing Flow components. |
internal
|
|
dag
Package dag defines a Directed Acyclic Graph.
|
Package dag defines a Directed Acyclic Graph. |
testcomponents
Package testcomponents contains components useful for testing.
|
Package testcomponents contains components useful for testing. |
Package tracing implements the tracing subsystem of Grafana Agent Flow.
|
Package tracing implements the tracing subsystem of Grafana Agent Flow. |