Beispiel #1
0
//Run initialize Agent instance and start harvest go routine
func (agent *StandardAgent) Run() error {
	if agent.NewrelicLicense == "" {
		return errors.New("please, pass a valid newrelic license key")
	}

	agent.plugin = newrelic_platform_go.NewNewrelicPlugin(agent.AgentVersion, agent.NewrelicLicense, agent.NewrelicPollInterval)
	component := newrelic_platform_go.NewPluginComponent(agent.NewrelicName, agent.AgentGUID)
	agent.plugin.AddComponent(component)

	addRuntimeMericsToComponent(component)

	if agent.CollectGcStat {
		addGCMericsToComponent(component, agent.GCPollInterval)
		agent.debug(fmt.Sprintf("Init GC metrics collection. Poll interval %d seconds.", agent.GCPollInterval))
	}
	if agent.CollectMemoryStat {
		addMemoryMericsToComponent(component, agent.MemoryAllocatorPollInterval)
		agent.debug(fmt.Sprintf("Init memory allocator metrics collection. Poll interval %d seconds.", agent.MemoryAllocatorPollInterval))
	}

	if agent.CollectHTTPStat {
		agent.initTimer()
		addHTTPMericsToComponent(component, agent.HTTPTimer)
		agent.debug(fmt.Sprintf("Init HTTP metrics collection."))
	}

	agent.plugin.Verbose = agent.Verbose
	go agent.plugin.Run()
	return nil
}
Beispiel #2
0
//Run initialize Agent instance and start harvest go routine
func (agent *Agent) Run() error {
	if agent.NewrelicLicense == "" {
		return errors.New("please, pass a valid newrelic license key")
	}

	agent.plugin = newrelic_platform_go.NewNewrelicPlugin(agent.AgentVersion, agent.NewrelicLicense, agent.NewrelicPollInterval)
	agent.plugin.Client = agent.Client

	var component newrelic_platform_go.IComponent
	component = newrelic_platform_go.NewPluginComponent(agent.NewrelicName, agent.AgentGUID)

	// Add default metrics and tracer.
	addRuntimeMericsToComponent(component)
	agent.Tracer = newTracer(component)

	// Check agent flags and add relevant metrics.
	if agent.CollectGcStat {
		addGCMericsToComponent(component, agent.GCPollInterval)
		agent.debug(fmt.Sprintf("Init GC metrics collection. Poll interval %d seconds.", agent.GCPollInterval))
	}

	if agent.CollectMemoryStat {
		addMemoryMericsToComponent(component, agent.MemoryAllocatorPollInterval)
		agent.debug(fmt.Sprintf("Init memory allocator metrics collection. Poll interval %d seconds.", agent.MemoryAllocatorPollInterval))
	}

	if agent.CollectHTTPStat {
		agent.initTimer()
		addHTTPMericsToComponent(component, agent.HTTPTimer)
		agent.debug(fmt.Sprintf("Init HTTP metrics collection."))
	}

	for _, metric := range agent.CustomMetrics {
		component.AddMetrica(metric)
		agent.debug(fmt.Sprintf("Init %s metric collection.", metric.GetName()))
	}

	if agent.CollectHTTPStatuses {
		agent.initStatusCounters()
		component = &resettableComponent{component, agent.HTTPStatusCounters}
		addHTTPStatusMetricsToComponent(component, agent.HTTPStatusCounters)
		agent.debug(fmt.Sprintf("Init HTTP status metrics collection."))
	}

	// Init newrelic reporting plugin.
	agent.plugin = newrelic_platform_go.NewNewrelicPlugin(agent.AgentVersion, agent.NewrelicLicense, agent.NewrelicPollInterval)
	agent.plugin.Verbose = agent.Verbose

	// Add our metrics component to the plugin.
	agent.plugin.AddComponent(component)

	// Start reporting!
	go agent.plugin.Run()
	return nil
}
Beispiel #3
0
func InitTupleSummaryComponent(db *sql.DB, hostname string, verbose bool) platform.IComponent {

	component := platform.NewPluginComponent(hostname, "com.github.maciejmrowiec.pgmonitor", verbose)

	component.AddMetrica(NewTableAverageSummaryMetric(db, "tuple/summary/percent/active", TupleActivePercent, "%"))
	component.AddMetrica(NewTableAverageSummaryMetric(db, "tuple/summary/percent/dead", TupleDeadPercent, "%"))
	component.AddMetrica(NewTableAverageSummaryMetric(db, "tuple/summary/percent/free", TupleFreePercent, "%"))

	return component

}
func InitSingleSamplesComponent(hostname string, verbose bool) platform.IComponent {

	component := platform.NewPluginComponent(hostname, "com.github.maciejmrowiec.cfclientmonitor", verbose)

	component.AddMetrica(NewCommandMetric("disksize/cfengine", MakeSizeCommand("/var/cfengine"), "B", SizeCommandToFloat))

	component.AddMetrica(NewCommandMetric("cpu/loadaverage/1m", "cat /proc/loadavg | awk '{print$1}'", "", BytesToFloat))
	component.AddMetrica(NewCommandMetric("cpu/loadaverage/5m", "cat /proc/loadavg | awk '{print$2}'", "", BytesToFloat))
	component.AddMetrica(NewCommandMetric("cpu/loadaverage/15m", "cat /proc/loadavg | awk '{print$3}'", "", BytesToFloat))

	component.AddMetrica(NewCommandMetric("cpu/tasks/active", "cat /proc/loadavg | awk '{print$4}' | awk -F '/' '{print $1}'", "units", BytesToFloat))
	component.AddMetrica(NewCommandMetric("cpu/tasks/total", "cat /proc/loadavg | awk '{print$4}' | awk -F '/' '{print $2}'", "units", BytesToFloat))

	return component

}
func main() {
	plugin := newrelic_platform_go.NewNewrelicPlugin("0.0.1", "7bceac019c7dcafae1ef95be3e3a3ff8866de246", 60)
	component := newrelic_platform_go.NewPluginComponent("Wave component", "com.exmaple.plugin.gowave")
	plugin.AddComponent(component)

	m := &WaveMetrica{
		sawtoothMax:     10,
		sawtoothCounter: 5,
	}
	component.AddMetrica(m)

	m1 := &SquareWaveMetrica{
		squarewaveMax:     4,
		squarewaveCounter: 1,
	}
	component.AddMetrica(m1)

	plugin.Verbose = true
	plugin.Run()
}
Beispiel #6
0
// TODO: drop appname
func InitNewrelicAgent(license string, appname string, verbose bool, obs Observable) error {

	if license == "" {
		return fmt.Errorf("Please specify NewRelic license")
	}

	plugin := newrelic_platform_go.NewNewrelicPlugin(CurrentAgentVersion, license, PollInterval)
	component := newrelic_platform_go.NewPluginComponent(DefaultAgentName, DefaultAgentGuid)
	plugin.AddComponent(component)

	m := &MembersMetrica{obs}

	component.AddMetrica(m)

	f := &FailuresMetrica{obs}

	component.AddMetrica(f)

	plugin.Verbose = verbose
	go plugin.Run()
	return nil
}
Beispiel #7
0
// Run initialize Agent instance and start harvest go routine
func (agent *Agent) Run() error {

	if agent.NewrelicLicense == "" {
		return errors.New("Cannot start NewRelic agent, pass a valid license key")
	}

	agent.plugin = newrelic_platform_go.NewNewrelicPlugin(agent.AgentVersion, agent.NewrelicLicense, agent.NewrelicPollInterval)
	component := newrelic_platform_go.NewPluginComponent(agent.NewrelicName, agent.AgentGUID)
	agent.plugin.AddComponent(component)
	registry := metrics.DefaultRegistry
	registry.Each(func(name string, i interface{}) {
		switch metric := i.(type) {
		case metrics.Timer:
			addTimerMericsToComponent(component, metric, name)
		case metrics.Counter:
			addCounterMericsToComponent(component, metric, name)
		}
	})

	agent.plugin.Verbose = agent.Verbose
	go agent.plugin.Run()
	return nil
}