Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/ /

Distribuir um recurso para usar com o Prometheus

Nesta página

  • Início rápido
  • Crie um recurso MongoDB
  • Opcional: habilite o TLS no endpoint do Prometheus
  • mongodb-prometheus-sample.yaml
  • Exemplos

Você pode usar o arquivo mongodb-prometheus-sample.yaml para distribuir um recurso do MongoDB em seu cluster do Kubernetes, com um ServiceMonitor para indicar ao Prometheus como consumir dados de métricas dele.

A amostra especifica um recurso MongoDB simples com um usuário, e o atributo spec.prometheus com autenticação HTTP básica e nenhum TLS. A amostra permite testar as métricas que o MongoDB envia para Prometheus.

Observação

Você não pode usar o Prometheus com um sistema de vários clusters Kubernetes.

Testamos esta configuração com 0.54 a versão do Operador Prometeu.

  • Kubernetes 1.16+

  • Elmo 3+

Você pode instalar o operador Prometheus usando o Helm. Para saber mais, consulte as instruções de instalação.

Para instalar o operador Prometheus usando o Helm, execute os seguintes 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

Execute o seguinte comando para instalar o Operador Kubernetes e criar um namespace para conter o Operador Kubernetes e recursos:

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

Para saber mais, consulte Instalar o MongoDB Enterprise Kubernetes Operator.

Você pode usar o arquivo mongodb-prometheus-sample.yaml para distribuir um recurso MongoDB no seu cluster Kubernetes, com um ServiceMonitor para orientar o Prometheus na coleta de métricas

Você pode aplicar a amostra diretamente com o seguinte comando:

Observação

Especifique o caminho completo para o arquivo mongodb-prometheus-sample.yaml . Certifique-se de especificar spec.credentials e spec.cloudManager.configMapRef.name.

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

Este comando cria dois segredos que contêm autenticação para um novo usuário MongoDB e autenticação HTTP básica para o endpoint Prometheus. O comando cria os dois segredos no mongodb namespace .

Este comando também cria um ServiceMonitor que configura o Prometheus para consumir as métricas desse recurso. Este comando cria o ServiceMonitor no namespace prometheus-system .

  1. Para instalar o cert-manager usando o Helm, consulte a documentação de instalação doert-manager.

  2. Para criar um Issuer de gerenciamento seguro, consulte a documentação de configuração de gerenciamento certo

  3. Para criar um certificado, consulte a documentação de uso do cert-manager .

Importante

NÃO use essa configuração em ambientes de produção! Um especialista em segurança deve orientá-lo sobre como configurar o TLS.

Para habilitar o TLS, você deve adicionar uma nova entrada na seção spec.prometheus do recurso personalizado MongoDB. Execute a seguinte operação de patch para adicionar a entrada necessária.

Observação

tlsSecretKeyRef.name pontos em um segredo do tipo kubernetes.io/tls que possui um certificado de servidor MongoDB.

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

A seguinte resposta é exibida:

mongodbenterprise.mongodbenterprise.mongodb.com/mongodb patched

Após alguns minutos, o recurso MongoDB deve retornar à fase de Execução. Agora você deve configurar o ServiceMonitor do Prometheus para apontar para o ponto de extremidade HTTPS.

Para atualizar o ServiceMonitor, execute o seguinte comando para corrigir o recurso novamente:

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

A seguinte resposta é exibida:

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

Com essas mudanças, o novo ServiceMonitor aponta para o ponto de extremidade HTTPS (definido no /spec/endpoints/0/scheme). Você também definiu spec/endpoints/0/tlsConfig/insecureSkipVerify como true, para que o Prometheus não verifique os certificados TLS no lado do MongoDB.

O Prometheus agora deve ser capaz de raspar o alvo MongoDB usando HTTPS.

Crie o seguinte arquivo mongodb-prometheus-sample.yaml para implantar um recurso do MongoDB em seu cluster do Kubernetes, com um ServiceMonitor para indicar ao Prometheus como consumir dados de métricas dele.

Este arquivo de amostra especifica um recurso MongoDB simples com um usuário, e o atributo spec.prometheus com autenticação HTTP básica e nenhum TLS. A amostra permite testar as métricas que o MongoDB envia para Prometheus.

Para saber mais, consulte Configurações do Prometheus.

---
apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-replica-set
spec:
members: 3
version: 6.0.6-ent
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
...

Os exemplos a seguir mostram as definições de recursos necessárias para usar o Prometheus com seu recurso do MongoDB.

Para saber mais, consulte Configurações do Prometheus.

---
apiVersion: mongodb.com/v1
kind: MongoDB
metadata:
name: my-replica-set
spec:
members: 3
version: 6.0.6-ent
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
...

Voltar

Implementar um cluster fragmentado