def sendMetricsToGrok(opt):
  """Collects data for burnrate metrics, writes it to a csv file and
  sends it to Grok.

  Collects the following metrics (toggled with CL flags):
  - Total hourly burnrate
  - Regional hourly burnrate (use -b)
  - Total number running instances
  - Regional number running instances (use -r)
  - Total number stopped instances
  - Regional number stopped instances (use -p)
  - Total number all instances
  - Regional number all instances (use -t)
  """
  grok = GrokSession(server=opt.server, apikey=opt.key)
  regionalData = getDataByRegions()
  ts = time.mktime(datetime.datetime.utcnow().timetuple())

  with open(opt.outputfile, "ab") as csvfile:
    csvwriter = csv.writer(csvfile)

    with grok.connect() as sock:
      # Regional burn rate calculation/send
      if opt.regionalBurnrates:
        if opt.verbose:
          print "Calculating / sending regional hourly burn rates"
        for region in regionalData.items():
          sock.sendall("%s %s %d\n" % (opt.prefix + "." + region[0] +
                                       ".burnrate",
                                       (region[1]["burnrate"]*int(opt.scale)),
                                       ts))
          csvwriter.writerow([(opt.prefix + "." + region[0] + ".burnrate"),
                              str(region[1]["burnrate"]),
                              str(ts)])

      # Total burn rate calculation/send
      if opt.verbose:
        print "Calculating / sending total hourly burn rate"
      burnrate = sum(region[1]["burnrate"] for region in regionalData.items())
      sock.sendall("%s %s %d\n" % (opt.prefix + ".total.burnrate",
                                   (burnrate*int(opt.scale)),
                                   ts))
      csvwriter.writerow([opt.prefix + ".total.burnrate",
                          str(burnrate),
                          str(ts)])

      # Regional running instances calculate/send
      if opt.regionalRunning:
        if opt.verbose:
          print "Calculating / sending regional running instances"
        for region in regionalData.items():
          sock.sendall("%s %s %d\n" % (opt.prefix + "." + region[0] +
                                       ".runningInstances",
                                       (region[1]["numberRunningInstances"]
                                        *int(opt.scale)),
                                       ts))
          csvwriter.writerow([(opt.prefix + "." + region[0] +
                               ".runningInstances"),
                              str(region[1]["numberRunningInstances"]),
                              str(ts)])
      # Total running instances calculate/send
      if opt.verbose:
        print "Calculating / sending total running instances"
      numRunning = sum(region[1]["numberRunningInstances"] for region in
                     regionalData.items())
      sock.sendall("%s %s %d\n" % (opt.prefix + ".total.runningInstances",
                                   (numRunning*int(opt.scale)),
                                   ts))
      csvwriter.writerow([opt.prefix + ".total.runningInstances",
                          str(numRunning),
                          str(ts)])

      # Regional stopped instances calculate/send
      if opt.regionalStopped:
        if opt.verbose:
          print "Calculating / sending regional stopped instances"
        for region in regionalData.items():
          sock.sendall("%s %s %d\n" % (opt.prefix + "." + region[0] +
                                       ".stoppedInstances",
                                       (region[1]["numberStoppedInstances"]
                                        *int(opt.scale)),
                                       ts))
          csvwriter.writerow([(opt.prefix + "." + region[0] +
                               ".stoppedInstances"),
                              str(region[1]["numberStoppedInstances"]),
                              str(ts)])

      # Total stopped instances calculate/send
      if opt.verbose:
        print "Calculating / sending total stopped instances"
      numStopped = sum(region[1]["numberStoppedInstances"] for region in
                     regionalData.items())
      sock.sendall("%s %s %d\n" % (opt.prefix + ".total.stoppedInstances",
                                   (numStopped*int(opt.scale)),
                                   ts))
      csvwriter.writerow([opt.prefix + ".total.stoppedInstances",
                          str(numStopped),
                          str(ts)])

      # Regional all instances calculate/send
      if opt.regionalAll:
        if opt.verbose:
          print "Calculating / sending regional all instances"
        for region in regionalData.items():
          sock.sendall("%s %s %d\n" % (opt.prefix + "." + region[0] +
                                       ".allInstances",
                                       (region[1]["numberAllInstances"]
                                        *int(opt.scale)),
                                       ts))
          csvwriter.writerow([(opt.prefix + "." + region[0] + ".AllInstances"),
                              str(region[1]["numberAllInstances"]),
                              str(ts)])

      # Total all instances calculate/send
      if opt.verbose:
        print "Calculating / sending total all instances"
      numAll = sum(region[1]["numberAllInstances"] for region in
                     regionalData.items())
      sock.sendall("%s %s %d\n" % (opt.prefix + ".total.allInstances",
                                   (numAll*int(opt.scale)),
                                   ts))
      csvwriter.writerow([opt.prefix + ".total.allInstances",
                          str(numAll),
                          str(ts)])


  if opt.verbose:
    print "Done!"
Пример #2
0
def sendMetricsToHTMIT(opt):
    """Collects data for burnrate metrics, writes it to a csv file and
  sends it to HTMIT

  Collects the following metrics (toggled with CL flags):
  - Total hourly burnrate
  - Regional hourly burnrate (use -b)
  - Total number running instances
  - Regional number running instances (use -r)
  - Total number stopped instances
  - Regional number stopped instances (use -p)
  - Total number all instances
  - Regional number all instances (use -t)
  """
    session = GrokSession(server=opt.server, apikey=opt.key)
    regionalData = getDataByRegions()
    ts = time.mktime(datetime.datetime.utcnow().timetuple())

    with open(opt.outputfile, "ab") as csvfile:
        csvwriter = csv.writer(csvfile)

        with session.connect() as sock:
            # Regional burn rate calculation/send
            if opt.regionalBurnrates:
                if opt.verbose:
                    print "Calculating / sending regional hourly burn rates"
                for region in regionalData.items():
                    sock.sendall(
                        "%s %s %d\n" %
                        (opt.prefix + "." + region[0] + ".burnrate",
                         (region[1]["burnrate"] * int(opt.scale)), ts))
                    csvwriter.writerow([
                        (opt.prefix + "." + region[0] + ".burnrate"),
                        str(region[1]["burnrate"]),
                        str(ts)
                    ])

            # Total burn rate calculation/send
            if opt.verbose:
                print "Calculating / sending total hourly burn rate"
            burnrate = sum(region[1]["burnrate"]
                           for region in regionalData.items())
            sock.sendall("%s %s %d\n" % (opt.prefix + ".total.burnrate",
                                         (burnrate * int(opt.scale)), ts))
            csvwriter.writerow(
                [opt.prefix + ".total.burnrate",
                 str(burnrate),
                 str(ts)])

            # Regional running instances calculate/send
            if opt.regionalRunning:
                if opt.verbose:
                    print "Calculating / sending regional running instances"
                for region in regionalData.items():
                    sock.sendall(
                        "%s %s %d\n" %
                        (opt.prefix + "." + region[0] + ".runningInstances",
                         (region[1]["numberRunningInstances"] *
                          int(opt.scale)), ts))
                    csvwriter.writerow([
                        (opt.prefix + "." + region[0] + ".runningInstances"),
                        str(region[1]["numberRunningInstances"]),
                        str(ts)
                    ])
            # Total running instances calculate/send
            if opt.verbose:
                print "Calculating / sending total running instances"
            numRunning = sum(region[1]["numberRunningInstances"]
                             for region in regionalData.items())
            sock.sendall("%s %s %d\n" %
                         (opt.prefix + ".total.runningInstances",
                          (numRunning * int(opt.scale)), ts))
            csvwriter.writerow([
                opt.prefix + ".total.runningInstances",
                str(numRunning),
                str(ts)
            ])

            # Regional stopped instances calculate/send
            if opt.regionalStopped:
                if opt.verbose:
                    print "Calculating / sending regional stopped instances"
                for region in regionalData.items():
                    sock.sendall(
                        "%s %s %d\n" %
                        (opt.prefix + "." + region[0] + ".stoppedInstances",
                         (region[1]["numberStoppedInstances"] *
                          int(opt.scale)), ts))
                    csvwriter.writerow([
                        (opt.prefix + "." + region[0] + ".stoppedInstances"),
                        str(region[1]["numberStoppedInstances"]),
                        str(ts)
                    ])

            # Total stopped instances calculate/send
            if opt.verbose:
                print "Calculating / sending total stopped instances"
            numStopped = sum(region[1]["numberStoppedInstances"]
                             for region in regionalData.items())
            sock.sendall("%s %s %d\n" %
                         (opt.prefix + ".total.stoppedInstances",
                          (numStopped * int(opt.scale)), ts))
            csvwriter.writerow([
                opt.prefix + ".total.stoppedInstances",
                str(numStopped),
                str(ts)
            ])

            # Regional all instances calculate/send
            if opt.regionalAll:
                if opt.verbose:
                    print "Calculating / sending regional all instances"
                for region in regionalData.items():
                    sock.sendall(
                        "%s %s %d\n" %
                        (opt.prefix + "." + region[0] + ".allInstances",
                         (region[1]["numberAllInstances"] * int(opt.scale)),
                         ts))
                    csvwriter.writerow([
                        (opt.prefix + "." + region[0] + ".AllInstances"),
                        str(region[1]["numberAllInstances"]),
                        str(ts)
                    ])

            # Total all instances calculate/send
            if opt.verbose:
                print "Calculating / sending total all instances"
            numAll = sum(region[1]["numberAllInstances"]
                         for region in regionalData.items())
            sock.sendall("%s %s %d\n" % (opt.prefix + ".total.allInstances",
                                         (numAll * int(opt.scale)), ts))
            csvwriter.writerow(
                [opt.prefix + ".total.allInstances",
                 str(numAll),
                 str(ts)])

    if opt.verbose:
        print "Done!"
def writeMetricsToFile(opt):
  """Collects data for burnrate metrics and writes it to a csv file."""

  regionalData = getDataByRegions()
  ts = time.mktime(datetime.datetime.utcnow().timetuple())

  with open(opt.outputfile, "ab") as csvfile:
    csvwriter = csv.writer(csvfile)

    # Regional burn rate calculation/send
    if opt.regionalBurnrates:
      if opt.verbose:
        print "Calculating / writing regional hourly burn rates"
      for region in regionalData.items():
        csvwriter.writerow([(opt.prefix + "." + region[0] + ".burnrate"),
                            str(region[1]["burnrate"]),
                            str(ts)])

    # Total burn rate calculation/send
    if opt.verbose:
      print "Calculating / writing total hourly burn rate"
    burnrate = sum(region[1]["burnrate"] for region in regionalData.items())
    csvwriter.writerow([opt.prefix + ".total.burnrate",
                        str(burnrate),
                        str(ts)])

    # Regional running instances calculate/send
    if opt.regionalRunning:
      if opt.verbose:
        print "Calculating / writing regional running instances"
      for region in regionalData.items():
        csvwriter.writerow([(opt.prefix + "." + region[0] +
                             ".runningInstances"),
                            str(region[1]["numberRunningInstances"]),
                            str(ts)])
    # Total running instances calculate/send
    if opt.verbose:
      print "Calculating / writing total running instances"
    numRunning = sum(region[1]["numberRunningInstances"] for region in
                   regionalData.items())
    csvwriter.writerow([opt.prefix + ".total.runningInstances",
                        str(numRunning),
                        str(ts)])

    # Regional stopped instances calculate/send
    if opt.regionalStopped:
      if opt.verbose:
        print "Calculating / writing regional stopped instances"
      for region in regionalData.items():
        csvwriter.writerow([(opt.prefix + "." + region[0] +
                             ".stoppedInstances"),
                            str(region[1]["numberStoppedInstances"]),
                            str(ts)])

    # Total stopped instances calculate/send
    if opt.verbose:
      print "Calculating / writing total stopped instances"
    numStopped = sum(region[1]["numberStoppedInstances"] for region in
                   regionalData.items())
    csvwriter.writerow([opt.prefix + ".total.stoppedInstances",
                        str(numStopped),
                        str(ts)])

    # Regional total instances calculate/send
    if opt.regionalAll:
      if opt.verbose:
        print "Calculating / writing regional all instances"
      for region in regionalData.items():
        csvwriter.writerow([(opt.prefix + "." + region[0] +
                             ".allInstances"),
                            str(region[1]["numberAllInstances"]),
                            str(ts)])

    # Total total instances calculate/send
    if opt.verbose:
      print "Calculating / writing total all instances"
    numAll = sum(region[1]["numberAllInstances"] for region in
                   regionalData.items())
    csvwriter.writerow([opt.prefix + ".total.allInstances",
                        str(numAll),
                        str(ts)])

  if opt.verbose:
    print "Done!"
Пример #4
0
def writeMetricsToFile(opt):
    """Collects data for burnrate metrics and writes it to a csv file."""

    regionalData = getDataByRegions()
    ts = time.mktime(datetime.datetime.utcnow().timetuple())

    with open(opt.outputfile, "ab") as csvfile:
        csvwriter = csv.writer(csvfile)

        # Regional burn rate calculation/send
        if opt.regionalBurnrates:
            if opt.verbose:
                print "Calculating / writing regional hourly burn rates"
            for region in regionalData.items():
                csvwriter.writerow([
                    (opt.prefix + "." + region[0] + ".burnrate"),
                    str(region[1]["burnrate"]),
                    str(ts)
                ])

        # Total burn rate calculation/send
        if opt.verbose:
            print "Calculating / writing total hourly burn rate"
        burnrate = sum(region[1]["burnrate"]
                       for region in regionalData.items())
        csvwriter.writerow(
            [opt.prefix + ".total.burnrate",
             str(burnrate),
             str(ts)])

        # Regional running instances calculate/send
        if opt.regionalRunning:
            if opt.verbose:
                print "Calculating / writing regional running instances"
            for region in regionalData.items():
                csvwriter.writerow([
                    (opt.prefix + "." + region[0] + ".runningInstances"),
                    str(region[1]["numberRunningInstances"]),
                    str(ts)
                ])
        # Total running instances calculate/send
        if opt.verbose:
            print "Calculating / writing total running instances"
        numRunning = sum(region[1]["numberRunningInstances"]
                         for region in regionalData.items())
        csvwriter.writerow(
            [opt.prefix + ".total.runningInstances",
             str(numRunning),
             str(ts)])

        # Regional stopped instances calculate/send
        if opt.regionalStopped:
            if opt.verbose:
                print "Calculating / writing regional stopped instances"
            for region in regionalData.items():
                csvwriter.writerow([
                    (opt.prefix + "." + region[0] + ".stoppedInstances"),
                    str(region[1]["numberStoppedInstances"]),
                    str(ts)
                ])

        # Total stopped instances calculate/send
        if opt.verbose:
            print "Calculating / writing total stopped instances"
        numStopped = sum(region[1]["numberStoppedInstances"]
                         for region in regionalData.items())
        csvwriter.writerow(
            [opt.prefix + ".total.stoppedInstances",
             str(numStopped),
             str(ts)])

        # Regional total instances calculate/send
        if opt.regionalAll:
            if opt.verbose:
                print "Calculating / writing regional all instances"
            for region in regionalData.items():
                csvwriter.writerow([
                    (opt.prefix + "." + region[0] + ".allInstances"),
                    str(region[1]["numberAllInstances"]),
                    str(ts)
                ])

        # Total total instances calculate/send
        if opt.verbose:
            print "Calculating / writing total all instances"
        numAll = sum(region[1]["numberAllInstances"]
                     for region in regionalData.items())
        csvwriter.writerow(
            [opt.prefix + ".total.allInstances",
             str(numAll),
             str(ts)])

    if opt.verbose:
        print "Done!"