Documentation
¶
Index ¶
- Constants
- func LoadCollectors(cfg *config.Config, tools dcos.Tooler, client *http.Client) ([]collector.Collector, error)
- func NewRouter(dt *Dt) *mux.Router
- func StartPullWithInterval(dt *Dt)
- type CommandProvider
- type DiagnosticsJob
- type Dt
- type FileProvider
- type HTTPProvider
- type HealthResponseValues
- type LogProviders
- type MonitoringResponse
- func (mr *MonitoringResponse) GetAllUnits() UnitsResponseJSONStruct
- func (mr *MonitoringResponse) GetLastUpdatedTime() string
- func (mr *MonitoringResponse) GetMasterAgentNodes() ([]dcos.Node, []dcos.Node, error)
- func (mr *MonitoringResponse) GetNodeByID(nodeIP string) (NodeResponseFieldsStruct, error)
- func (mr *MonitoringResponse) GetNodeUnitByNodeIDUnitID(nodeIP, unitID string) (HealthResponseValues, error)
- func (mr *MonitoringResponse) GetNodeUnitsID(nodeIP string) (UnitsResponseJSONStruct, error)
- func (mr *MonitoringResponse) GetNodes() NodesResponseJSONStruct
- func (mr *MonitoringResponse) GetNodesForUnit(unitName string) (NodesResponseJSONStruct, error)
- func (mr *MonitoringResponse) GetSpecificNodeForUnit(unitName, nodeIP string) (NodeResponseFieldsWithErrorStruct, error)
- func (mr *MonitoringResponse) GetUnit(unitName string) (UnitResponseFieldsStruct, error)
- func (mr *MonitoringResponse) UpdateMonitoringResponse(r *MonitoringResponse)
- type NodeResponseFieldsStruct
- type NodeResponseFieldsWithErrorStruct
- type NodesResponseJSONStruct
- type SystemdUnits
- type UnitPropertiesResponse
- type UnitResponseFieldsStruct
- type UnitsHealthResponseJSONStruct
- type UnitsResponseJSONStruct
Constants ¶
const ( // All stands for collecting logs from all discovered nodes. All = "all" // Masters stand for collecting from discovered master nodes. Masters = "masters" // Agents stand for collecting from discovered agent/agent_public nodes. Agents = "agents" )
const ( GoosWindows = "windows" GoosDarwin = "darwin" )
Variables ¶
This section is empty.
Functions ¶
func LoadCollectors ¶
func StartPullWithInterval ¶
func StartPullWithInterval(dt *Dt)
StartPullWithInterval will start to pull a DC/OS cluster health status
Types ¶
type CommandProvider ¶
CommandProvider is a local command to execute.
type DiagnosticsJob ¶
type DiagnosticsJob struct { sync.RWMutex Cfg *config.Config DCOSTools dcos.Tooler Transport http.RoundTripper Running bool Status string Errors []string LastBundlePath string JobStarted time.Time JobEnded time.Time JobProgressPercentage float32 // This vector is used to collect the HTTP response times of all endpoints. FetchPrometheusVector prometheus.ObserverVec // contains filtered or unexported fields }
DiagnosticsJob is the main structure for a logs collection job.
func (*DiagnosticsJob) Init ¶
func (j *DiagnosticsJob) Init() error
Init will prepare diagnostics job, read config files etc.
type Dt ¶
type Dt struct { Cfg *config.Config DtDCOSTools dcos.Tooler DtDiagnosticsJob *DiagnosticsJob BundleHandler rest.BundleHandler ClusterBundleHandler *rest.ClusterBundleHandler RunPullerChan chan bool RunPullerDoneChan chan bool SystemdUnits *SystemdUnits MR *MonitoringResponse }
Dt is a struct of dependencies used in dcos-diagnostics code. There are 2 implementations, the one runs on a real system and the one used for testing.
type FileProvider ¶
FileProvider is a local file provider.
type HTTPProvider ¶
HTTPProvider is a provider for fetching an HTTP endpoint.
type HealthResponseValues ¶
type HealthResponseValues struct { UnitID string `json:"id"` UnitHealth dcos.Health `json:"health"` UnitOutput string `json:"output"` UnitTitle string `json:"description"` Help string `json:"help"` PrettyName string `json:"name"` }
HealthResponseValues is a health values json response.
type LogProviders ¶
type LogProviders struct { HTTPEndpoints []HTTPProvider LocalFiles []FileProvider LocalCommands []CommandProvider }
LogProviders a structure defines a list of Providers
type MonitoringResponse ¶
type MonitoringResponse struct { sync.RWMutex Units map[string]dcos.Unit Nodes map[string]dcos.Node UpdatedTime time.Time }
MonitoringResponse top level global variable to store the entire units/nodes status tree.
func (*MonitoringResponse) GetAllUnits ¶
func (mr *MonitoringResponse) GetAllUnits() UnitsResponseJSONStruct
GetAllUnits returns all systemd units from status tree.
func (*MonitoringResponse) GetLastUpdatedTime ¶
func (mr *MonitoringResponse) GetLastUpdatedTime() string
GetLastUpdatedTime returns timestamp of latest updated monitoring response.
func (*MonitoringResponse) GetMasterAgentNodes ¶
GetMasterAgentNodes returns a list of master and agent nodes available in status tree.
func (*MonitoringResponse) GetNodeByID ¶
func (mr *MonitoringResponse) GetNodeByID(nodeIP string) (NodeResponseFieldsStruct, error)
GetNodeByID returns a node by IP address from a status tree.
func (*MonitoringResponse) GetNodeUnitByNodeIDUnitID ¶
func (mr *MonitoringResponse) GetNodeUnitByNodeIDUnitID(nodeIP, unitID string) (HealthResponseValues, error)
GetNodeUnitByNodeIDUnitID returns a Unit status by node IP address and Unit id.
func (*MonitoringResponse) GetNodeUnitsID ¶
func (mr *MonitoringResponse) GetNodeUnitsID(nodeIP string) (UnitsResponseJSONStruct, error)
GetNodeUnitsID returns a Unit status for a given node from status tree.
func (*MonitoringResponse) GetNodes ¶
func (mr *MonitoringResponse) GetNodes() NodesResponseJSONStruct
GetNodes gets all available nodes in status tree.
func (*MonitoringResponse) GetNodesForUnit ¶
func (mr *MonitoringResponse) GetNodesForUnit(unitName string) (NodesResponseJSONStruct, error)
GetNodesForUnit get all hosts for a specific Unit available in status tree.
func (*MonitoringResponse) GetSpecificNodeForUnit ¶
func (mr *MonitoringResponse) GetSpecificNodeForUnit(unitName, nodeIP string) (NodeResponseFieldsWithErrorStruct, error)
GetSpecificNodeForUnit gets a specific notFoundError{nodeIP}e.
func (*MonitoringResponse) GetUnit ¶
func (mr *MonitoringResponse) GetUnit(unitName string) (UnitResponseFieldsStruct, error)
GetUnit gets a specific Unit from a status tree.
func (*MonitoringResponse) UpdateMonitoringResponse ¶
func (mr *MonitoringResponse) UpdateMonitoringResponse(r *MonitoringResponse)
UpdateMonitoringResponse will update the status tree.
type NodeResponseFieldsStruct ¶
type NodeResponseFieldsStruct struct { HostIP string `json:"host_ip"` NodeHealth dcos.Health `json:"health"` NodeRole string `json:"role"` }
NodeResponseFieldsStruct contains a response from a node.
type NodeResponseFieldsWithErrorStruct ¶
type NodeResponseFieldsWithErrorStruct struct { HostIP string `json:"host_ip"` NodeHealth dcos.Health `json:"health"` NodeRole string `json:"role"` UnitOutput string `json:"output"` Help string `json:"help"` }
NodeResponseFieldsWithErrorStruct contains node response with errors.
type NodesResponseJSONStruct ¶
type NodesResponseJSONStruct struct {
Array []*NodeResponseFieldsStruct `json:"nodes"`
}
NodesResponseJSONStruct contains an array of responses from nodes.
type SystemdUnits ¶
SystemdUnits used to make GetUnitsProperties thread safe.
func (*SystemdUnits) GetUnits ¶
func (s *SystemdUnits) GetUnits(tools dcos.Tooler) (allUnits []HealthResponseValues, err error)
GetUnits returns a list of found unit properties.
func (*SystemdUnits) GetUnitsProperties ¶
func (s *SystemdUnits) GetUnitsProperties(tools dcos.Tooler) (healthReport UnitsHealthResponseJSONStruct, err error)
GetUnitsProperties return a structured units health response of UnitsHealthResponseJsonStruct type.
type UnitPropertiesResponse ¶
type UnitPropertiesResponse struct { ID string `mapstructure:"Id"` LoadState string ActiveState string SubState string Description string ExecMainStatus int InactiveExitTimestampMonotonic uint64 ActiveEnterTimestampMonotonic uint64 ActiveExitTimestampMonotonic uint64 InactiveEnterTimestampMonotonic uint64 }
UnitPropertiesResponse is a structure to unmarshal dbus.GetunitProperties response
func (*UnitPropertiesResponse) CheckUnitHealth ¶
func (u *UnitPropertiesResponse) CheckUnitHealth() (dcos.Health, string, error)
CheckUnitHealth tells if the Unit is healthy
type UnitResponseFieldsStruct ¶
type UnitResponseFieldsStruct struct { UnitID string `json:"id"` PrettyName string `json:"name"` UnitHealth dcos.Health `json:"health"` UnitTitle string `json:"description"` }
UnitResponseFieldsStruct contains systemd unit health report.
type UnitsHealthResponseJSONStruct ¶
type UnitsHealthResponseJSONStruct struct { Array []HealthResponseValues `json:"units"` Hostname string `json:"hostname"` IPAddress string `json:"ip"` DcosVersion string `json:"dcos_version"` Role string `json:"node_role"` MesosID string `json:"mesos_id"` TdtVersion string `json:"dcos_diagnostics_version"` }
UnitsHealthResponseJSONStruct json response /system/health/v1
type UnitsResponseJSONStruct ¶
type UnitsResponseJSONStruct struct {
Array []UnitResponseFieldsStruct `json:"units"`
}
UnitsResponseJSONStruct contains health overview, collected from all hosts