prober: library to build healthchecking probers.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson
2022-03-17 20:00:54 -07:00
committed by Dave Anderson
parent f2041c9088
commit e41a3b983c
5 changed files with 666 additions and 0 deletions

30
prober/tcp.go Normal file
View File

@@ -0,0 +1,30 @@
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package prober
import (
"context"
"fmt"
"net"
)
// TCP returns a Probe that healthchecks a TCP endpoint.
//
// The Probe reports whether it can successfully connect to addr.
func TCP(addr string) Probe {
return func(ctx context.Context) error {
return probeTCP(ctx, addr)
}
}
func probeTCP(ctx context.Context, addr string) error {
var d net.Dialer
conn, err := d.DialContext(ctx, "tcp", addr)
if err != nil {
return fmt.Errorf("dialing %q: %v", addr, err)
}
conn.Close()
return nil
}