func newTCPMonitorHostJob( scheme, host string, port uint16, tls *transport.TLSConfig, config *Config, ) (monitors.Job, error) { typ := config.Name timeout := config.Timeout jobName := jobName(typ, jobType(scheme), host, []uint16{port}) validator := makeValidateConn(config) pingAddr := net.JoinHostPort(host, strconv.Itoa(int(port))) taskDialer, err := buildDialerChain(scheme, tls, config) if err != nil { return nil, err } return monitors.MakeSimpleJob(jobName, typ, func() (common.MapStr, error) { event := common.MapStr{ "scheme": scheme, "port": port, "host": host, } dialer, err := taskDialer.BuildWithMeasures(event) if err != nil { return event, err } results, err := pingHost(dialer, pingAddr, timeout, validator) event.Update(results) return event, err }), nil }
func newHTTPMonitorHostJob( addr string, config *Config, transport *http.Transport, enc contentEncoder, body []byte, validator RespCheck, ) (monitors.Job, error) { typ := config.Name jobName := fmt.Sprintf("%v@%v", typ, addr) client := &http.Client{ CheckRedirect: makeCheckRedirect(config.MaxRedirects), Transport: transport, Timeout: config.Timeout, } request, err := buildRequest(addr, config, enc) if err != nil { return nil, err } hostname, port, err := splitHostnamePort(request) if err != nil { return nil, err } timeout := config.Timeout fields := common.MapStr{ "scheme": request.URL.Scheme, "host": hostname, "port": port, "url": request.URL.String(), } return monitors.MakeSimpleJob(jobName, typ, func() (common.MapStr, error) { event, err := execPing(client, request, body, timeout, validator) if event == nil { event = common.MapStr{} } event.Update(fields) return event, err }), nil }