appender

package
v1.32.0-snapshot.0 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2021 License: Apache-2.0 Imports: 17 Imported by: 3

Documentation

Index

Constants

View Source
const (
	AggregateNodeAppenderName = "aggregateNode"
)
View Source
const DeadNodeAppenderName = "deadNode"
View Source
const HealthConfigAppenderName = "healthConfig"
View Source
const IdleNodeAppenderName = "idleNode"
View Source
const IstioAppenderName = "istio"
View Source
const (
	// ResponseTimeAppenderName uniquely identifies the appender: responseTime
	ResponseTimeAppenderName = "responseTime"
)
View Source
const (
	SecurityPolicyAppenderName = "securityPolicy"
)
View Source
const ServiceEntryAppenderName = "serviceEntry"
View Source
const SidecarsCheckAppenderName = "sidecarsCheck"

Variables

This section is empty.

Functions

func ParseAppenders

func ParseAppenders(o graph.TelemetryOptions) []graph.Appender

ParseAppenders determines which appenders should run for this graphing request

Types

type AggregateNodeAppender added in v1.21.0

type AggregateNodeAppender struct {
	Aggregate          string
	AggregateValue     string
	GraphType          string
	InjectServiceNodes bool
	Namespaces         map[string]graph.NamespaceInfo
	QueryTime          int64 // unix time in seconds
	Service            string
}

AggregateNodeAppender is responsible for injecting aggregate nodes into the graph to gain visibility into traffic aggregations for a user-specfied metric attribute.

func (AggregateNodeAppender) AppendGraph added in v1.21.0

func (a AggregateNodeAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (AggregateNodeAppender) Name added in v1.21.0

func (a AggregateNodeAppender) Name() string

Name implements Appender

type DeadNodeAppender

type DeadNodeAppender struct{}

DeadNodeAppender is responsible for removing from the graph unwanted nodes:

  • nodes for which there is no traffic reported and a backing workload that can't be found (presumably removed from K8S). (kiali-621)
  • this includes "unknown"
  • service nodes that are not service entries (kiali-1526), egress handlers and for which there is no incoming traffic or outgoing edges error traffic and no outgoing edges (kiali-1326).

Name: deadNode

func (DeadNodeAppender) AppendGraph

func (a DeadNodeAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (DeadNodeAppender) Name

func (a DeadNodeAppender) Name() string

Name implements Appender

type HealthConfigAppender added in v1.30.0

type HealthConfigAppender struct{}

HealthConfigAppenderis responsible for adding health configuration annotation to the graph. Name: healthConfig

func (HealthConfigAppender) AppendGraph added in v1.30.0

func (a HealthConfigAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (HealthConfigAppender) Name added in v1.30.0

func (a HealthConfigAppender) Name() string

Name implements Appender

type IdleNodeAppender added in v1.29.0

type IdleNodeAppender struct {
	GraphType          string
	InjectServiceNodes bool // This appender adds idle services only when service nodes are injected or graphType=service
	IsNodeGraph        bool // This appender does not operate on node detail graphs because we want to focus on the specific node.
}

IdleNodeAppender looks for services that have never seen request traffic. It adds nodes to represent the idle/unused definitions. The added node types depend on the graph type and/or labeling on the definition. Name: idleNode

func (IdleNodeAppender) AppendGraph added in v1.29.0

func (a IdleNodeAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (IdleNodeAppender) Name added in v1.29.0

func (a IdleNodeAppender) Name() string

Name implements Appender

type IstioAppender

type IstioAppender struct{}

IstioAppender is responsible for badging nodes with special Istio significance: - CircuitBreaker: n.Metadata[HasCB] = true - VirtualService: n.Metadata[HasVS] = true Name: istio

func (IstioAppender) AppendGraph

func (a IstioAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (IstioAppender) Name

func (a IstioAppender) Name() string

Name implements Appender

type PolicyRates

type PolicyRates map[string]float64

type ResponseTimeAppender

type ResponseTimeAppender struct {
	GraphType          string
	InjectServiceNodes bool
	Namespaces         graph.NamespaceInfoMap
	Quantile           float64
	QueryTime          int64 // unix time in seconds
}

ResponseTimeAppender is responsible for adding responseTime information to the graph. ResponseTime is represented as a percentile value. The default is 95th percentile, which means that 95% of requests executed in no more than the resulting milliseconds. ResponeTime values are reported in milliseconds. Response Times are reported using destination proxy telemetry, when available, which should remove network latency fluctuations. TODO: Should we report both source and destination when possible? Name: responseTime

func (ResponseTimeAppender) AppendGraph

func (a ResponseTimeAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (ResponseTimeAppender) Name

func (a ResponseTimeAppender) Name() string

Name implements Appender

type SecurityPolicyAppender

type SecurityPolicyAppender struct {
	GraphType          string
	InjectServiceNodes bool
	Namespaces         map[string]graph.NamespaceInfo
	QueryTime          int64 // unix time in seconds
}

SecurityPolicyAppender is responsible for adding securityPolicy information to the graph. The appender currently reports only mutual_tls security although is written in a generic way. Name: securityPolicy

func (SecurityPolicyAppender) AppendGraph

func (a SecurityPolicyAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (SecurityPolicyAppender) Name

func (a SecurityPolicyAppender) Name() string

Name implements Appender

type ServiceEntryAppender

type ServiceEntryAppender struct {
	AccessibleNamespaces map[string]time.Time
	GraphType            string // This appender does not operate on service graphs because it adds workload nodes.
}

ServiceEntryAppender is responsible for identifying service nodes that are defined in Istio as a serviceEntry. A single serviceEntry can define multiple hosts and as such multiple service nodes may map to different hosts of a single serviceEntry. We'll call these "se-service" nodes. The appender handles this in the following way:

For Each "se-service" node
   if necessary, create an aggregate serviceEntry node ("se-aggregate")
     -- an "se-aggregate" is a service node with isServiceEntry set in the metadata
     -- an "se-aggregate" is namespace-specific. This can lead to mutiple serviceEntry nodes
        in a multi-namespace graph. This makes some sense because serviceEntries are "exported"
        to individual namespaces.
   aggregate the "se-service" node into the "se-aggregate" node
     -- incoming edges
     -- outgoing edges (unusual but can have outgoing edge to egress gateway)
     -- per-host traffic (in the metadata)
   remove the "se-service" node from the trafficMap
   add any new "se-aggregate" node to the trafficMap

Doc Links - https://istio.io/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry - https://istio.io/docs/examples/advanced-gateways/wildcard-egress-hosts/

A note about wildcard hosts. External service entries allow for prefix wildcarding such that many different service requests may be handled by the same service entry definition. For example, host = *.wikipedia.com would match requests for en.wikipedia.com and de.wikipedia.com. The Istio telemetry produces only one "se-service" node with the wilcard host as the destination_service_name.

func (ServiceEntryAppender) AppendGraph

func (a ServiceEntryAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (ServiceEntryAppender) Name

func (a ServiceEntryAppender) Name() string

Name implements Appender

type SidecarsCheckAppender

type SidecarsCheckAppender struct {
	AccessibleNamespaces map[string]time.Time
}

SidecarsCheckAppender flags nodes whose backing workloads are missing at least one Envoy sidecar. Note that a node with no backing workloads is not flagged. Name: sidecarsCheck

func (SidecarsCheckAppender) AppendGraph

func (a SidecarsCheckAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, namespaceInfo *graph.AppenderNamespaceInfo)

AppendGraph implements Appender

func (SidecarsCheckAppender) Name

func (a SidecarsCheckAppender) Name() string

Name implements Appender

Jump to

Keyboard shortcuts

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