Docs Menu
Docs Home
/ /
/ / /

Implementar un recurso para usar con Prometheus

Puede usar el archivo mongodb-prometheus-sample.yaml para implementar un recurso de MongoDB en su clúster de Kubernetes, con un ServiceMonitor para indicar a Prometheus cómo consumir datos de métricas de ese recurso.

El ejemplo especifica un recurso MongoDB simple con un usuario y el spec.prometheus atributo con autenticación HTTP básica y sin TLS. El ejemplo permite probar las métricas que MongoDB envía a Prometheus.

Nota

No se puede utilizar Prometheus con una implementación de varios clústeres de Kubernetes.

Probamos esta configuración con 0.54 la versión del operador Prometheus.

  • Kubernetes 1.16+

  • Timón 3+

Puedes instalar Prometheus Operator con Helm. Para obtener más información, consulta las instrucciones de instalación.

Para instalar el operador Prometheus usando Helm, ejecute los siguientes comandos:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace <prometheus-system> \
--create-namespace

Ejecute el siguiente comando para instalar el operador de Kubernetes y crear un espacio de nombres que contenga el operador de Kubernetes y los recursos:

helm install enterprise-operator mongodb/enterprise-operator \
--namespace <mongodb> --create-namespace

Para obtener más información, consulte Instalar el operador MongoDB Enterprise Kubernetes.

Puede usar el archivo mongodb-prometheus-sample.yaml para implementar un recurso de MongoDB en su clúster de Kubernetes, con un ServiceMonitor para indicar a Prometheus cómo consumir datos de métricas de ese recurso.

Puede aplicar la muestra directamente con el siguiente comando:

Nota

Especifique la ruta completa al archivo mongodb-prometheus-sample.yaml. Asegúrese de especificar spec.credentials spec.cloudManager.configMapRef.namey.

kubectl apply -f <mongodb-prometheus-sample.yaml>

Este comando crea dos secretos que contienen la autenticación para un nuevo usuario de MongoDB y la autenticación HTTP básica para el punto final de Prometheus. El comando crea ambos secretos en el mongodb espacio de nombres.

Este comando también crea un ServiceMonitor que configura Prometheus para consumir las métricas de este recurso. Este comando crea el ServiceMonitor en el prometheus-system espacio de nombres.

  1. Para instalar cert-manager usando Helm, consulte la documentación de instalación de cert-manager.

  2. Para crear un administrador de Issuer certificados, consulte la documentación de configuración del administrador de certificados

  3. Para crear un certificado, consulte la documentación de uso de cert-manager.

Importante

¡NO use esta configuración en entornos de producción! Un experto en seguridad le aconsejará sobre cómo configurar TLS.

Para habilitar TLS, debe agregar una nueva entrada a la sección del recurso personalizado spec.prometheus de MongoDB. Ejecute la siguiente operación de parche para agregar la entrada necesaria.

Nota

tlsSecretKeyRef.name apunta a un secreto de tipo kubernetes.io/tls que contiene un certificado de servidor.

kubectl patch mdbc mongodb --type='json' \
-p='[{"op": "add", "path": "/spec/prometheus/tlsSecretKeyRef", "value":{"name": "prometheus-target-cert"}}]' \
--namespace mongodb

La siguiente respuesta aparece:

mongodbenterprise.mongodbenterprise.mongodb.com/mongodb patched

Después de unos minutos, el recurso MongoDB debería volver a la fase de ejecución. Ahora debe configurar Prometheus ServiceMonitor para que apunte al punto final HTTPS.

Para actualizar ServiceMonitor, ejecute el siguiente comando para parchear el recurso nuevamente:

kubectl patch servicemonitors mongodb-sm --type='json' \
-p='
[
{"op": "replace", "path": "/spec/endpoints/0/scheme", "value": "https"},
{"op": "add", "path": "/spec/endpoints/0/tlsConfig", "value": {"insecureSkipVerify": true}}
]
' \
--namespace mongodb

Aparece la siguiente respuesta:

servicemonitor.monitoring.coreos.com/mongodb-sm patched

Con estos cambios, el nuevo ServiceMonitor apunta al punto final HTTPS (definido /spec/endpoints/0/scheme en). También se spec/endpoints/0/tlsConfig/insecureSkipVerify configura true como para que Prometheus no verifique los certificados TLS en MongoDB.

Prometheus ahora debería poder rastrear el objetivo MongoDB usando HTTPS.

Cree el siguiente mongodb-prometheus-sample.yaml archivo para implementar un recurso MongoDB en su clúster de Kubernetes, con un ServiceMonitor para indicar a Prometheus cómo consumir datos de métricas de este.

Este archivo de ejemplo especifica un recurso MongoDB simple con un usuario y el atributo con autenticación spec.prometheus HTTP básica y sin TLS. El ejemplo permite probar las métricas que MongoDB envía a Prometheus.

Para obtener más información, consulte Configuración de Prometheus.

---
apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-replica-set
spec:
members: 3
version: 8.0.0
cloudManager:
configMapRef:
name: <project-configmap>
credentials: <credentials-secret>
type: ReplicaSet
persistent: true
prometheus:
passwordSecretRef:
# SecretRef to a Secret with a 'password' entry on it.
name: metrics-endpoint-password
# change this value to your Prometheus username
username: prometheus-username
# Enables HTTPS on the prometheus scrapping endpoint
# This should be a reference to a Secret type kuberentes.io/tls
# tlsSecretKeyRef:
# name: <prometheus-tls-cert-secret>
# Port for Prometheus, default is 9216
# port: 9216
#
# Metrics path for Prometheus, default is /metrics
# metricsPath: '/metrics'
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
# This needs to match `spec.ServiceMonitorSelector.matchLabels` from your
# `prometheuses.monitoring.coreos.com` resouce.
labels:
release: prometheus
name: mongodb-sm
# Make sure this namespace is the same as in `spec.namespaceSelector`.
namespace: mongodb
spec:
endpoints:
# Configuring a Prometheus Endpoint with basic Auth.
# `prom-secret` is a Secret containing a `username` and `password` entries.
- basicAuth:
password:
key: password
name: metrics-endpoint-creds
username:
key: username
name: metrics-endpoint-creds
# This port matches what we created in our MongoDB Service.
port: prometheus
# If using HTTPS enabled endpoint, change scheme to https
scheme: http
# Configure different TLS related settings. For more information, see:
# https://github.com/prometheus-operator/prometheus-operator/blob/main/pkg/apis/monitoring/v1/types.go#L909
# tlsConfig:
# insecureSkipVerify: true
# What namespace to watch
namespaceSelector:
matchNames:
# Change this to the namespace the MongoDB resource was deployed.
- mongodb
# Service labels to match
selector:
matchLabels:
app: my-replica-set-svc
---
apiVersion: v1
kind: Secret
metadata:
name: metrics-endpoint-creds
namespace: mongodb
type: Opaque
stringData:
password: 'Not-So-Secure!'
username: prometheus-username
...

Los siguientes ejemplos muestran las definiciones de recursos necesarias para utilizar Prometheus con su recurso MongoDB.

Para obtener más información, consulte Configuración de Prometheus.

---
apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-replica-set
spec:
members: 3
version: 8.0.0
cloudManager:
configMapRef:
name: <project-configmap>
credentials: <credentials-secret>
type: ReplicaSet
persistent: true
prometheus:
passwordSecretRef:
name: metrics-endpoint-password
username: prometheus-username
...
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
release: prometheus
name: mongodb-sm
namespace: mongodb
spec:
endpoints:
- basicAuth:
password:
key: password
name: metrics-endpoint-creds
username:
key: username
name: metrics-endpoint-creds
port: prometheus
scheme: http
namespaceSelector:
matchNames:
- mongodb
selector:
matchLabels:
app: my-replica-set-svc
...
---
apiVersion: v1
kind: Secret
metadata:
name: metrics-endpoint-creds
namespace: mongodb
type: Opaque
stringData:
password: 'Not-So-Secure!'
username: prometheus-username
...

Volver

Clúster fragmentado

En esta página