Оператор 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).
Логотип организации «Прометей-оператор» был создан и предоставлен Бьянкой Ченг Костанцо.