-
Notifications
You must be signed in to change notification settings - Fork 384
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'))