Provide a test mode to check plugins easily
This commit is contained in:
parent
7b0c09d5e9
commit
609cba2cd5
|
@ -1,12 +1,32 @@
|
||||||
package tivan
|
package tivan
|
||||||
|
|
||||||
import "github.com/influxdb/influxdb/client"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/influxdb/influxdb/client"
|
||||||
|
)
|
||||||
|
|
||||||
type BatchPoints struct {
|
type BatchPoints struct {
|
||||||
client.BatchPoints
|
client.BatchPoints
|
||||||
|
|
||||||
|
Debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bp *BatchPoints) Add(name string, val interface{}, tags map[string]string) {
|
func (bp *BatchPoints) Add(name string, val interface{}, tags map[string]string) {
|
||||||
|
if bp.Debug {
|
||||||
|
var tg []string
|
||||||
|
|
||||||
|
for k, v := range tags {
|
||||||
|
tg = append(tg, fmt.Sprintf("%s=\"%s\"", k, v))
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Strings(tg)
|
||||||
|
|
||||||
|
fmt.Printf("> [%s] %s=%v\n", strings.Join(tg, " "), name, val)
|
||||||
|
}
|
||||||
|
|
||||||
bp.Points = append(bp.Points, client.Point{
|
bp.Points = append(bp.Points, client.Point{
|
||||||
Name: name,
|
Name: name,
|
||||||
Tags: tags,
|
Tags: tags,
|
||||||
|
|
29
agent.go
29
agent.go
|
@ -37,9 +37,15 @@ func NewAgent(config *Config) (*Agent, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return agent, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (agent *Agent) Connect() error {
|
||||||
|
config := agent.Config
|
||||||
|
|
||||||
u, err := url.Parse(config.URL)
|
u, err := url.Parse(config.URL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := client.NewClient(client.Config{
|
c, err := client.NewClient(client.Config{
|
||||||
|
@ -50,12 +56,12 @@ func NewAgent(config *Config) (*Agent, error) {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
agent.conn = c
|
agent.conn = c
|
||||||
|
|
||||||
return agent, nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Agent) LoadPlugins() ([]string, error) {
|
func (a *Agent) LoadPlugins() ([]string, error) {
|
||||||
|
@ -74,6 +80,8 @@ func (a *Agent) LoadPlugins() ([]string, error) {
|
||||||
func (a *Agent) crank() error {
|
func (a *Agent) crank() error {
|
||||||
var acc BatchPoints
|
var acc BatchPoints
|
||||||
|
|
||||||
|
acc.Debug = a.Debug
|
||||||
|
|
||||||
for _, plugin := range a.plugins {
|
for _, plugin := range a.plugins {
|
||||||
err := plugin.Gather(&acc)
|
err := plugin.Gather(&acc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -89,6 +97,21 @@ func (a *Agent) crank() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *Agent) Test() error {
|
||||||
|
var acc BatchPoints
|
||||||
|
|
||||||
|
acc.Debug = true
|
||||||
|
|
||||||
|
for _, plugin := range a.plugins {
|
||||||
|
err := plugin.Gather(&acc)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (a *Agent) Run(shutdown chan struct{}) {
|
func (a *Agent) Run(shutdown chan struct{}) {
|
||||||
ticker := time.NewTicker(a.Interval.Duration)
|
ticker := time.NewTicker(a.Interval.Duration)
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var fDebug = flag.Bool("debug", false, "show metrics as they're generated to stdout")
|
var fDebug = flag.Bool("debug", false, "show metrics as they're generated to stdout")
|
||||||
|
var fTest = flag.Bool("test", false, "gather metrics, print them out, and exit")
|
||||||
var fConfig = flag.String("config", "", "configuration file to load")
|
var fConfig = flag.String("config", "", "configuration file to load")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -46,6 +46,20 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if *fTest {
|
||||||
|
err = ag.Test()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ag.Connect()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
shutdown := make(chan struct{})
|
shutdown := make(chan struct{})
|
||||||
|
|
||||||
signals := make(chan os.Signal)
|
signals := make(chan os.Signal)
|
||||||
|
|
Loading…
Reference in New Issue