Documentation
¶
Overview ¶
Package googlecloudlogk8snode_contract defines the contract for the googlecloudlogk8snode task.
Index ¶
Constants ¶
const (
// TaskIDPrefix is the prefix for all task IDs in this package.
TaskIDPrefix = "cloud.google.com/log/k8s-node/"
)
Variables ¶
var ( // RevisionStateComponentRunning represents that a node component is running successfully. RevisionStateComponentRunning = style.MustRegisterRevisionState( "Component is running", "check_circle", "The node component (e.g., kubelet, kube-proxy) is running normally.", style.MustForceConvertSRGBHex("#00cc66"), pb.RevisionStateStyle_REVISION_STATE_STYLE_NORMAL, ) // RevisionStateComponentTerminated represents that a node component has terminated or stopped. RevisionStateComponentTerminated = style.MustRegisterRevisionState( "Component is terminated", "cancel", "The node component has terminated or stopped.", style.MustForceConvertSRGBHex("#ff3333"), pb.RevisionStateStyle_REVISION_STATE_STYLE_DELETED, ) )
var ClusterIdentityTaskID = taskid.NewDefaultImplementationID[k8scommon.GoogleCloudClusterIdentity](TaskIDPrefix + "cluster-identity")
ClusterIdentityTaskID is the task id for aliasing the cluster identity.
var ContainerIDDiscoveryTaskID = taskid.NewDefaultImplementationID[k8saudit.ContainerIDToContainerIdentity](TaskIDPrefix + "container-id-discovery")
var ContainerdLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "containerd-log-filter")
ContainerdLogFilterTaskID is the ID for a task to filter only the logs for containerd.
var ContainerdLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "containerd-log-group")
ContainerdLogGroupTaskID is the ID for a task to group containerd related logs based on instance names.
var ContainerdLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "containerd-log-timeline-mapper")
ContainerdLogLogToTimelineMapperTaskID is the ID for a task to add events or revisions based on containerd logs.
var DefaultNodeLogParser = logutil.NewSelectorLogParser[NodeLogContext]( logutil.NewMultiTextLogParser( logutil.NewJsonlTextParser(), logutil.NewKLogTextParser(true), logutil.NewLogfmtTextParser(), &logutil.FallbackRawTextLogParser{}, ), logutil.ParserRule[NodeLogContext]{ Match: func(ctx NodeLogContext) bool { return ctx.SyslogIdentifier == "kubelet" }, Parser: logutil.NewKLogTextParser(true), }, logutil.ParserRule[NodeLogContext]{ Match: func(ctx NodeLogContext) bool { return ctx.SyslogIdentifier == "containerd" }, Parser: logutil.NewLogfmtTextParser(), }, )
DefaultNodeLogParser is the default SelectorLogParser for GKE node logs.
var KubeletLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "kubelet-log-filter")
KubeletLogFilterTaskID is the ID for a task to filter only the logs for kubelet.
var KubeletLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "kubelet-log-group")
KubeletLogGroupTaskID is the ID for a task to group kubelet related logs based on instance names.
var KubeletLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "kubelet-log-timeline-mapper")
KubeletLogLogToTimelineMapperTaskID is the ID for a task to add events or revisions based on kubelet logs.
var ListLogEntriesTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "query")
ListLogEntriesTaskID is the task id for the task that queries k8s node logs from Cloud Logging.
var LogIngesterTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "log-ingester")
LogIngesterTaskID is the task ID to finalize the logs to be included in the final output.
var (
LogTypeNode = style.MustRegisterLogType("k8s node", "Kubernetes Node Logs", style.MustForceConvertSRGBHex("#0077CC"), style.ColorWhite)
)
The following block defines the registered timeline style LogTypes. These are registered as package-level variables so they are initialized immediately when this package is imported.
var NodeNameDiscoveryTaskID = taskid.NewDefaultImplementationID[[]string](TaskIDPrefix + "node-name-discovery")
NodeNameDiscoveryTaskID is the task ID for extracting node names from Kubernetes node logs.
var OtherLogFilterTaskID = taskid.NewDefaultImplementationID[[]*log.Log](TaskIDPrefix + "other-log-filter")
OtherLogFilterTaskID is the task ID for filtering other logs.
var OtherLogGroupTaskID = taskid.NewDefaultImplementationID[inspectiontaskbase.LogGroupMap](TaskIDPrefix + "other-log-group")
OtherLogGroupTaskID is the ID for a task to group other related logs based on instance names and component name.
var OtherLogLogToTimelineMapperTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "other-log-timeline-mapper")
OtherLogLogToTimelineMapperTaskID is the task ID for a task to add events or revisions based on other logs.
var PodSandboxIDDiscoveryTaskID = taskid.NewDefaultImplementationID[patternfinder.PatternFinder[*PodSandboxIDInfo]](TaskIDPrefix + "containerd-id-discovery")
PodSandboxIDDiscoveryTaskID is the ID for a task to extract pod sandbox IDs for the other parsers to correlate a log to Pods.
var TailTaskID = taskid.NewDefaultImplementationID[struct{}](TaskIDPrefix + "tail")
TailTaskID is a nop task just to require all child parsers.
var ( TimelineTypeNodeComponent = style.MustRegisterTimelineType( "node-component", "Logs of non-containerized system components on the node", "manufacturing", 0.6, style.ColorWhite, style.ColorBlack, style.MustForceConvertSRGBHex("#0077CC"), style.ColorWhite, true, 6000, style.AlphabeticalSortPolicy(), ) )
The following block defines the registered timeline style TimelineTypes. These are registered as package-level variables so they are initialized immediately when this package is imported.
Functions ¶
func MustNodeComponentTimeline ¶
func MustNodeComponentTimeline(ctx context.Context, nodeTimeline *khifilev6.TimelinePath, componentName string) *khifilev6.TimelinePath
MustNodeComponentTimeline returns the timeline path for a node component (e.g., containerd, kubelet).
Types ¶
type K8sNodeLogCommonFieldSet ¶
type K8sNodeLogCommonFieldSet struct {
Message *logutil.ParseStructuredLogResult
Component string
NodeName string
}
K8sNodeLogCommonFieldSet contains the common parsed metadata from a Kubernetes node log.
func ExtractK8sNodeLogCommon ¶
func ExtractK8sNodeLogCommon(reader *structured.NodeReader, parser *logutil.SelectorLogParser[NodeLogContext]) (K8sNodeLogCommonFieldSet, error)
ExtractK8sNodeLogCommon extracts K8sNodeLogCommonFieldSet from a NodeReader.
type K8sNodeParserType ¶
type K8sNodeParserType string
K8sNodeParserType defines the parser category for node logs.
var ( // Containerd identifies containerd logs. Containerd K8sNodeParserType = "containerd" // Kubelet identifies kubelet logs. Kubelet K8sNodeParserType = "kubelet" // Other identifies other node component logs. Other K8sNodeParserType = "other" )
func ExtractK8sNodeParserType ¶
func ExtractK8sNodeParserType(reader *structured.NodeReader) (K8sNodeParserType, error)
ExtractK8sNodeParserType extracts the K8sNodeParserType from a NodeReader without parsing the log message.
type NodeLogContext ¶
NodeLogContext defines the contextual metadata of a node log used for parser routing.