El operador Prometheus proporciona implementación y administración nativa de Kubernetes de Prometheus y los componentes de monitoreo relacionados. El propósito de este proyecto es simplificar y automatizar la configuración de una pila de monitoreo basada en Prometheus para clústeres de Kubernetes.
El operador Prometheus incluye, entre otras, las siguientes características:
Recursos personalizados de Kubernetes : utilice recursos personalizados de Kubernetes para implementar y administrar Prometheus, Alertmanager y componentes relacionados.
Configuración de implementación simplificada : configure los fundamentos de Prometheus, como versiones, persistencia, políticas de retención y réplicas desde un recurso nativo de Kubernetes.
Configuración de destino de Prometheus : genere automáticamente configuraciones de destino de monitoreo basadas en consultas de etiquetas familiares de Kubernetes; no es necesario aprender un lenguaje de configuración específico de Prometheus.
Para obtener una introducción al operador Prometheus, consulte la guía de introducción.
Se considera que el operador en sí está listo para la producción. Consulte las versiones de Definición de recursos personalizados (CRD) para conocer el estado de cada CRD:
monitoring.coreos.com/v1
: CRD y API estables , los cambios se realizan de forma compatible con versiones anteriores.
monitoring.coreos.com/v1beta1
: CRD y API inestables , pueden ocurrir cambios, pero el equipo está enfocado en evitarlos. Fomentamos el uso en producción para los usuarios que aceptan el riesgo de realizar cambios importantes.
monitoring.coreos.com/v1alpha1
: CRD y API inestables , pueden ocurrir cambios con frecuencia y sugerimos evitar su uso en entornos de misión crítica.
El operador de Prometheus utiliza recursos personalizados de Kubernetes para simplificar la implementación y configuración de Prometheus, Alertmanager y los componentes de monitoreo relacionados.
kube-prometheus proporciona configuraciones de ejemplo para una pila de monitoreo de clúster completa basada en Prometheus y Prometheus Operador. Esto incluye la implementación de múltiples instancias de Prometheus y Alertmanager, exportadores de métricas como node_exporter para recopilar métricas de nodos, configuración de destino de raspado que vincula Prometheus con varios puntos finales de métricas y reglas de alerta de ejemplo para la notificación de problemas potenciales en el clúster.
El gráfico de Helm prometheus-community/kube-prometheus-stack proporciona un conjunto de funciones similar a kube-prometheus. Este gráfico es mantenido por la comunidad de Prometheus. Para obtener más información, consulte el archivo Léame del gráfico.
El operador Prometheus requiere al menos la versión 1.16.0
de Kubernetes. Si recién está comenzando con Prometheus Operador, se recomienda encarecidamente utilizar la última versión estable.
Una característica principal del Operador Prometheus es monitorear el servidor API de Kubernetes para detectar cambios en objetos específicos y garantizar que las implementaciones actuales de Prometheus coincidan con estos objetos. El Operador actúa sobre las siguientes Definiciones de Recursos Personalizados (CRD):
Prometheus
, que define una implementación deseada de Prometheus.
PrometheusAgent
, que define una implementación de Prometheus deseada, pero ejecutándose en modo Agente.
Alertmanager
, que define la implementación de Alertmanager deseada.
ThanosRuler
, que define la implementación deseada de Thanos Ruler.
ServiceMonitor
, que especifica de forma declarativa cómo se deben monitorear los grupos de servicios de Kubernetes. El operador genera automáticamente la configuración de raspado de Prometheus en función del estado actual de los objetos en el servidor API.
PodMonitor
, que especifica de forma declarativa cómo se debe monitorear el grupo de pods. El operador genera automáticamente la configuración de raspado de Prometheus en función del estado actual de los objetos en el servidor API.
Probe
, que especifica de forma declarativa cómo se deben monitorear los grupos de ingresos u objetivos estáticos. El operador genera automáticamente la configuración de raspado de Prometheus según la definición.
ScrapeConfig
, que especifica de forma declarativa las configuraciones de scrape que se agregarán a Prometheus. Esta CustomResourceDefinition ayuda a extraer recursos fuera del clúster de Kubernetes.
PrometheusRule
, que define un conjunto deseado de reglas de alerta y/o grabación de Prometheus. El operador genera un archivo de reglas, que pueden utilizar las instancias de Prometheus.
AlertmanagerConfig
, que especifica de forma declarativa subsecciones de la configuración de Alertmanager, lo que permite enrutar alertas a receptores personalizados y establecer reglas de inhibición.
El operador de Prometheus detecta automáticamente cambios en el servidor API de Kubernetes en cualquiera de los objetos anteriores y garantiza que las implementaciones y configuraciones coincidentes se mantengan sincronizadas.
Para obtener más información sobre los CRD introducidos por el operador Prometheus, consulte la página de diseño.
Para evitar que las reglas de grabación y alertas de Prometheus no válidas provoquen fallas en una instancia de Prometheus implementada, se proporciona un webhook de admisión para validar los recursos PrometheusRule
durante la creación o actualización inicial.
Para obtener más información sobre esta función, consulte la guía del usuario.
Nota: este inicio rápido no proporciona una pila de monitoreo completa; Si eso es lo que buscas, consulta el proyecto kube-prometheus. Si desea la pila completa, pero ya ha aplicado el bundle.yaml
, elimine el paquete primero ( kubectl delete -f bundle.yaml
).
Para probar rápidamente solo el operador Prometheus dentro de un clúster, elija una versión y ejecute el siguiente comando que implementa el operador en el espacio de nombres default
:
kubectl crear -f paquete.yaml
Si desea implementar el operador Prometheus en un espacio de nombres diferente, también necesita kustomize
:
NAMESPACE=my_namespace kustomize editar establecer espacio de nombres $NAMESPACE && kubectl create -k .
Nota: asegúrese de adaptar el espacio de nombres en ClusterRoleBinding si realiza la implementación en un espacio de nombres distinto del espacio de nombres predeterminado.
Para ejecutar el operador fuera de un clúster:
hacer scripts/run-external.sh <nombre del clúster kubectl>
Para eliminar el operador y Prometheus, primero elimine cualquier recurso personalizado que haya creado en cada espacio de nombres. El operador apagará y eliminará automáticamente los pods de Prometheus y Alertmanager, y los ConfigMaps asociados.
para n en $(kubectl get namespaces -o jsonpath={..metadata.name}); hacer eliminar kubectl --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
Después de un par de minutos, puedes continuar y eliminar el operador.
kubectl eliminar -f paquete.yaml
El operador crea automáticamente servicios en cada espacio de nombres donde creó recursos de Prometheus o Alertmanager y define tres definiciones de recursos personalizados. Puedes limpiarlos ahora.
para n en $(kubectl get namespaces -o jsonpath={..metadata.name}); hacer kubectl eliminar --ignore-not-found --namespace=$n servicio operado por prometheus alertmanager-operateddonekubectl eliminar --ignorar-no-encontrado definiciones de recursos personalizados 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
Ver PRUEBAS
Ver CONTRIBUIR.
Si encuentra una vulnerabilidad de seguridad relacionada con el Operador Prometheus, no la informe abriendo un problema de GitHub, sino envíe un correo electrónico a los mantenedores del proyecto que se encuentran en el archivo MAINTAINERS.md.
Consulte la documentación de solución de problemas para conocer problemas comunes y preguntas frecuentes (FAQ).
El logotipo de la organización operadora Prometheus fue creado y contribuido por Bianca Cheng Costanzo.