#kubernetes #prometheus
#kubernetes #prometheus
Вопрос:
У меня есть 3 кластера kubernetes (prod, test, monitoring). Я новичок в prometheus, поэтому я протестировал его, установив в свою тестовую среду с диаграммой руля:
# https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack
Но если я хочу получить показатели из кластеров prod и test, мне придется повторить ту же установку helm, и каждый «куб-прометей-стек» будет автономным в своем собственном кластере. Это совсем не идеально. Я пытаюсь найти способ создать единый prometheus / grafana, который объединял бы / объединял метрики с сервера prometheus каждого кластера.
Я нашел эту ссылку, в которой говорится о федерации prometheus:
https://prometheus.io/docs/prometheus/latest/federation/
Если установить диаграмму управления «куб-прометей-стек» и избавиться от grafana в 2 других кластерах, как я могу сделать так, чтобы 3-й «куб-прометей-стек» в 3-м кластере очищал метрики от 2 других?
Спасибо
Ответ №1:
Необходимо изменить конфигурацию для prometheus federate, чтобы он мог извлекать метрики из других кластеров, как описано в документации:
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- 'source-prometheus-1:9090'
- 'source-prometheus-2:9090'
- 'source-prometheus-3:9090'
params
проверка полей на наличие заданий для извлечения метрик. В этом конкретном примере
Он очистит любую серию с меткой job=»prometheus» или именем метрики, начинающимся с job: с серверов Prometheus в источнике-prometheus-{1,2,3}:9090
Вы можете ознакомиться со следующими статьями, чтобы получить более полное представление о федерации prometheus:
Ответ №2:
Здесь у вас есть несколько вариантов:
Вариант 1:
Вы можете добиться этого, купив vmagent или grafana-agent в кластерах prod и test и настроив удаленную запись на них в свой кластер мониторинга.
Но в этом случае вам нужно будет установить kube-state-metrics и node-exporter отдельно в prod и тестовый кластер.
Также важно добавить дополнительную метку для имени кластера (или любого уникального идентификатора) перед отправкой метрик на удаленную запись, чтобы убедиться, что правила записи из «kube-prometheus-stack» работают правильно
Вариант 2:
Вы можете установить victoria-metrics-k8s-stack chart. Он имеет ту же функциональность, что и kube-prometheus-stack — также устанавливает набор компонентов, записывающих правила и панели мониторинга.
В этом случае вы устанавливаете victoria-metrics-k8s-stack в каждый кластер, но с разными значениями. Для мониторинга кластера вы можете использовать значения по умолчанию, с
grafana:
sidecar:
dashboards:
multicluster: true
и правильно настроенный вход для vmsingle
Для prod и тестового кластера вам необходимо отключить кучу компонентов
defaultRules:
create: false
vmsingle:
enabled: false
alertmanager:
enabled: false
vmalert:
enabled: false
vmagent:
spec:
remoteWrite:
- url: "<vmsingle-ingress>/api/v1/write"
externalLabels:
cluster: <cluster-name>
grafana:
enabled: false
defaultDashboardsEnabled: false
в этом случае chart развернет vmagent, kube-state-metrics, node-exporter и очистит конфигурации для vmagent.
Ответ №3:
Вы могли бы попробовать посмотреть на волновой фронт. Сейчас это коммерческий инструмент, но вы можете получить бесплатную 30-дневную пробную версию — кроме того, он понимает PromQL. Таким образом, по сути, вы могли бы использовать одни и те же правила и конфигурации prometheus для всех кластеров, а затем использовать wavefront для простого подключения ко всем этим экземплярам prom.
Другим вариантом может быть Thanos, но я никогда не использовал его лично.
Комментарии:
1. К сожалению, это для клиента, я не могу использовать Wavefront.