Мы хотим, чтобы наша установка Prometheus очищала метрики обоих контейнеров внутри контейнера.
Один контейнер предоставляет метрики через HTTPS на порт 443, тогда как другой контейнер предоставляет их через HTTP на порт 8080. Оба контейнера предоставляют метрики по одному и тому же пути, а именно /metrics
.
Если мы объявим prometheus.io / схема либо http, либо https, будет очищен только один контейнер. Для другого мы всегда получаем: server returned HTTP status 400 Bad Request
То же самое происходит, если мы вообще не определяем prometheus.io / схема . Затем Прометей будет использовать http для обоих портов и произойдет сбой для контейнера, который отображает метрики на порту 443, поскольку он будет ожидать только HTTPS-запросов.
Есть ли способ сообщить Прометею, как именно он будет очищать отдельные контейнеры в нашем развертывании? Какие существуют обходные пути для получения метрик обоих контейнеров?
Версия
Кубернетес: 1.10.2
Прометей: 2.2.1
Отрывок развертывания
apiVersion: apps/v1
kind: Deployment
metadata:
name: xxx
namespace: xxx
spec:
selector:
matchLabels:
app: xxx
template:
metadata:
labels:
app: xxx
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
spec:
containers:
- name: container-1
image: xxx
ports:
- containerPort: 443
- name: container-2
image: xxx
ports:
- containerPort: 8080
Конфигурация Прометея:
- job_name: kubernetes-pods
scrape_interval: 1m
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
kubernetes_sd_configs:
- api_server: null
role: pod
namespaces:
names: []
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
separator: ;
regex: "true"
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
separator: ;
regex: (.+)
target_label: __metrics_path__
replacement: $1
action: replace
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
separator: ;
regex: ([^:]+)(?::\d+)?;(\d+)
target_label: __address__
replacement: $1:$2
action: replace
- separator: ;
regex: __meta_kubernetes_pod_label_(.+)
replacement: $1
action: labelmap
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: kubernetes_namespace
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
target_label: kubernetes_pod_name
replacement: $1
action: replace