Skip to content

Instantly share code, notes, and snippets.

@iMilnb
Last active October 10, 2018 21:33
Show Gist options
  • Save iMilnb/eb79dd24e1bac491b9d7188fdddcfe39 to your computer and use it in GitHub Desktop.
Save iMilnb/eb79dd24e1bac491b9d7188fdddcfe39 to your computer and use it in GitHub Desktop.
collectd-python plugin to read data from ethermine.org
<Plugin python>
ModulePath "/home/imil/collectd"
Import "ethermine"
<Module ethermine>
wallet "0xf00f00f00"
interval "300"
url "https://ethermine.org/api/miner_new"
</Module>
</Plugin>
from __future__ import division
import requests
import collectd
cfg = {
'wallet': '0xf00b',
'interval': '300',
'url': 'http://localhost'
}
def readconf(config):
for node in config.children:
for k in ['wallet', 'interval', 'url']:
if node.key == k:
cfg[k] = node.values[0]
collectd.info('{0} set to: {1}'.format(k, cfg[k]))
cfg['url'] = '{0}/{1}'.format(cfg['url'], cfg['wallet'][2:])
def readvals():
collectd.info('calling {0}'.format(cfg['url']))
try:
j = requests.get(cfg['url']).json()
except ValueError, e:
collectd.info(str(e))
return
val = [
{
'k': 'reportedHashRate',
'v': j['reportedHashRate'].split()[0],
't': 'gauge'
},
{
'k': 'unpaid',
'v': float(j['unpaid']) / 1000000000000000000,
't': 'gauge'
},
{ 'k': 'usdPerMin', 'v': j['usdPerMin'], 't': 'gauge' }
]
for v in val:
c = collectd.Values(type = v['t'])
c.plugin = v['k']
c.dispatch(values = [v['v']])
collectd.register_config(readconf)
collectd.register_read(readvals, int(cfg['interval']))
@iMilnb
Copy link
Author

iMilnb commented Jul 17, 2017

@jedimstr did you have a look to the logs? Usually collectd logs to syslog and has pretty comprehensive output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment