#!/usr/bin/python2.7

import argparse
import glob
import socket
import sys
import time

sys.path.append('..')

from lib import tsdblib


parser = argparse.ArgumentParser()
parser.add_argument('--project', required=True)
parser.add_argument('--base_url', required=True)
FLAGS = parser.parse_args()


class Collector(object):

  def __init__(self):
    self._start_time = int(time.time())
    self._base_tags = self._BaseTags()
    self._client = tsdblib.TSDBClient(FLAGS.base_url,
                                      jit_callback=self._PutValues)

  def _GetHostname(self):
    return socket.gethostname()

  def _GetMACAddresses(self):
    for path in glob.iglob('/sys/class/net/*/address'):
      mac_address = open(path, 'r').read().strip()
      if mac_address == '00:00:00:00:00:00':
        continue
      yield mac_address

  def _GetCollectorUptime(self):
    return int(time.time()) - self._start_time

  def _GetSystemUptime(self):
    return int(open('/proc/uptime', 'r').read().split('.', 1)[0])

  def _GetLoadAverage1m(self):
    return int(float(open('/proc/loadavg', 'r').read().split(' ', 1)[0]) * 100)

  def _BaseTags(self):
    return [
      ('project', FLAGS.project),
      ('hostname', self._GetHostname()),
    ] + [
      ('mac_address', mac_address)
      for mac_address in self._GetMACAddresses()
    ]

  def _CycleValues(self):
    return [
      ('collector_uptime_seconds', self._GetCollectorUptime()),
      ('system_uptime_seconds', self._GetSystemUptime()),
      ('system_load_average_1m', self._GetLoadAverage1m()),
    ]

  def _PutValues(self):
    cycle_values = self._CycleValues()
    for name, value in cycle_values:
      self._client.PutValue(self._base_tags + [('value', name)], value)

  def Loop(self):
    time.sleep(9999999999)


Collector().Loop()

#!/usr/bin/python2.7

import argparse
import glob
import socket
import sys
import time

sys.path.append('..')

from lib import tsdblib


parser = argparse.ArgumentParser()
parser.add_argument('--project', required=True)
parser.add_argument('--base_url', required=True)
FLAGS = parser.parse_args()


class Collector(object):

  def __init__(self):
    self._start_time = int(time.time())
    self._base_tags = self._BaseTags()
    self._client = tsdblib.TSDBClient(FLAGS.base_url,
                                      jit_callback=self._PutValues)

  def _GetHostname(self):
    return socket.gethostname()

  def _GetMACAddresses(self):
    for path in glob.iglob('/sys/class/net/*/address'):
      mac_address = open(path, 'r').read().strip()
      if mac_address == '00:00:00:00:00:00':
        continue
      yield mac_address

  def _GetCollectorUptime(self):
    return int(time.time()) - self._start_time

  def _GetSystemUptime(self):
    return int(open('/proc/uptime', 'r').read().split('.', 1)[0])

  def _GetLoadAverage1m(self):
    return int(float(open('/proc/loadavg', 'r').read().split(' ', 1)[0]) * 100)

  def _BaseTags(self):
    return [
      ('project', FLAGS.project),
      ('hostname', self._GetHostname()),
    ] + [
      ('mac_address', mac_address)
      for mac_address in self._GetMACAddresses()
    ]

  def _CycleValues(self):
    return [
      ('collector_uptime_seconds', self._GetCollectorUptime()),
      ('system_uptime_seconds', self._GetSystemUptime()),
      ('system_load_average_1m', self._GetLoadAverage1m()),
    ]

  def _PutValues(self):
    cycle_values = self._CycleValues()
    for name, value in cycle_values:
      self._client.PutValue(self._base_tags + [('value', name)], value)

  def Loop(self):
    time.sleep(9999999999)


Collector().Loop()

#!/usr/bin/python2.7