Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Implemente un recurso para utilizar 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.

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

Nota

No puedes usar Prometheus con una implementación multi-Kubernetes-clúster.

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

  • Kubernetes 1.16+

  • Helm 3+

Puedes instalar el Prometheus operador usando Helm. Para obtener más información, consulta las instrucciones de instalación.

Para instalar el Operador Prometheus usando Helm, ejecuta 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

Ejecuta el siguiente comando para instalar el Operador Kubernetes y crear un namespace que contenga al Operador Kubernetes y a los recursos:

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

Para aprender más, consulte Instalar los MongoDB Controllers para el Kubernetes operador.

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

Specify the full path to the mongodb-prometheus-sample.yaml file. Ensure you specify spec.credentials and spec.cloudManager.configMapRef.name.

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

This command creates two secrets that contain authentication for a new MongoDB user and basic HTTP authentication for the Prometheus endpoint. The command creates both secrets in the mongodb namespace.

This command also creates a ServiceMonitor that configures Prometheus to consume this resource's metrics. This command creates the ServiceMonitor in the prometheus-system namespace.

  1. Para instalar cert-manager utilizando Helm, consulta la documentación de instalación de cert-manager.

  2. Para crear un Issuer de cert-manager, consulta la documentación de configuración de cert-manager

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

Importante

NO usar esta configuración en entornos de producción. Un experto en seguridad debe aconsejarle sobre cómo configurar TLS.

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

Nota

tlsSecretKeyRef.name points at a secret of type kubernetes.io/tls that holds a Server certificate.

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 debes configurar el Prometheus ServiceMonitor para que apunte al endpoint HTTPS.

Para actualizar el ServiceMonitor, ejecuta 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 endpoint HTTPS (definido en /spec/endpoints/0/scheme). También configuraste spec/endpoints/0/tlsConfig/insecureSkipVerify a true, para que Prometheus no verifique los certificados TLS en el extremo de MongoDB.

Prometheus ahora debería poder raspar el objetivo de MongoDB mediante HTTPS.

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

Este archivo de muestra especifica un recurso simple de MongoDB con un usuario y el atributo spec.prometheus con autenticación HTTP básica y sin TLS. La muestra te 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 tu 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
...