appender

package
v1.24.0-snapshot.1 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2020 License: Apache-2.0 Imports: 18 Imported by: 3

Documentation

Index

Constants

View Source
const (
	AggregateNodeAppenderName = "aggregateNode"
)
View Source
const DeadNodeAppenderName = "deadNode"
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"
View Source
const UnusedNodeAppenderName = "unusedNode"

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 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. 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{}

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

type UnusedNodeAppender

type UnusedNodeAppender struct {
	GraphType          string
	InjectServiceNodes bool // This appender addes unused services only when service node 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.
}

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

func (UnusedNodeAppender) AppendGraph

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

AppendGraph implements Appender

func (UnusedNodeAppender) Name

func (a UnusedNodeAppender) Name() string

Name implements Appender

Jump to

Keyboard shortcuts

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