Я пытаюсь отслеживать показатели Presto с помощью prometheus presto-exporter (https://github.com/yahoojapan/presto_exporter а>). Я загрузил образ докера presto-exporter и создал развертывание и службу. Но я не совсем уверен, правильно ли я это делаю. Ниже я предоставляю развертывание и конфигурацию услуг.
конфигурация развертывания
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
arg, я получаю
level=error msg="Get http://<vm_ip>:8901: net/http: HTTP/1.x transport connection broken: malformed HTTP response
Итак, я думаю, мне нужно использовать https и найти способ решить проблемы с сертификацией ...