Mobile Foundation in IBM Cloud Private (ICP) überwachen

improve this page | report issue

Übersicht

In diesem Lernprogramm geht es um die Integration von Prometheus zur Überwachung der Mobile Foundation in IBM Cloud Private.

In der IBM Mobile Foundation kann das Feature mpMetrics-1.0 aktiviert werden, um Mobile Foundation Server, Analytics und das Application Center (instrumentiert mit der API MicroProfile metrics) überwachen zu können. Sie werden bei der Überwachung von JVM-Metriken und Metriken auf Systemebene Ihrer in ICP implementierten Mobile-Foundation-Container unterstützt.

Das Standardantwortformat auf eine API-Anforderung /metrics ist ein mit Prometheus kompatibles Textformat.

Vorgehensweise

Führen Sie die folgenden Schritte aus, um die Überwachung der Mobile Foundation in IBM Cloud Private einzurichten.

Schritt 1: Service IBM Monitoring implementieren

a. Implementieren Sie den Überwachungsservice (Monitoring) aus dem IBM Cloud-Private-Katalog.
b. Navigieren Sie zu Catalog, wählen Sie das Helm-Chart ibm-icpmonitoring aus und installieren Sie es. Das Helm-Chart wird in IBM Cloud Private installiert.
Helm-Chart 'icpmonitoring' auswählen

Schritt 2: Prometheus-Konfiguration configmap aktualisieren

Führen Sie den folgenden Befehl auf einem ordnungsgemäß abgeleiteten Terminal aus, bei dem es sich um eine CLI-Instanz mit den Kontextkonfigurationsdaten des ICP-Clusters handelt:

kubectl get svc | grep prometheus


Sie sehen eine Reihe von Services, die vom Chart ibm-icpmonitoring implementiert werden. In diesem Lernprogramm geht es vorrangig um den Service <Name_des_Helm-Release>-promethues (mfp-prometheus-prometheus). Sehen Sie sich dazu den folgenden Screenshot an:

Services implementieren
Zu jedem dieser Services gibt es ein configmap-Objekt. Um die Metrikdaten der Mobile-Foundation-Pods zu erhalten, müssen Sie die zum Service mfp-prometheus-prometheus gehörende configmap modifzieren. Fügen Sie die Annotation mfpfserver für Mobile Foundation Server, die Annotation mfpfanalytics für Analytics und die Annotation mfpfappcenter für das Application Center sowie einige weitere Attribute zu der Serviceimplmentierung hinzu.
Am einfachsten erreichen Sie dies, indem Sie das vorgesehehe configmap-Objekt mit dem folgenden Befehl auf einem abgeleiteten Terminal bearbeiten:

  kubectl edit configmap mfp-prometheus-prometheus


Mit diesem Befehl wird die angeforderte YAML-Datei im vi-Editor angezeigt. Blättern Sie bis zum Ende der Datei und fügen Sie den nachstehenden Text direkt vor der Zeile kind: ConfigMap ein.

Es folgt ein YAML-Snippet für Konfiguratin der Mobile-Foundation-Server-Metriken:

# Konfiguration für MFP-Server-Überwachung
- job_name: 'mfpf-server'
scheme: 'https'
basic_auth:
  username: 'mfpRESTUser'
  password: 'mfpadmin'
tls_config:
  insecure_skip_verify: true
kubernetes_sd_configs:
  - role: endpoints
relabel_configs:
  - source_labels: [__meta_kubernetes_service_annotation_mfpfserver]
    action: keep
    regex: true
  - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
    action: replace
    target_label: __address__
    regex: (.+)(?::\d+);(\d+)
    replacement: $1:$2
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)


Es folgt ein YAML-Snippet für die Konfiguration der Überwachung des Zustands von Mobile Foundation Server:

# Konfiguration für die Überwachung des MFP-Zustands<br/>
- job_name: 'mfp-healthcheck'
metrics_path: /mfpadmin/management-apis/2.0/diagnostic/healthCheck
scheme: 'https'
basic_auth:
  username: 'admin'
  password: 'admin'
tls_config:
  insecure_skip_verify: true
kubernetes_sd_configs:
  - role: endpoints
relabel_configs:
  - source_labels: [__meta_kubernetes_service_annotation_mfpfserver]
    action: keep
    regex: true
  - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
    action: replace
    target_label: __address__
    regex: (.+)(?::\d+);(\d+)
    replacement: $1:$2
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)


** Hinweis:** Für die Implementierung von Mobile Foundation Analytics und des Application Center gilt eine ähnliche Metrikkonfiguration.

Der Wert von job_name und source_labels ändert sich wie bereits erwähnt.

Schritt 3: Prometheus-Konfiguration nach Aktualisierung der Jobs neu laden

Führen Sie den folgenden curl-Befehl aus:

curl -s -XPOST http://<IP-Adresse des Proxyknotens>:31271/-/reload


Prometheus-Konfiguration

Schritt 4: Mobile-Foundation-Statistik überwachen

a. Öffnen Sie in einem Browser mit folgender URL die Prometheus-Konsole:

http://<IP-Adresse des Proxyknotens>:31271

b. Klicken Sie in der Prometheus-Konsole zuerst auf Status. Wählen Sie dann in der Dropdown-Liste Targets aus. Sehen Sie sich dazu den folgenden Screenshot an:
Prometheus-Konsole c. Sie sollten alle Ziele (Targets) sehen, für die Prometheus Statistikdaten erhalten hat.
Ziel 'appcenter'
Ziel 'all'
Im obigen Screenshot sind klar Mobile Foundation Server, Analytics und das Application Center als Ziele (Targets) angegeben. Sehen Sie sich den Wert des Attributs job_name in der YAML-Datei für die configmap in Schritt 2 an.
Wie haben unser Implementierungsbeispiel vertikal skaliert, sodass es jetzt zwei Replikate gibt. Aus dem Gunde zeigt Prometheus zwei Endpunkte für Server.

Wenn Sie in der Prometheus-Konsole auf Graph klicken, können Sie in der daraufhin erscheinenden Anzeige auf insert metric at cursor klicken. Sehen Sie sich dazu den folgenden Screenshot an:
Prometheus-Diagramm

Sie sehen eine Reihe von Metriken, die von der vorhandenen Prometheus-Konfiguration überwacht werden können. In der langen Liste der Metriken stammen Metriken, deren Namen mit base: beginnen, von den Mobile-Foundation-Containern, die das Feature mpMetrics-1.0 beigesteuert hat.
Mobile-Foundation-Metriken

Wenn Sie eine Liberty-Metrik (z. B. base:thread_count) auswählen, können Sie im Prometheus-Diagramm die Werte aus beiden Mobile-Foundation-Server-Pods sehen. Vergleichen Sie dazu den folgenden Screenshot:
Diagramm mit Threadanzahl

Sie können in Prometheus weitere relevante Metriken in grafischer oder numerischer Form untersuchen. Klicken Sie dazu auf Console.
Darüber hinaus können Sie Ihre Implementierungen skalieren. Binnen kurzem stimmt die Anzahl der Endpunkte in der Prometheus-Konsole mit der Anzahl der Replikate überein.

Hinweis: Wir haben hier für Kennwörter in der configmap-Datei von Prometheus Klartext verwendet. Wenn die Konfiguration in der Prometheus-Anzeige aufgerufen wird, wird das Kennwort jedoch nicht angezeigt.

Schritt 5: Metriken im Grafana-Dashboard anzeigen

Die Helm-Charts für die Mobile Foundation enthalten JSON-Beispieldateien für das Grafana-Dashboard. In dem in Schritt 1 implementierten Überwachungsservice (Monitoring) gibt es Grafana bereits.

Ein Grafana-Dashboard kann wie folgt aus einer JSON-Datei importiert werden:

  • Starten Sie Grafana vom implementierten Überwachungsservice aus.
    Workloads -> Helm releases -> <Name_des_Helm-Release> (z. B. mfp-prometheus) ->Launch)

  • Laden Sie die JSON-Dashboarddatei von GitHub auf Ihre lokale Workstation herunter.

  • Klicken Sie auf der Grafana-Schnittstelle auf die Schaltfläche Home und dann auf Import Dashboard.

  • Klicken Sie auf die Schaltfläche Upload .json file und wählen Sie die JSON-Datei für das Grafana-Dashboard in Ihrem lokalen Dateisystem aus.

  • Wählen Sie im Menü Select a data source die Option prometheus aus, sofern dieser Eintrag noch nicht ausgewählt ist.

  • Klicken Sie auf Import.

Im folgenden Screenshot sehen Sie ein Monitoring-Beispiel-Dashboard für Mobile Foundation Server:
Dashboard 1 Dashboard 2 Dashboard 3

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 27, 2020