Skip to content

Commit

Permalink
[targets.example] Add targets extensions example. (#742)
Browse files Browse the repository at this point in the history
  • Loading branch information
manugarg committed May 10, 2024
1 parent 58abd1c commit 4fcd73b
Show file tree
Hide file tree
Showing 6 changed files with 274 additions and 4 deletions.
8 changes: 8 additions & 0 deletions examples/extensions/myprober/myprobe/myprobe.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/cloudprober/cloudprober/logger"
"github.com/cloudprober/cloudprober/metrics"
"github.com/cloudprober/cloudprober/probes"
"github.com/cloudprober/cloudprober/probes/options"
"github.com/cloudprober/cloudprober/targets/endpoint"
"github.com/hoisie/redis"
Expand Down Expand Up @@ -133,3 +134,10 @@ func (p *Probe) runProbe(ctx context.Context) {

wg.Wait()
}

func Init() {
// Register stubby probe type
fmt.Println("Registering probe type")
extNumber := int(E_RedisProbe.TypeDescriptor().Number())
probes.RegisterProbeType(extNumber, func() probes.Probe { return &Probe{} })
}
13 changes: 13 additions & 0 deletions examples/extensions/myprober/myprober.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,16 @@ probe {
value: "testval"
}
}

probe {
name: "targets_ext_demo"
type: HTTP
interval_msec: 10000
timeout_msec: 5000
targets {
[myprober.mytargets] {
hostname: "localhost"
port: 9313
}
}
}
7 changes: 3 additions & 4 deletions examples/extensions/myprober/myprober.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (

"github.com/cloudprober/cloudprober"
"github.com/cloudprober/cloudprober/examples/extensions/myprober/myprobe"
"github.com/cloudprober/cloudprober/examples/extensions/myprober/mytargets"
"github.com/cloudprober/cloudprober/logger"
"github.com/cloudprober/cloudprober/probes"
"github.com/cloudprober/cloudprober/web"
)

Expand All @@ -16,9 +16,8 @@ func main() {

var log = logger.New()

// Register stubby probe type
probes.RegisterProbeType(int(myprobe.E_RedisProbe.TypeDescriptor().Number()),
func() probes.Probe { return &myprobe.Probe{} })
myprobe.Init()
mytargets.Init()

if err := cloudprober.Init(); err != nil {
log.Criticalf("Error initializing cloudprober. Err: %v", err)
Expand Down
41 changes: 41 additions & 0 deletions examples/extensions/myprober/mytargets/mytargets.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package mytargets

import (
"fmt"
"net"

"github.com/cloudprober/cloudprober/logger"
"github.com/cloudprober/cloudprober/targets"
"github.com/cloudprober/cloudprober/targets/endpoint"
"github.com/cloudprober/cloudprober/targets/resolver"
)

var globalResolver = resolver.New()

type myTargets struct {
c *MyTargetsConf
}

func (ut *myTargets) ListEndpoints() []endpoint.Endpoint {
return []endpoint.Endpoint{{
Name: ut.c.GetHostname(),
Port: int(ut.c.GetPort()),
}}
}

func (ut *myTargets) Resolve(name string, ipVer int) (net.IP, error) {
return globalResolver.Resolve(name, ipVer)
}

func Init() {
extensionNumber := int(E_Mytargets.TypeDescriptor().Number())
targets.RegisterTargetsType(extensionNumber, func(c interface{}, l *logger.Logger) (targets.Targets, error) {
utConf, ok := c.(*MyTargetsConf)
if !ok {
return nil, fmt.Errorf("invalid target config type: %T", c)
}
return &myTargets{
c: utConf,
}, nil
})
}
193 changes: 193 additions & 0 deletions examples/extensions/myprober/mytargets/mytargets.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions examples/extensions/myprober/mytargets/mytargets.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
syntax = "proto2";

package myprober;

option go_package="github.com/cloudprober/cloudprober/examples/extensions/myprober/mytargets";

import "github.com/cloudprober/cloudprober/targets/proto/targets.proto";

message MyTargetsConf {
optional string hostname = 1;
optional int32 port = 2;
}

extend cloudprober.targets.TargetsDef {
optional MyTargetsConf mytargets = 200;
}

0 comments on commit 4fcd73b

Please sign in to comment.