← Back to team overview

graphite-dev team mailing list archive

Re: [Question #136096]: Collecting system metrics

 

I've written a plugin based poller that we use at to collect JMX data, performance from URLs, regex values of of URLs, and probably some other things I am forgetting. It builds its configurations by building a host:port list of targets from our VIPs and a manually list of hosts that are not VIP targets. From there the ports are mapped back to a service definition yaml which is used to track port allocations. In there the different plugins are configured for each service.

I'll see if I can open source that although I imagine the VIP configuration parsing will be useless to most people, and potentially the service configuration file structure.

In the mean time, I committed a simple collector I wrote which you can run to collect system metrics.  Some of it is a little kludgy, you will find it in the contrib directory.

http://bazaar.launchpad.net/~graphite-dev/graphite/main/annotate/head:/contrib/demo-collector.py


--
Kraig Amador

From: Pete Emerson <question136096@xxxxxxxxxxxxxxxxxxxxx<mailto:question136096@xxxxxxxxxxxxxxxxxxxxx>>
Reply-To: "question136096@xxxxxxxxxxxxxxxxxxxxx<mailto:question136096@xxxxxxxxxxxxxxxxxxxxx>" <question136096@xxxxxxxxxxxxxxxxxxxxx<mailto:question136096@xxxxxxxxxxxxxxxxxxxxx>>
Date: Wed, 1 Dec 2010 16:30:10 -0800
To: "graphite-dev@xxxxxxxxxxxxxxxxxxx<mailto:graphite-dev@xxxxxxxxxxxxxxxxxxx>" <graphite-dev@xxxxxxxxxxxxxxxxxxx<mailto:graphite-dev@xxxxxxxxxxxxxxxxxxx>>
Subject: Re: [Graphite-dev] [Question #136096]: Collecting system metrics

Question #136096 on Graphite changed:
https://answers.launchpad.net/graphite/+question/136096

Pete Emerson posted a new comment:
As far as a collection agent is concerned, I'd love to contribute back
to Graphite in this way. My python is very raw, however (I'm probably
writing very perlish python). I'd also need to get it approved from the
powers-that-be.

It seems that something as simple as:


for file in glob.glob('path/to/plugins/*'):
        exit_code, result = commands.getstatusoutput(file)
        if exit_code != 0:
                print "Failed to get info from " + file
                continue
        # SEND DATA TO GRAPHITE

would be a minimum viable product. Add a configuration file via
ConfigParser for settings (like debug mode, graphite server / port, et
cetera) and it would be in good shape. Add daemon support for those who
don't want it running in cron and it'd be even better.

Pete

--
You received this question notification because you are a member of
graphite-dev, which is an answer contact for Graphite.

_______________________________________________
Mailing list: https://launchpad.net/~graphite-dev
Post to     : graphite-dev@xxxxxxxxxxxxxxxxxxx<mailto:graphite-dev@xxxxxxxxxxxxxxxxxxx>
Unsubscribe : https://launchpad.net/~graphite-dev
More help   : https://help.launchpad.net/ListHelp



Follow ups

References