Documentation ¶
Index ¶
- Constants
- func AutoAttachResultsDir(plugins []*manifest.Manifest, resultsDir string)
- func FilterNamespaces(kubeClient kubernetes.Interface, filter string, defaultNS ...string) ([]string, error)
- func QueryCluster(restConf *rest.Config, cfg *config.Config) error
- func QueryHostData(kubeClient kubernetes.Interface, recorder *QueryRecorder, cfg *config.Config) error
- func QueryPodLogs(kubeClient kubernetes.Interface, recorder *QueryRecorder, ns string, ...) error
- func QueryResources(client *dynamic.APIHelper, recorder *QueryRecorder, ...) error
- func QueryServerData(kubeClient kubernetes.Interface, recorder *QueryRecorder, cfg *config.Config) error
- func Run(restConf *rest.Config, cfg *config.Config) (errCount int)
- func SaveHealthSummary(tarballRootDir string) error
- func SerializeObj(obj interface{}, outpath string, file string) error
- type ClusterSummary
- type HealthInfo
- type HealthInfoDetails
- type LogHitCounter
- type LogPattern
- type LogPatterns
- type LogSummary
- type QueryData
- type QueryRecorder
- type RunInfo
Constants ¶
const ( // NSResourceLocation is the place under which namespaced API resources (pods, etc) are stored NSResourceLocation = "resources/ns" // ClusterResourceLocation is the place under which non-namespaced API resources (nodes, etc) are stored ClusterResourceLocation = "resources/cluster" // HostsLocation is the place under which host information (configz, healthz) is stored HostsLocation = "hosts" )
const ( // MetaLocation is the place under which snapshot metadata (query times, config) is stored // Also stored in query.go MetaLocation = "meta" )
const ( // PodLogsLocation is the location within the results tarball where pod // information is stored. PodLogsLocation = "podlogs" )
Variables ¶
This section is empty.
Functions ¶
func AutoAttachResultsDir ¶ added in v0.56.6
AutoAttachResultsDir will either add the volumemount for the results dir or modify the existing one to have the right path set.
func FilterNamespaces ¶
func FilterNamespaces(kubeClient kubernetes.Interface, filter string, defaultNS ...string) ([]string, error)
FilterNamespaces filter the list of namespaces according to the filter string. If unable to query all the namespaces, an optional defaultNS can be provided which will be added to the returned list if it matches the filter.
func QueryCluster ¶ added in v0.56.0
Query cluster runs multiple queries against the cluster in order to obtain debug information.
func QueryHostData ¶ added in v0.14.2
func QueryHostData(kubeClient kubernetes.Interface, recorder *QueryRecorder, cfg *config.Config) error
QueryHostData gets the host data and records it.
func QueryPodLogs ¶ added in v0.14.2
func QueryPodLogs(kubeClient kubernetes.Interface, recorder *QueryRecorder, ns string, cfg *config.Config, visitedPods map[string]struct{}) error
QueryPodLogs gets the pod logs for each pod in the given namespace. If namespace is not provided, get pod logs using field selectors. VisitedPods will eliminate duplicate pods when execute overlapping queries, e.g. query by namespaces and query by fieldSelectors.
func QueryResources ¶ added in v0.14.2
func QueryResources( client *dynamic.APIHelper, recorder *QueryRecorder, resources []schema.GroupVersionResource, ns *string, cfg *config.Config) error
QueryResources will query all the intended resources. If given a non-nil namespace it queries only namespaced objects; non-namespaced otherwise. Writing them out to <outputDir>/resources/ns/<ns>/*.json or <outputDir>/resources/cluster/*.json.
func QueryServerData ¶ added in v0.14.2
func QueryServerData(kubeClient kubernetes.Interface, recorder *QueryRecorder, cfg *config.Config) error
QueryServerData gets the server version and server group data and records it.
func SaveHealthSummary ¶ added in v0.56.2
SaveHealthSummary loads data from - CoreNodesFile in ClusterResourceLocation in tarballRootDir - ServerVersionFile in tarballRootDir - CorePodsFile in NSResourceLocation in tarballRootDir Extract health information, and saves the result as json to results.ClusterHealthFilePath() in tarballRootDir SaveHealthSummary assumes that all the directories including MetaLocation have already been created
func SerializeObj ¶
SerializeObj will write out an object
Types ¶
type ClusterSummary ¶ added in v0.56.2
type ClusterSummary struct { NodeHealth HealthInfo `json:"node_health" yaml:"node_health"` PodHealth HealthInfo `json:"pod_health" yaml:"pod_health"` APIVersion string `json:"api_version" yaml:"api_version"` ErrorInfo LogSummary `json:"error_summary" yaml:"error_summary"` }
func ReadHealthSummary ¶ added in v0.56.2
func ReadHealthSummary(tarballRootDir string) (ClusterSummary, error)
ReadHealthSummary reads the core_v1_nodes.json file from ClusterResourceLocation and returns a summary of the health fo the cluster, ready to be saved tarballRootDir is the directory that will be used to provide the contents of the tarball
type HealthInfo ¶ added in v0.56.2
type HealthInfo struct { Total int `json:"total_nodes" yaml:"total_nodes"` Healthy int `json:"healthy_nodes" yaml:"healthy_nodes"` Details []HealthInfoDetails `json:"details,omitempty" yaml:"details,omitempty"` }
func ReadPodHealth ¶ added in v0.56.2
func ReadPodHealth(r *results.Reader) (HealthInfo, error)
ReadPodHealth lists all the directories in path.Join(tarballRootDir, NSResourceLocation) In each, check if it contains the file CorePodFile, if so, read each as v1.PodList, And loop through _, pod := range podList.Items, and scan _, condition := range pod.Status.Conditions and check if condition.Status == v1.ConditionTrue: for each of these, if they are false, add the condition.Reason and condition.Message to a string
type HealthInfoDetails ¶ added in v0.56.2
type HealthInfoDetails struct { Name string `json:"name" yaml:"name"` Healthy bool `json:"healthy" yaml:"healthy"` Ready string `json:"ready" yaml:"ready"` Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` Message string `json:"message,omitempty" yaml:"message,omitempty"` Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` }
type LogHitCounter ¶ added in v0.56.2
type LogPattern ¶ added in v0.56.2
type LogPattern struct {
// contains filtered or unexported fields
}
LogPattern is a struct that defines a class of log patterns, a LogPatterns instance will contain one or more file name patterns, stored in filePathPattern and another list of patterns that are meant to be matched against the content of files whose name matches the filePathPattern. both filePathPattern and matchPatterns are one or more compiled regular expressions
A match for a pattern defined in LogPatterns will happen if: a certain file has a path that matches at least one of the regex in filePathPattern and at least one of the lines in the content of this file matches at least one of the regex patterns in matchPattern
type LogPatterns ¶ added in v0.56.2
type LogPatterns map[string]LogPattern
LogPatterns maps the name of a set of patterns to its components The LogPattern structure defines the components of a set of patterns
func GetDefaultLogPatterns ¶ added in v0.56.2
func GetDefaultLogPatterns() LogPatterns
GetDefaultLogPatterns returns the default set of log patterns that can be used with ReadLogSummary
type LogSummary ¶ added in v0.56.2
type LogSummary map[string]LogHitCounter
func ReadLogSummary ¶ added in v0.56.2
func ReadLogSummary(r *results.Reader, patterns LogPatterns) (LogSummary, error)
ReadLogSummary will recursively scan the tarballRootDir looking for files with names matching pre-defined regular expressions and scanning the content of these files for pre-defined error matching regexes and counting the number of hits The return value is a map of results with key the type of condition and the values of the map are the file names and the hit count the patterns parameter is a list of LogPatterns objects that define what to scan for The GetDefaultLogPatterns can be used to obtain such list. Errors encountered while scanning the directory are logged but no error will be returned.
func ReadLogSummaryWithDefaultPatterns ¶ added in v0.56.2
func ReadLogSummaryWithDefaultPatterns(r *results.Reader) (LogSummary, error)
ReadLogSummaryWithDefaultPatterns is a wrapper to ReadLogSummary + GetDefaultLogPatterns
type QueryData ¶ added in v0.11.0
type QueryData struct { QueryObj string `json:"queryobj,omitempty"` Namespace string `json:"namespace,omitempty"` ElapsedTime string `json:"time,omitempty"` Error error `json:"error,omitempty"` }
QueryData captures the results of the run for post-processing
type QueryRecorder ¶ added in v0.9.0
type QueryRecorder struct {
// contains filtered or unexported fields
}
QueryRecorder records a sequence of queries
func NewQueryRecorder ¶ added in v0.9.0
func NewQueryRecorder() *QueryRecorder
NewQueryRecorder returns a new empty QueryRecorder
func (*QueryRecorder) DumpQueryData ¶ added in v0.9.0
func (q *QueryRecorder) DumpQueryData(filepath string) error
DumpQueryData writes query information out to a file at the give filepath
func (*QueryRecorder) RecordQuery ¶ added in v0.9.0
func (q *QueryRecorder) RecordQuery(name string, namespace string, duration time.Duration, recerr error)
RecordQuery transcribes a query by name, namespace, duration and error