Оператор Prometheus обеспечивает встроенное развертывание Kubernetes и управление Prometheus и связанными с ним компонентами мониторинга. Цель этого проекта — упростить и автоматизировать настройку стека мониторинга на базе Prometheus для кластеров Kubernetes.
Оператор Prometheus включает в себя, помимо прочего, следующие функции:
Пользовательские ресурсы Kubernetes . Используйте пользовательские ресурсы Kubernetes для развертывания Prometheus, Alertmanager и связанных компонентов и управления ими.
Упрощенная конфигурация развертывания : настройте основные функции Prometheus, такие как версии, постоянство, политики хранения и реплики, из собственного ресурса Kubernetes.
Целевая конфигурация Prometheus : автоматическое создание целевых конфигураций мониторинга на основе знакомых запросов меток Kubernetes; нет необходимости изучать специальный язык конфигурации Prometheus.
Введение в оператор Prometheus приведено в руководстве по началу работы.
Сам по себе оператор считается готовым к производству. Статус каждого CRD см. в версиях определения пользовательского ресурса (CRD):
monitoring.coreos.com/v1
: стабильные CRD и API, изменения вносятся с обратной совместимостью.
monitoring.coreos.com/v1beta1
: нестабильные CRD и API, изменения могут произойти, но команда сосредоточена на том, чтобы их избежать. Мы поощряем использование в рабочей среде для пользователей, которые принимают риск внесения критических изменений.
monitoring.coreos.com/v1alpha1
/v1alpha1: нестабильные CRD и API, изменения могут происходить часто, поэтому мы предлагаем избегать его использования в критически важных средах.
Оператор Prometheus использует специальные ресурсы Kubernetes для упрощения развертывания и настройки Prometheus, Alertmanager и связанных компонентов мониторинга.
kube-prometheus предоставляет примеры конфигураций для полного стека мониторинга кластера на основе Prometheus и оператора Prometheus. Это включает в себя развертывание нескольких экземпляров Prometheus и Alertmanager, экспортеров метрик, таких как node_exporter для сбора метрик узла, целевую конфигурацию очистки, связывающую Prometheus с различными конечными точками метрик, а также примеры правил оповещения для уведомления о потенциальных проблемах в кластере.
Helm-чарт prometheus-community/kube-prometheus-stack предоставляет набор функций, аналогичный kube-prometheus. Эта диаграмма поддерживается сообществом Prometheus. Для получения дополнительной информации см. файл readme диаграммы.
Для оператора Prometheus требуется как минимум Kubernetes версии 1.16.0
. Если вы только начинаете работать с оператором Prometheus, настоятельно рекомендуется использовать последнюю стабильную версию.
Основной функцией оператора Prometheus является мониторинг API-сервера Kubernetes на предмет изменений в конкретных объектах и обеспечение соответствия текущих развертываний Prometheus этим объектам. Оператор действует на основе следующих определений пользовательских ресурсов (CRD):
Prometheus
, который определяет желаемое развертывание Prometheus.
PrometheusAgent
, который определяет желаемое развертывание Prometheus, но работает в режиме агента.
Alertmanager
, определяющий желаемое развертывание Alertmanager.
ThanosRuler
, который определяет желаемое развертывание Thanos Ruler.
ServiceMonitor
, который декларативно определяет, как следует отслеживать группы сервисов Kubernetes. Оператор автоматически генерирует конфигурацию парсинга Prometheus на основе текущего состояния объектов на сервере API.
PodMonitor
, который декларативно определяет, как следует отслеживать группу модулей. Оператор автоматически генерирует конфигурацию парсинга Prometheus на основе текущего состояния объектов на сервере API.
Probe
, который декларативно определяет, как следует отслеживать группы входов или статические цели. Оператор автоматически генерирует конфигурацию очистки Prometheus на основе определения.
ScrapeConfig
, который декларативно определяет конфигурации очистки, которые будут добавлены в Prometheus. Этот CustomResourceDefinition помогает очищать ресурсы за пределами кластера Kubernetes.
PrometheusRule
, который определяет желаемый набор правил оповещения и/или записи Prometheus. Оператор генерирует файл правил, который может использоваться экземплярами Prometheus.
AlertmanagerConfig
, который декларативно определяет подразделы конфигурации Alertmanager, позволяя маршрутизировать оповещения настраиваемым получателям и устанавливать правила запрета.
Оператор Prometheus автоматически обнаруживает изменения на сервере API Kubernetes для любого из вышеперечисленных объектов и обеспечивает синхронизацию соответствующих развертываний и конфигураций.
Чтобы узнать больше о CRD, представленных Оператором Прометея, посетите страницу дизайна.
Чтобы недействительные правила оповещения и записи Prometheus не приводили к сбоям в развернутом экземпляре Prometheus, предусмотрен веб-перехватчик доступа для проверки ресурсов PrometheusRule
при первоначальном создании или обновлении.
Дополнительную информацию об этой функции см. в руководстве пользователя.
Примечание. В этом кратком руководстве не рассматривается весь стек мониторинга; если это то, что вы ищете, см. проект kube-prometheus. Если вам нужен весь стек, но пакет bundle.yaml
уже применен, сначала удалите пакет ( kubectl delete -f bundle.yaml
).
Чтобы быстро опробовать только оператор Prometheus внутри кластера, выберите выпуск и выполните следующую команду, которая развернет оператор в пространстве имен default
:
kubectl создать -f Bundle.yaml
Если вы хотите развернуть оператор Prometheus в другом пространстве имен, вам также потребуется kustomize
:
NAMESPACE=my_namespace kustomize Edit set namespace $NAMESPACE && kubectl create -k .
Примечание. Обязательно адаптируйте пространство имен в ClusterRoleBinding при развертывании в пространстве имен, отличном от пространства имен по умолчанию.
Чтобы запустить Оператор вне кластера:
делать scripts/run-external.sh <имя кластера kubectl>
Чтобы удалить оператор и Prometheus, сначала удалите все пользовательские ресурсы, созданные вами в каждом пространстве имен. Оператор автоматически завершит работу и удалит модули Prometheus и Alertmanager, а также связанные с ними ConfigMaps.
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); делать kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
Через пару минут можно идти дальше и удалять самого оператора.
kubectl удалить -f Bundle.yaml
Оператор автоматически создает службы в каждом пространстве имен, где вы создали ресурсы Prometheus или Alertmanager, и определяет три пользовательских определения ресурсов. Вы можете очистить их сейчас.
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); делать kubectl delete --ignore-not-found --namespace=$n служба, управляемая Prometheus, alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com alertmanagerconfigs.monitoring.coreos.com Scrapeconfigs.monitoring.coreos.com
См. ТЕСТИРОВАНИЕ
См. ВКЛАД.
Если вы обнаружите уязвимость безопасности, связанную с оператором Prometheus, не сообщайте об этом, открывая проблему на GitHub, а вместо этого отправьте электронное письмо сопровождающим проекта, найденного в файле MAINTAINERS.md.
Ознакомьтесь с документацией по устранению неполадок, чтобы узнать о распространенных проблемах и часто задаваемых вопросах (FAQ).
Логотип организации «Прометей-оператор» был создан и предоставлен Бьянкой Ченг Костанцо.