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