Конфигурация Prometheus Presto-Exporter в Kubernetes - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь отслеживать показатели Presto с помощью prometheus presto-exporter (https://github.com/yahoojapan/presto_exporter). Я загрузил образ presto-exporter docker и создал развертывание и обслуживание. Но я не совсем уверен, правильно ли я это делаю. Я предоставляю конфигурацию развертывания и обслуживания ниже.

конфигурация развертывания


    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: presto-exporter

    spec:
      replicas: 1
      selector:
        matchLabels:
          app: presto-exporter
      template:
        metadata:
          labels:
            app: presto-exporter
        spec:
          containers:
          - env:
            - name: web_url
              # (login credentials are required to access presto which is (username:=<domain\username>, password=<password with special characters>))
              value: "https://<vm_url>:<nodeport>/v1/cluster"
            - name: log_level
              value: "debug"
            - name: insecure_skip_verify
              value: "true"
            image: <registry-ip>/presto-exporter:latest
            imagePullPolicy: IfNotPresent
            name: presto-exporter
            ports:
            - containerPort: 9483
              protocol: TCP
          imagePullSecrets:
          - name: <registry-secret>

конфигурация службы


    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: presto-exporter
      name: presto-exporter
    spec:
      ports:
      - name: metrics
        port: 8280
        protocol: TCP
        targetPort: 9483
      selector:
        app: presto-exporter
      type: ClusterIP

Я сомневаюсь, что использование переменных среды правильно. Кроме того, в экспортере нет переменных для имени пользователя и пароля, и у меня возникли проблемы с использованием учетных данных для presto только с флагом --web.url. Журналы для работающих модулей дают мне


    kubectl logs presto-exporter-6dfd7db784-pqv7v
    time="2020-08-05T07:42:50Z" level=info msg="Starting presto_exporter (version=0.1.0, branch=master, revision=6eb4094fcd17f7fb82a393b527e3b0536ff1b38c)" source="presto_exporter.go:121"
    time="2020-08-05T07:42:50Z" level=info msg="Build context (go=go1.12.1, user=root@9756c8050182, date=20190323-04:33:01)" source="presto_exporter.go:122"
    time="2020-08-05T07:42:50Z" level=info msg="Listening on :9483" source="presto_exporter.go:137"
    time="2020-08-05T07:42:56Z" level=error msg="Get http://localhost:8080/v1/cluster: dial tcp 127.0.0.1:8080: connect: connection refused" source="presto_exporter.go:145"
    time="2020-08-05T07:43:01Z" level=error msg="Get http://localhost:8080/v1/cluster: dial tcp 127.0.0.1:8080: connect: connection refused" source="presto_exporter.go:145"
    time="2020-08-05T07:43:01Z" level=error msg="Get http://localhost:8080/v1/cluster: dial tcp 127.0.0.1:8080: connect: connection refused" source="presto_exporter.go:145"
    time="2020-08-05T07:43:06Z" level=error msg="Get http://localhost:8080/v1/cluster: dial tcp 127.0.0.1:8080: connect: connection refused" source="presto_exporter.go:145"
    time="2020-08-05T07:43:06Z" level=error msg="Get http://localhost:8080/v1/cluster: dial tcp 127.0.0.1:8080: connect: connection refused" source="presto_exporter.go:145"

Любая помощь будет принята с благодарностью. И, пожалуйста, дайте мне знать, если вам понадобится дополнительная информация. Заранее спасибо ...

РЕДАКТИРОВАТЬ

Я пробовал использовать разные параметры в контейнере коляски и скопировал все, что пробовал до сих пор. Я добавил конфигурационную карту, в которой есть сертификаты и учетные данные, используя envFrom, а также попытался использовать volumeMounts, как указано в основном контейнере.

- name: presto-exporter
          args:
          - "--web.url=https://<vm_ip>:8901"
          - "--log.level=debug"
          image: <registry_ip>/presto-exporter:latest
          imagePullPolicy: IfNotPresent
          envFrom:
          - configMapRef:
              name: presto-master-config
          ports:
            - containerPort: 9483
              protocol: TCP
          volumeMounts:
            - mountPath: /usr/lib/presto/configmap
              name: presto-master-config
            - mountPath: /usr/lib/presto/plugin/
              name: presto-plugin
            - mountPath: /usr/lib/presto/default/etc/catalog
              name: presto-catalog
            - mountPath: /certs
              name: <cert_name>

Если я закомментирую --web.url arg, я получение той же ошибки, что и до «соединение отказано», то же самое касается использования «localhost: 8901». Только так я могу получить доступ к URL-адресу, если я использую виртуальный IP-адрес и порт основного контейнера.

Теперь, если я скручиваю «http://<vm_ip>:9483/metrics» и вижу журнал, у меня возникает проблема с сертификацией.

level=error msg="Get https://<vm_ip>:8901: x509: certificate signed by unknown authority

, и если я попробую использовать http в аргументе --web-url, я получу

level=error msg="Get http://<vm_ip>:8901: net/http: HTTP/1.x transport connection broken: malformed HTTP response

, так что, думаю, мне нужно использовать https и найти способ решить проблемы с сертификацией. .

1 Ответ

0 голосов
/ 05 августа 2020

Этот экспортер Prometheus может очищать метрики из кластера presto, и он должен быть установлен на сервере координатора кластера presto.

Это означает, что образ экспортера должен находиться в контейнер sidecar для модулей координатора в кластере presto. Затем он сможет извлекать метрики из http://localhost:8080/v1/cluster URL.

Если вы действительно хотите, чтобы он находился в отдельном модуле, вам необходимо указать флаг -web.url вместо env web_url.

      containers:
      - args:
        - "-web.url=http://<vm_url>:<nodeport>/v1/cluster"
        image: <registry-ip>/presto-exporter:latest
        imagePullPolicy: IfNotPresent
        name: presto-exporter
        ports:
        - containerPort: 9483
          protocol: TCP
...