Grafana-Cloudwatch-Prometheus (2 серии деталей)
В предыдущем посте мы запустили Grafana с использованием данных CloudWatch. Хотя это дает нам много понимания ресурсов AWS, он не говорит нам, как наши приложения делают в нашем кластере Kubernetes. Знание ресурсов, которые потребляют наши приложения, могут помочь предотвратить бедствия, например, когда приложения потребляют всю оперативную память на узле, заставляя его больше не функционировать, и теперь у нас есть мертвые узлы и приложения.
Чтобы мы могли просмотреть метрики на нашей панели панели Grafana, мы можем интегрировать их в датчик Prometheus и попросить промеовать метрики из наших узлов и приложений. Мы развернем Prometheus, используя Helm, и объясним больше на этом пути.
- Требования
- Быстрая 5-минутная установка
- Что вы получаете
- Настраивать
- Место для хранения
- Установка
- Соединение Графаны с Прометеем
- Добавление мониторинга
- Как это работает?
- Метрики узла
- Метрики приложения
- Так как это настроено?
- Завершая
- Kubernetes Cluster, предпочтительно AWS EKS
- Шлем
Что вы получаете
- Прометей сервер
- Экспортер Node Prometheus
- Прометея оповещения менеджера
- Прометеус толчок шлюза
- Метрики штата Кубе
Настраивать
Место для хранения
Прежде чем мы начнем, стоит упомянуть требования к хранению файлов Прометея. Прометею сервер будет работать с прикрепленным томом (PV), и этот том будет использоваться в базе данных временных рядов для хранения различных метрик, которые он собирает в /данные
папка. Обратите внимание, что мы установили наш PV до 100GI в следующей строке values.yaml
Анкет
https://github.com/ryanoolala/recipes/blob/8a732de67f309a58a45dec2d29218dfb01383f9b/metrics/prometheus/5min/k8s/values.yaml#L765 ## Prometheus server data Persistent Volume size ## size: 100Gi
Это создаст объем EBS 100GIB, прикрепленный к нашему Prometheus-Server. Итак, насколько велик диск нам нужно предоставить? Существует несколько факторов, поэтому, как правило, будет трудно рассчитать правильный размер для текущего кластера, не зная, сколько размещено приложения, а также учитывать рост количества узлов/приложений.
Прометей также имеет период хранения данных по умолчанию в 15 дней, это предотвращение роста объема данных на неопределенный срок и может помочь нам контролировать размер данных, поскольку он удалит данные о показателях старше 15 дней.
В Docs Prometheus они предлагают расчет с использованием этой формулы с 1-2 bytes_per_sample
# https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects needed_disk_space = retention_time_seconds * ingested_samples_per_second * bytes_per_sample
Мне сложно рассчитать даже с существующей настройкой, поэтому, если это ваша первая настройка, я могу представить, что это еще больше. Итак, в качестве руководства я поделюсь с вами своей текущей настройкой и использованием диска, чтобы вы могли оценить, сколько места на дисковом пространстве вы хотите предоставить.
В моем кластере я бегаю
- 20 узлов EC2
- ~ 700 стручки
- По умолчанию интервалы скраски
- 15 -дневное удержание
Мое текущее использование диска составляет ~ 70 г.
Если цена 100 Гиб хранения приемлема для вас, в моем регионе это около 12 долларов США в месяц. Я думаю, что это хорошая отправная точка, и вы можете сэкономить время и усилия на расчет для подготовки хранилища и просто начать с этого.
Обратите внимание, что я запускаю Prometheus 2.x, который имеет улучшенный уровень хранения по сравнению с Prometheus 1 и показал, что он уменьшил использование хранения и, следовательно, более низкую потребность в диске, см. блог
С этим, давайте запустим наше приложение Prometheus.
Установка
$ helm install prometheus stable/prometheus -f https://github.com/ryanoolala/recipes/blob/master/metrics/prometheus/5min/k8s/values.yaml --create-namespace --namespace prometheus
Убедитесь, что все стручки Prometheus работают
kubectl get pod -n prometheus NAME READY STATUS RESTARTS AGE prometheus-alertmanager-78b5c64fd5-ch7hb 2/2 Running 0 67m prometheus-kube-state-metrics-685dccc6d8-h88dv 1/1 Running 0 67m prometheus-node-exporter-8xw2r 1/1 Running 0 67m prometheus-node-exporter-l5pck 1/1 Running 0 67m prometheus-pushgateway-567987c9fd-5mbdn 1/1 Running 0 67m prometheus-server-7cd7d486cb-c24lm 2/2 Running 0 67m
Соединение Графаны с Прометеем
Чтобы получить доступ к пользовательскому интерфейсу Grafana, запустите Kubectl Port -Forward SVC/Grafana -n Grafana 8080: 80
, перейти к http://localhost: 8080 и войдите в систему с пользователем администратора, если вам нужны учетные данные, см. Предыдущий пост по инструкциям.
Перейдите в раздел DataSource под колесом настроек и нажмите «Добавить источник данных»
Если вы выполнили мои шаги, ваша настройка Prometheus создаст услугу с именем Прометей-Сервер
В пространстве имен Прометея. Поскольку Grafana и Prometheus размещены в том же кластере, мы можем просто использовать назначенную внутреннюю запись, чтобы Grafana обнаружил Prometheus.
Под URL
Textbox, Enter http://prometheus-server.prometheus.svc.cluster.local: 80
. Это DNS -запись Prometheus, которая будет разрешена для любого капсула в кластере, включая наш Pod Grafana. Ваша настройка должна выглядеть так.
Нажмите «Сохранить и тестировать», и Графана скажет вам, что источник данных работает.
Добавление мониторинга
Теперь, когда Прометей настроен и начал собирать метрики, мы можем начать визуализировать данные. Вот несколько панелей мониторинга, чтобы вы начали.
https://grafana.com/grafana/dashboards/315 https://grafana.com/grafana/dashboards/1860 https://grafana.com/grafana/dashboards/11530
Мышь над значком «+» и выберите «Импорт», вставьте идентификатор панели панели в текстовую поле и нажмите «Загрузить»
Выберите наш DataSource Prometheus, который мы добавили на предыдущем шаге в раскрывающемся выборе
У вас будет приборная панель, которая выглядит так
Возможно, вы заметили «N/A» в нескольких панелях приборной панели, это распространенная проблема на различных панелях мониторинга из -за несовместимых версий Prometheus/Kubernetes с изменениями в метрических метках и т. Д. Нам придется отредактировать панель и отлаживать запросы, чтобы исправить их. Если слишком много ошибок, я предложу найти другую панель, пока вы не найдете ту, которая работает и соответствует вашим потребностям.
Возможно, вы задавались вопросом, как доступны все эти показатели, даже если вы просто развернули их, не настраивая что -либо, кроме дискового пространства. Чтобы понять архитектуру Прометея, ознакомьтесь с их Документация Анкет Я приложил архитектурную диаграмму из документов здесь для справки.
Мы будем держать это проще, только сосредоточившись на том, как мы получаем метрики узла и приложения (управляющие стручками). Помните, что в начале статьи мы отметили различные приложения Prometheus, которые вы получите, чтобы следовать этому руководству.
Prometheus-Server Pod будет тянуть метрики через HTTP-конечные точки, наиболее обычно /метрики
Конечная точка из различных источников.
Метрики узла
Когда мы установили Prometheus, появляется Daemonset Prometheus-Node-Exporter Daemonset. Это гарантирует, что каждый узел в кластере будет иметь одну стручку узел-экспортера, который отвечает за получение метрик узлов и выявление их на его /Метрики
конечная точка.
Метрики приложения
Прометеус-Сервер обнаружит услуги через API Kubernetes, чтобы найти стручки с конкретными аннотациями . В рамках конфигурации развертывания приложения вы обычно увидите следующие аннотации в различных других приложениях.
metadata: annotations: prometheus.io/path: /metrics prometheus.io/port: "4000" prometheus.io/scrape: "true
Это то, на что будет следить Прометея-Сервер, чтобы очистить метрики из стручков.
Так как это настроено?
Prometheus загрузит свою конфигурацию соскобки из файла с именем Prometheus.yml
который представляет собой конфигурацию, установленную в Prometheus-Server Pod. Во время нашей установки с использованием диаграммы Helm этот файл настраивается внутри values.yaml
, см. исходный код в values.yaml#l1167 Анкет Целевые показатели Scrape настроены на различных заданиях, и вы увидите несколько заданий, настроенных по умолчанию, каждая из которых обслуживает конкретную конфигурацию того, как и когда очистить.
Пример для наших метрик приложений найден на
#https://github.com/ryanoolala/recipes/blob/8a732de67f309a58a45dec2d29218dfb01383f9b/metrics/prometheus/5min/k8s/values.yaml#L1444 - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.+) - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 target_label: __address__ - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: kubernetes_pod_name
Это то, что настраивает Prometheus-Server для очистки стручков с аннотациями, о которых мы говорили ранее.
При этом у вас будет функционирующий метрический коллекционер и панель инструментов, чтобы помочь начать путешествие по наблюдению в метрик. Прометей, который мы создали в этом руководстве, сможет обеспечить здоровую настройку в большинстве систем.
Тем не менее, есть одно ограничение, которое нужно принять к сведению, и это этот прометей не настроен на высокую доступность (HA)
Поскольку это использует объем упругих блоков (EBS), как мы объяснили в предыдущем посте, это не позволит нам расширить масштаб Prometheus-Server обеспечить лучшее время безотказной работы, если Prometheus Pod перезагружается, возможно, с -Ф-память (oomkilld) или нездоровые узлы, и если у вас есть оповещения, установленные с использованием метрик, это может быть раздражающей проблемой, так как вы на данный момент потеряете свои показатели, и слепые к текущей ситуации.
Решение этой проблемы — это то, что я еще предстоит развернуть себя, и когда я это сделаю, я напишу часть 3 этой серии, но если вы заинтересованы в том, чтобы попробовать ее, посмотрите Танос Анкет
Надеюсь, что это было просто просто и легко следовать, и если у вас есть кластер Kubernetes, даже если он не находится на AWS, эта настройка Prometheus все еще актуальна и развернута в любой системе, с Storagedriver
Настройка для автоматического создания постоянных объемов в вашей инфраструктуре.
Grafana-Cloudwatch-Prometheus (2 серии деталей)
Оригинал: «https://dev.to/mcf/getting-started-with-grafana-and-prometheus-for-metric-monitoring-3e3j»