Condividi tramite


Esercitazione: Connettersi a un servizio Prometheus self-hosted in un cluster del servizio Azure Kubernetes usando un endpoint privato gestito

Questa guida illustra le fasi dell'installazione di Prometheus, un toolkit open source di monitoraggio e generazione di avvisi, in un cluster del servizio Azure Kubernetes. Si userà quindi l'endpoint privato gestito di Grafana con gestione Azure per connettersi al server Prometheus e visualizzarne i dati in un dashboard Grafana.

In questa esercitazione apprenderai a:

  • Creare un cluster del servizio Azure Kubernetes
  • Installare Prometheus
  • Aggiungere un servizio di collegamento privato al server Prometheus
  • Connettersi a un endpoint privato gestito
  • Visualizzare i dati di Prometheus in un dashboard Grafana

Prerequisiti

Prima di iniziare, verificare di disporre di quanto segue:

Creare un cluster del servizio Azure Kubernetes

  1. Accedere all'interfaccia della riga di comando di Azure eseguendo il comando az login.

    az login
    

    Se sono presenti più sottoscrizioni di Azure, selezionare la propria sottoscrizione di Azure con il comando az account set -s <your-azure-subscription-id>.

  2. Installare o aggiornare kubectl.

    az aks install-cli
    
  3. Creare due variabili bash/zsh, che verranno usate nei comandi successivi. Se si usa un'altra shell, modificare la sintassi seguente.

    RESOURCE_GROUP=myResourceGroup 
    AKS_NAME=myaks
    
  4. Creare un gruppo di risorse. In questo esempio, il gruppo di risorse viene creato nell'area di Azure Stati Uniti centro-occidentali.

    az group create --name $RESOURCE_GROUP --location westcentralus
    
  5. Creare un nuovo cluster del servizio Azure Kubernetes usando il comando az aks create. In questo caso viene creato un cluster a tre nodi usando il tipo di macchina virtuale con possibilità di burst della serie B, conveniente e adatto per carichi di lavoro di test/sviluppo di piccole dimensioni come questo.

    az aks create --resource-group $RESOURCE_GROUP \
      --name $AKS_NAME \
      --node-count 3 \
      --node-vm-size Standard_B2s \
      --generate-ssh-keys
    

    Il completamento di questa operazione potrebbe richiedere alcuni minuti.

  6. Eseguire l'autenticazione nel cluster creato.

    az aks get-credentials \
      --resource-group $RESOURCE_GROUP \
      --name $AKS_NAME
    

    È ora possibile accedere al cluster Kubernetes con kubectl.

  7. Usare kubectl per visualizzare i nodi creati.

    kubectl get nodes
    

Installare Prometheus

Prometheus viene comunemente installato tramite prometheus-operator, che consente di usare la distribuzione e la gestione native di Kubernetes per Prometheus e i relativi componenti di monitoraggio. In questa esercitazione vengono usati i grafici Helm kube-prometheus-stack per distribuire prometheus-operator.

  1. Aggiungere il repository helm-charts e quindi aggiornare l'elenco dei repository.

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    
  2. Installare il grafico Helm in uno spazio dei nomi denominato monitoring. Questo spazio dei nomi viene creato automaticamente.

    helm install prometheus \
      prometheus-community/kube-prometheus-stack \
      --namespace monitoring \
      --create-namespace
    
  3. Il comando helm richiede di controllare lo stato dei pod distribuiti. Esegui il comando seguente:

    kubectl --namespace monitoring get pods
    
  4. Prima di continuare, assicurarsi che lo stato di tutti i pod sia "Running". Se non raggiungono lo stato Running, è consigliabile risolvere gli eventuali problemi che lo impediscono.

Il servizio di collegamento privato di Azure consente l'utilizzo del servizio Kubernetes tramite il collegamento privato tra diverse reti virtuali di Azure. Il servizio Azure Kubernetes ha un'integrazione nativa con il servizio di collegamento privato di Azure e consente di annotare un oggetto servizio Kubernetes per creare un servizio di collegamento privato corrispondente in Azure.

Vedere di seguito il contenuto del file pls-prometheus-svc.yaml:

apiVersion: v1
kind: Service
metadata:
  name: prom-pls-svc
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true" # Use an internal LB with PLS
    service.beta.kubernetes.io/azure-pls-create: "true"
    service.beta.kubernetes.io/azure-pls-name: promManagedPls
    service.beta.kubernetes.io/azure-pls-proxy-protocol: "false"
    service.beta.kubernetes.io/azure-pls-visibility: "*"
spec:
  type: LoadBalancer
  selector:
    # app: myApp
    app.kubernetes.io/name: prometheus
    prometheus: prometheus-kube-prometheus-prometheus # note that this is related to the release name
  ports:
    - name: http-web
      protocol: TCP
      port: 9090
      targetPort: 9090
  1. Eseguire il comando seguente per aggiungere il servizio di collegamento privato al server Prometheus.

    kubectl --namespace monitoring apply -f pls-prometheus-svc.yaml
    
  2. Il servizio di collegamento privato con nome promManagedPls viene creato nel gruppo di risorse gestite del servizio Azure Kubernetes. Questo processo richiede qualche minuto.

Connettersi a un endpoint privato gestito

  1. Se non si ha ancora un'area di lavoro gestita di Azure per Grafana, crearne una seguendo le indicazioni di Guida introduttiva: Creare un'area di lavoro Grafana gestita di Azure.

  2. Aprire l'area di lavoro gestita di Azure per Grafana e passare a Rete>Endpoint privato gestito>Aggiungi.

    Screenshot della piattaforma Azure che mostra la pagina degli endpoint privati gestiti in una risorsa Grafana con gestione Azure.

  3. Immettere un nome per l'endpoint privato gestito e selezionare la propria sottoscrizione di Azure.

  4. In Tipo di risorsa selezionare Microsoft.Network/privateLinkServices (servizi di collegamento privato) e in Risorsa di destinazione selezionare il servizio di collegamento privato promManagedPls creato nel passaggio precedente. A ogni endpoint privato gestito viene assegnato un indirizzo IP privato. È anche possibile specificare un nome di dominio per l'endpoint privato gestito. Il servizio Grafana con gestione Azure garantisce che questo dominio venga risolto nell'indirizzo IP privato dell'endpoint privato gestito nell'ambiente di Grafana con gestione Azure. Ad esempio, impostare il dominio su *.prom.my-own-domain.com.

    Screenshot della piattaforma Azure che mostra le informazioni di Prometheus immesse per il nuovo endpoint privato gestito.

  5. Approvare la connessione all'endpoint privato passando alla risorsa promManagedPls. In Impostazioni passare a Connessioni endpoint privato, selezionare la connessione usando la casella di controllo e quindi selezionare Approva.

    Screenshot della piattaforma Azure che mostra l'azione di approvazione della connessione.

  6. Dopo aver approvato la connessione all'endpoint privato, tornare alla risorsa Grafana con gestione Azure e selezionare il pulsante Aggiorna nella scheda Endpoint privato gestito per sincronizzare Connection state. Lo stato diventerà quindi Approvato.

    Screenshot della piattaforma Azure che mostra il pulsante Aggiorna.

Visualizzare i dati di Prometheus in un dashboard Grafana

  1. Aggiungere l'origine dati di Prometheus in Grafana dal portale di Grafana. Per altre informazioni, passare a Aggiungere un'origine dati. L'URL di Prometheus in questo caso è http://prom-service.prom.my-own-domain.com:9090.

    Screenshot della piattaforma Grafana che mostra l'aggiunta di Prometheus come origine dati.

  2. Per sfruttare l'origine dati Prometheus self-hosted, provare a usare il dashboard Node Exporter Full con ID 1860. Per altre linee guida, passare a Importare un dashboard da Grafana Labs.

    Screenshot della piattaforma Grafana di Azure che mostra il dashboard Prometheus di esempio.

Passaggio successivo

Informazioni su come usare gli account del servizio.