Documentation ¶
Index ¶
Constants ¶
const DeadNodeAppenderName = "deadNode"
const IstioAppenderName = "istio"
const (
// ResponseTimeAppenderName uniquely identifies the appender: responseTime
ResponseTimeAppenderName = "responseTime"
)
const (
SecurityPolicyAppenderName = "securityPolicy"
)
const ServiceEntryAppenderName = "serviceEntry"
const SidecarsCheckAppenderName = "sidecarsCheck"
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 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) and for which there is no incoming 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
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
type PolicyRates ¶
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