Prometheus exporter - чтение CSV-файла с данными за прошедший день - PullRequest
1 голос
/ 14 апреля 2020

Я пишу экспортер Prometheus, который должен учитывать различные файлы CSV. Каждый из них содержит данные за весь прошлый день (цель состоит в том, чтобы экспортер считывал новый файл CSV каждый день. Один файл CSV загружается на сервер каждый день, содержащий данные предыдущего дня.

В файле CSV у меня одни и те же метрики каждые 5 минут, например:

Date;Time;data
23.03.20;23:55:00;1
23.03.20;23:50:00;50
23.03.20;23:45:00;3

Я изо всех сил пытаюсь правильно добавить данные тезисов в Prometheus.

class CSVCollector(object):
  def collect(self):
    # We list all the min files in the current directory
    list_min = glob.glob("min*.csv")
    metric = GaugeMetricFamily(
                'day_tests_seconds',
                'kw', labels=["jobname"])
    for min in list_min :
      with open(min) as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=';')
        line_count = 0
        for row in csv_reader:
            if line_count == 1:
                correct_date_format = row[0][:6] + "20" + row[0][6:]
                datetime_row = correct_date_format + ';' + row[1]
                timestamp = int(time.mktime(datetime.datetime.strptime(datetime_row, "%d.%m.%Y;%H:%M:%S").timetuple()))
                metric.add_metric(str(line_count), int(row[4]), timestamp)
            line_count += 1
    yield metric   



if __name__ == '__main__':
  # Usage: json_exporter.py port endpoint
  start_http_server(int(sys.argv[1]))
  REGISTRY.register(CSVCollector())
  while True: time.sleep(1)

Prometheus только что прочитал в первой строке добавьте его как метри c и читайте точно так же, каждый раз, когда он удаляет экспортер. Что я делаю не так? Я чувствую, что эти данные должны быть шкалой, так как она идет вверх и вниз, но Прометей кажется, что он не хочет разные данные из одного и того же датчика в одной записке?

...