fluent-plugin-claymore
Fluentd parser plugin to extract metrics from Claymore Dual Miner logs
Requirements
fluentd | ruby |
---|---|
>= v0.14.0 | >= 2.1 |
Claymore Dual Miner | fluent-plugin-claymore |
---|---|
v10.0 | >= v1.0 |
Installation
$ fluent-gem install fluent-plugin-claymore
Usage
Use with any input plugins that have parse
directive:
# fluentd.conf
<source>
@type tail
path *.txt
read_from_head true
tag claymore.data
<parse>
@type claymore
# zero configuration 🎉
</parse>
</source>
<match **>
@type stdout
</match>
Demo configuration and sample data are available in example.
cd example
fluentd -c fluentd.conf
A production configuration which uses InfluxDB to store time series may look like:
<source>
@type tail
path path/to/claymore/*_log.txt
pos_file path/to/pos.pos
refresh_interval 5
tag claymore.data
<parse>
@type claymore
</parse>
</source>
# re-tag events to use tag names as InfluxDB measurements
<match claymore.data>
@type rewrite_tag_filter
<rule>
key type
pattern GPU_HASH_RATE
tag claymore.data.hash_rate
</rule>
<rule>
key type
pattern GPU_SHARE_FOUND
tag claymore.data.share_found
</rule>
<rule>
key type
pattern GPU_TEMP
tag claymore.data.temperature
</rule>
</match>
<match claymore.data.*>
@type copy
<store>
@type stdout
</store>
<store>
@type influxdb
host influxdb
port 8086
dbname claymore
# uses fluentd tag when measurement not specified
# measurement xxx
time_precision ms
auto_tags false
tag_keys ["asset", "gpu", "hostname", "type"]
sequence_tag _seq
<buffer>
flush_interval 1
</buffer>
</store>
</match>
Events/Metrics
[
{ "type": "GPU_HASH_RATE", "asset": "SC", "gpu": 1, "hash_rate": 300.583 },
{ "type": "GPU_SHARE_FOUND", "asset": "SC", "gpu": 1, "count": 1 },
{ "type": "TOTAL_HASH_RATE", "asset": "ETH", "hash_rate": 83.153 },
{ "type": "GPU_TEMP", "gpu": 1, "temperature": 47, "old_fan": 0, "new_fan": 75 },
{ "type": "CONNECTION_LOST", "asset": "SC", "count": 1 }
]
Caveats
The parser plugin only works with
input
plugins, notfilter
plugins. This is becausefilter
plugins are unable to yield multiple results unlikeinput
.The claymore logs timestamps is ignored since it excludes the date. Instead the timestamp when the line is read is used.