README
¶
package diagnose
This package is used to register and run agent diagnostics which validates various aspects of agent installation, configuration and run-time environment.
Running agent diagnose all
Details and command line options are specified in agent diagnose
command
You can run all registered diagnosis with the diagnose
command on the agent
The flare
command will also run registered diagnosis and output them in a diagnose.log
file.
Registering a new diagnose suite
All function and structures details can be found in loader.go file.
To register a diagnose suite one need to register a function which returns []diagnosis.Diagnosis
.
Example from loader.go file:
package connectivity
import (
...
"github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis"
...
)
...
func init() {
diagnosis.Register("connectivity-datadog-core-endpoints", diagnose)
}
...
func diagnose(diagCfg diagnosis.Config) []diagnosis.Diagnosis {
...
var diagnoses []diagnosis.Diagnosis
...
for _, domainResolver := range domainResolvers {
...
for _, apiKey := range domainResolver.GetAPIKeys() {
for _, endpointInfo := range endpointsInfo {
...
name := "Connectivity to " + logURL
if reportErr == nil {
diagnoses = append(diagnoses, diagnosis.Diagnosis{
Result: diagnosis.DiagnosisSuccess,
Name: name,
Diagnosis: fmt.Sprintf("Connectivity to `%s` is Ok\n%s", logURL, report),
})
} else {
diagnoses = append(diagnoses, diagnosis.Diagnosis{
Result: diagnosis.DiagnosisFail,
Name: name,
Diagnosis: fmt.Sprintf("Connection to `%s` failed\n%s", logURL, report),
Remediation: "Please validate Agent configuration and firewall to access " + logURL,
RawError: err,
})
}
}
}
}
return diagnoses
}
Context of a diagnose function execution
Normally, registered diagnose suite functions will be executed in context of the running agent service (or other services) but if Config.ForceLocal
configuration is specified the registered diagnose function will be executed in the context of agent diagnose CLI command (if possible).
Documentation
¶
Overview ¶
Package diagnose provides the diagnose functionality for the Agent.
Index ¶
- func ListStdOut(w io.Writer, diagCfg diagnosis.Config)
- func RegisterCheckDatadog(checkDatadog func() []diagnosis.Diagnosis) func(catalog *diagnosis.Catalog)
- func RegisterConnectivityAutodiscovery(catalog *diagnosis.Catalog)
- func RegisterConnectivityDatadogCoreEndpoints(diagCfg diagnosis.Config) func(catalog *diagnosis.Catalog)
- func RegisterConnectivityDatadogEventPlatform(catalog *diagnosis.Catalog)
- func RegisterPortConflict(catalog *diagnosis.Catalog)
- func RunDiagnose(diagCfg diagnosis.Config, getSuites func() []diagnosis.Suite) (*diagnosis.DiagnoseResult, error)
- func RunDiagnoseStdOut(w io.Writer, diagCfg diagnosis.Config, diagnoses *diagnosis.DiagnoseResult) error
- func RunInAgentProcess(diagCfg diagnosis.Config, deps SuitesDepsInAgentProcess) (*diagnosis.DiagnoseResult, error)
- func RunInCLIProcess(diagCfg diagnosis.Config, deps SuitesDepsInCLIProcess) (*diagnosis.DiagnoseResult, error)
- func RunLocalCheck(diagCfg diagnosis.Config, registries ...func(*diagnosis.Catalog)) (*diagnosis.DiagnoseResult, error)
- type SuitesDeps
- type SuitesDepsInAgentProcess
- type SuitesDepsInCLIProcess
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ListStdOut ¶
ListStdOut enumerates registered Diagnose suites and get their diagnoses for human consumption
func RegisterCheckDatadog ¶
func RegisterCheckDatadog(checkDatadog func() []diagnosis.Diagnosis) func(catalog *diagnosis.Catalog)
RegisterCheckDatadog registers the check-datadog diagnose suite.
func RegisterConnectivityAutodiscovery ¶
RegisterConnectivityAutodiscovery registers the connectivity-datadog-autodiscovery diagnose suite.
func RegisterConnectivityDatadogCoreEndpoints ¶
func RegisterConnectivityDatadogCoreEndpoints(diagCfg diagnosis.Config) func(catalog *diagnosis.Catalog)
RegisterConnectivityDatadogCoreEndpoints registers the connectivity-datadog-core-endpoints diagnose suite.
func RegisterConnectivityDatadogEventPlatform ¶
RegisterConnectivityDatadogEventPlatform registers the connectivity-datadog-event-platform diagnose suite.
func RegisterPortConflict ¶
RegisterPortConflict registers the port-conflict diagnose suite.
func RunDiagnose ¶
func RunDiagnose(diagCfg diagnosis.Config, getSuites func() []diagnosis.Suite) (*diagnosis.DiagnoseResult, error)
RunDiagnose runs diagnoses.
func RunDiagnoseStdOut ¶
func RunDiagnoseStdOut(w io.Writer, diagCfg diagnosis.Config, diagnoses *diagnosis.DiagnoseResult) error
RunDiagnoseStdOut runs the diagnose and outputs the results to the writer.
func RunInAgentProcess ¶
func RunInAgentProcess(diagCfg diagnosis.Config, deps SuitesDepsInAgentProcess) (*diagnosis.DiagnoseResult, error)
RunInAgentProcess runs diagnoses in the Agent process.
func RunInCLIProcess ¶
func RunInCLIProcess(diagCfg diagnosis.Config, deps SuitesDepsInCLIProcess) (*diagnosis.DiagnoseResult, error)
RunInCLIProcess run diagnoses in the CLI process.
func RunLocalCheck ¶
func RunLocalCheck(diagCfg diagnosis.Config, registries ...func(*diagnosis.Catalog)) (*diagnosis.DiagnoseResult, error)
RunLocalCheck runs locally the checks created by the registries.
Types ¶
type SuitesDeps ¶
type SuitesDeps struct { SenderManager sender.DiagnoseSenderManager Collector option.Option[collector.Component] SecretResolver secrets.Component WMeta option.Option[workloadmeta.Component] AC autodiscovery.Component Tagger tagger.Component }
SuitesDeps stores the dependencies for the diagnose suites.
func NewSuitesDeps ¶
func NewSuitesDeps( senderManager sender.DiagnoseSenderManager, collector option.Option[collector.Component], secretResolver secrets.Component, wmeta option.Option[workloadmeta.Component], ac autodiscovery.Component, tagger tagger.Component, ) SuitesDeps
NewSuitesDeps returns a new SuitesDeps.
func (*SuitesDeps) GetWMeta ¶
func (s *SuitesDeps) GetWMeta() option.Option[workloadmeta.Component]
GetWMeta returns the workload metadata instance
type SuitesDepsInAgentProcess ¶
type SuitesDepsInAgentProcess struct {
// contains filtered or unexported fields
}
SuitesDepsInAgentProcess stores the dependencies for the diagnose suites when running the Agent Process.
func NewSuitesDepsInAgentProcess ¶
func NewSuitesDepsInAgentProcess(collector collector.Component) SuitesDepsInAgentProcess
NewSuitesDepsInAgentProcess returns a new instance of SuitesDepsInAgentProcess.
type SuitesDepsInCLIProcess ¶
type SuitesDepsInCLIProcess struct { AC autodiscovery.Component // contains filtered or unexported fields }
SuitesDepsInCLIProcess stores the dependencies for the diagnose suites when running the CLI Process.
func NewSuitesDepsInCLIProcess ¶
func NewSuitesDepsInCLIProcess( senderManager sender.DiagnoseSenderManager, secretResolver secrets.Component, wmeta option.Option[workloadmeta.Component], ac autodiscovery.Component, tagger tagger.Component, ) SuitesDepsInCLIProcess
NewSuitesDepsInCLIProcess returns a new instance of SuitesDepsInCLIProcess.
Directories
¶
Path | Synopsis |
---|---|
Package connectivity contains logic for connectivity troubleshooting between the Agent and Datadog endpoints.
|
Package connectivity contains logic for connectivity troubleshooting between the Agent and Datadog endpoints. |
Package diagnosis contains types used by the "agent diagnose" command.
|
Package diagnosis contains types used by the "agent diagnose" command. |
Package ports provides a diagnose suite for the ports used in the agent configuration
|
Package ports provides a diagnose suite for the ports used in the agent configuration |