Я пытаюсь отслеживать показатели 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 и найти способ решить проблемы с сертификацией. .