feed graphite/carbon like in the example
This commit is contained in:
parent
16aa6c9a19
commit
45d1f3a99d
1 changed files with 8 additions and 4 deletions
|
@ -18,22 +18,26 @@ class Command(BaseCommand):
|
||||||
parser.add_argument('--graphite', type=str, help=_('graphite address'), default=None)
|
parser.add_argument('--graphite', type=str, help=_('graphite address'), default=None)
|
||||||
parser.add_argument('--graphite-port', type=int, default=2003, help=_('graphite port (default 2003)'))
|
parser.add_argument('--graphite-port', type=int, default=2003, help=_('graphite port (default 2003)'))
|
||||||
|
|
||||||
def _output_graphite(self, s, prefix, result, timestamp):
|
def _output_graphite(self, lines, prefix, result, timestamp):
|
||||||
for name, value in result.items():
|
for name, value in result.items():
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
self._output_graphite(s, prefix+name+'.', value, timestamp)
|
self._output_graphite(lines, prefix+name+'.', value, timestamp)
|
||||||
continue
|
continue
|
||||||
s.sendall(('%s%s %s %s\n' % (prefix, name, value, timestamp)).encode())
|
lines.append('%s%s %s %s\n' % (prefix, name, value, timestamp))
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
data = json.load(options['statsfile'])
|
data = json.load(options['statsfile'])
|
||||||
end_time = int(dateutil.parser.parse(data['end_date']).timestamp())
|
end_time = int(dateutil.parser.parse(data['end_date']).timestamp())
|
||||||
result = convert_stats(data)
|
result = convert_stats(data)
|
||||||
if options['graphite']:
|
if options['graphite']:
|
||||||
|
lines = []
|
||||||
|
self._output_graphite(lines, 'c3nav.%s.' % settings.INSTANCE_NAME, result, end_time)
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
try:
|
try:
|
||||||
s.connect((options['graphite'], options['graphite_port']))
|
s.connect((options['graphite'], options['graphite_port']))
|
||||||
self._output_graphite(s, 'c3nav.%s.' % settings.INSTANCE_NAME, result, end_time)
|
message = '\n'.join(lines) + '\n' # all lines must end in a newline
|
||||||
|
print(message)
|
||||||
|
sock.sendall(message)
|
||||||
finally:
|
finally:
|
||||||
s.close()
|
s.close()
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue