-
Notifications
You must be signed in to change notification settings - Fork 380
CustomCollectors
Diamond collectors run within the diamond process and collect metrics that can be published to a graphite server.
Collectors are subclasses of diamond.collector.Collector. In their simplest form, they need to implement a single method called "collect".
import diamond.collector
class ExampleCollector(diamond.collector.Collector):
def collect(self):
# Set Metric Name
metric_name = "my.example.metric"
# Set Metric Value
metric_value = 42
# Publish Metric
self.publish(metric_name, metric_value)
To run this collector in test mode you can invoke the diamond server with the -r option and specify the collector path.
diamond -f -r full/path/to/ExampleCollector.py -c conf/diamond.conf.example
running diamond in the foreground (-f) while logging to stdout (-l) is a good way to quickly see if a custom collector is unable to load.
diamond -f -l
For detailed description and example please take a look at the example collector in the Collectors Directory.
Please note that not all collectors will be added to the PYTHONPATH, depending on configuration, so if you
need to import another collector in your code, please add it to the path yourself:
# example: add the proc collector to the path
sys.path.insert(0, '/path/to/diamond/collectors/proc')
If your collector is installed with the rest of the diamond collectors, you should do this:
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
'proc'))