Udostępnij przez


Monitorowanie klastra bazy danych MongoDB w usłudze Azure Kubernetes Service (AKS)

Z tego artykułu dowiesz się, jak monitorować klaster Bazy danych MongoDB w usłudze Azure Kubernetes Service (AKS) przy użyciu narzędzia Percona Monitoring and Management (PMM). Monitorowanie jest niezbędne do zapewnienia kondycji i wydajności klastra MongoDB. Monitorując kluczowe metryki, można zidentyfikować problemy na wczesnym etapie i podjąć działania naprawcze, aby zapobiec przestojom i utracie danych.

Konfigurowanie monitorowania i zarządzania platformą Percona (PMM) dla bazy danych MongoDB

Program PMM działa jako aplikacja klienta/serwera składająca się z serwera PMM i wielu klientów PMM zainstalowanych w każdym węźle bazy danych, którą chcesz monitorować. Klienci PMM zbierają podstawowe metryki i przesyłają te dane na serwer PMM. Następnie możesz nawiązać połączenie z serwerem PMM, aby wyświetlić metryki bazy danych na różnych pulpitach nawigacyjnych.

Włączanie monitorowania serwera Percona dla bazy danych MongoDB za pomocą narzędzia PMM

  1. Aby włączyć monitorowanie dla Percona Server for MongoDB, upewnij się, że pole pmm.enabled jest ustawione na true w zasobie niestandardowym PerconaServerMongoDB. To ustawienie można sprawdzić za pomocą kubectl describe polecenia .

    kubectl describe PerconaServerMongoDB ${AKS_MONGODB_CLUSTER_NAME} -n ${AKS_MONGODB_NAMESPACE}
    

    Przykładowe wyjście:

    Name:         cluster-aks-mongodb
    Namespace:    mongodb
    ...
    Spec:
      ...
      Pmm:
        Enabled:      true
        Image:        <your-acr-name>.azurecr.io/pmm-client:2.41.2
        Server Host:  monitoring-service
      ...
    
  2. pmm.enabled Jeśli pole jest ustawione na false, możesz je włączyć za pomocą polecenia kubectl patch.

    kubectl patch PerconaServerMongoDB ${AKS_MONGODB_CLUSTER_NAME} -n ${AKS_MONGODB_NAMESPACE} --type='merge' -p '{"spec":{"pmm":{"enabled":true}}}'
    

Tworzenie puli węzłów dla serwera PMM

Utwórz dedykowaną pulę węzłów dla serwera PMM przy użyciu az aks nodepool add polecenia .

az aks nodepool add \
--resource-group $MY_RESOURCE_GROUP_NAME \
--cluster-name $MY_CLUSTER_NAME \
--name pmmsrvpool \
--node-vm-size Standard_DS4_v2 \
--node-count 3 \
--zones 1 2 3 \
--mode User \
--output table

Utwórz dedykowaną pulę węzłów dla serwera PMM przy użyciu narzędzia terraform.

  1. Uruchom następujące polecenie, aby zaktualizować mongodb.tfvars utworzony wcześniej plik przy użyciu następującej konfiguracji:

    sed -i '/mongodbserver = {/,/}/s/^\( *}\)/  }, \
    pmmserver = {\
      name       = "pmmsrvpool" \
      vm_size    = "Standard_D2ds_v4" \
      node_count = 3 \
      zones      = [1, 2, 3] \
      os_type    = "Linux" \
    }/' mongodb.tfvars
    
  2. Zastosuj konfigurację Terraform do docelowego zasobu.

    terraform fmt
    terraform apply -var-file="mongodb.tfvars" -target module.default
    

Instalowanie serwera PMM

  1. Dodaj i zaktualizuj repozytorium Helm Percona za pomocą poleceń helm repo add i helm repo update.

    helm repo add percona https://percona.github.io/percona-helm-charts/
    helm repo update
    
  2. Zainstaluj serwer PMM przy użyciu helm install polecenia .

    helm install pmm --namespace mongodb \
    --set nodeSelector."kubernetes\.azure\.com/agentpool"="pmmsrvpool" \
    --set service.type="LoadBalancer" \
    --version 1.3.13 \
    percona/pmm
    
  3. Pobierz zewnętrzny adres IP serwera PMM przy użyciu kubectl get svc polecenia .

    export SERVICE_IP=$(kubectl get svc --namespace mongodb monitoring-service -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
      echo https://$SERVICE_IP:
    
  4. Pobierz hasło dla użytkownika administracyjnego kubectl get secret przy użyciu polecenia .

      export ADMIN_PASS=$(kubectl get secret pmm-secret --namespace mongodb -o jsonpath='{.data.PMM_ADMIN_PASSWORD}' | base64 --decode)      
    
  5. Teraz możesz uzyskać dostęp do serwera PMM przy użyciu zewnętrznego adresu IP i hasła użytkownika "admin". Dostęp do serwera PMM można również uzyskać na komputerze lokalnym przy użyciu kubectl port-forward polecenia .

    kubectl port-forward svc/monitoring-service -n mongodb 8080:80
    
  6. Po włączeniu przekierowania portów możesz uzyskać dostęp do serwera PMM, przechodząc do http://localhost:8080adresu .

Konfigurowanie serwera PMM

  1. Uzyskaj dostęp do serwera PMM przy użyciu użytkownika administratora i uzyskanego wcześniej hasła.

  2. Z menu bocznego wybierz Konfiguracja>Klucze API.

    Zrzut ekranu przedstawiający stronę internetową z menu pulpitu nawigacyjnego bazy danych Mongodb PMM.

  3. Na stronie Konfiguracja wybierz pozycję Dodaj klucz interfejsu API.

  4. Wprowadź następujące informacje:

    • Nazwa klucza (możesz podać dowolną żądaną nazwę)
    • Wybierz rolę administratora z listy rozwijanej
    • Wprowadź wartość w polu tekstowym Czas życia (umieść kursor na podpowiedzi, aby uzyskać więcej informacji)

    Zrzut ekranu strony internetowej pokazującej pulpit nawigacyjny PMM MongoDB z wygenerowanym kluczem API.

  5. Wybierz Dodaj.

  6. Skopiuj klucz z okna Utworzono klucz interfejsu API i wyeksportuj go do zmiennej środowiskowej, jak pokazano poniżej.

    export API_KEY="Paste your API Key here"
    

Ustaw klucz API jako tajny i odśwież zasób ExternalSecret przy użyciu nowego klucza tajnego.

  1. Ustaw klucz API jako tajny w Azure Key Vault, używając następującego polecenia.

    az keyvault secret set --vault-name $MY_KEYVAULT_NAME --name PMM-SERVER-API-KEY --value $API_KEY --output none
    
  1. Uruchom następujące polecenie, aby zaktualizować mongodb.tfvars utworzony wcześniej plik i zastosować konfigurację narzędzia terraform do zasobu docelowego za pomocą następujących poleceń:
    sed -i "/mongodb_kv_secrets = {/,/^ *}/s/\(PMM-SERVER-API-KEY *= *\"\)[^\"]*\"/\1$API_KEY\"/" mongodb.tfvars
    
    terraform fmt
    
    terraform apply -var-file="mongodb.tfvars" -target module.mongodb[0].azurerm_key_vault_secret.this
    
  1. Odśwież sekret w zasobie ExternalSecret przy użyciu polecenia kubectl annotate i nowego klucza tajnego.

    kubectl annotate es ${AKS_MONGODB_SECRETS_NAME} force-sync=$(date +%s) --overwrite -n ${AKS_MONGODB_NAMESPACE}
    

Testowanie serwera PMM

Po skonfigurowaniu serwera PMM można wygenerować dane testowe przy użyciu locust, zgodnie z opisem w temacie Validate resiliency of MongoDB cluster on Azure Kubernetes Service (AKS) (Weryfikowanie odporności klastra MongoDB w usłudze Azure Kubernetes Service (AKS). Po wygenerowaniu danych testowych można monitorować wydajność klastra MongoDB na serwerze PMM.

Zrzut ekranu przedstawiający stronę internetową z pulpitem nawigacyjnym PMM Mongodb.

Zrzut ekranu innej strony internetowej, pokazujący panel sterowania Mongodb programu PMM.

Następne kroki

W tym artykule przedstawiono sposób monitorowania klastra Bazy danych MongoDB w usłudze Azure Kubernetes Service (AKS) przy użyciu narzędzia Percona Monitoring and Management (PMM). Aby uzyskać więcej informacji o wdrażaniu obciążeń stanowych w usłudze AKS, zobacz następujące artykuły: