From 27a9202c4670873bcffa385c4f05d7bd1c9f9835 Mon Sep 17 00:00:00 2001 From: Germain Maurice <344348+gmaurice@users.noreply.github.com> Date: Fri, 9 Oct 2020 09:56:46 +0200 Subject: [PATCH] fix(no_token_errors): fix prometheus token errors * fix prometheus "no token" error prometheus won't scrape metrics with labels containing unexpected characters got the regex from https://github.com/prometheus/client_python/blob/3627472bd3257c1763f69e55e21612a5c8d6f49a/prometheus_client/metrics_core.py#L10 * fix CI tests * Fix build and upgrade to 3.7 python Co-authored-by: gmaurice <> Co-authored-by: Daniel Pryor Precommit-Verified: fafc5149cec54cf70b32aacaa01e26fcfe54cd5cf46ebc49b9ad0393e2c9d92b --- Dockerfile | 4 ++-- vmware_exporter/vmware_exporter.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a0e7951..5a961b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.6-alpine +FROM python:3.7-alpine LABEL MAINTAINER="Daniel Pryor " LABEL NAME=vmware_exporter @@ -6,7 +6,7 @@ LABEL NAME=vmware_exporter WORKDIR /opt/vmware_exporter/ COPY . /opt/vmware_exporter/ -RUN set -x; buildDeps="gcc python-dev musl-dev libffi-dev openssl openssl-dev" \ +RUN set -x; buildDeps="gcc python3-dev musl-dev libffi-dev openssl openssl-dev" \ && apk add --no-cache --update $buildDeps \ && pip install -r requirements.txt . \ && apk del $buildDeps diff --git a/vmware_exporter/vmware_exporter.py b/vmware_exporter/vmware_exporter.py index b3ad20a..640b5aa 100755 --- a/vmware_exporter/vmware_exporter.py +++ b/vmware_exporter/vmware_exporter.py @@ -9,6 +9,7 @@ # Generic imports import argparse import os +import re import ssl import sys import traceback @@ -1150,6 +1151,7 @@ def updateMetricsLabelNames(self, metrics, metric_types): metric._labelnames = labelnames[0:len(self._labelNames[metric_type])] metric._labelnames += customAttributesLabelNames metric._labelnames += labelnames[len(self._labelNames[metric_type]):] + metric._labelnames = list(map(lambda x: re.sub('[^a-zA-Z0-9_]', '_', x), metric._labelnames)) @defer.inlineCallbacks def _vmware_get_datastores(self, ds_metrics):