Monitoring

Edge for Private Cloud v4.19.01

In diesem Dokument werden die Monitoring-Techniken von Komponenten beschrieben, die von einer lokalen Bereitstellung von Apigee Edge unterstützt werden.

Übersicht

Edge unterstützt mehrere Möglichkeiten, Details zu Diensten abzurufen und ihren Status zu prüfen. In der folgenden Tabelle sind die Arten von Prüfungen aufgeführt, die Sie für die einzelnen infrage kommenden Dienste durchführen können:

Mgmt API
Dienst Arbeitsspeichernutzung [JMX*] Service Check Nutzer-/Organisations-/Bereitstellungsstatus axstatus Datenbankprüfung apigee-service-Status apigee-monit**
Verwaltungsserver
Message Processor
Postgres
Qpid
Router
Weitere Informationen Weitere Informationen Weitere Informationen Weitere Informationen Weitere Informationen Weitere Informationen Weitere Informationen

* Bevor Sie JMX verwenden können, müssen Sie es aktivieren, wie unter JMX aktivieren beschrieben.

** Der Dienst apigee-monit prüft, ob eine Komponente aktiv ist, und versucht, sie neu zu starten, wenn dies nicht der Fall ist. Weitere Informationen finden Sie unter Selbstheilung mit apigee-monit.

JMX- und Management API-Monitoring-Ports

Jede Komponente unterstützt JMX- und Management API-Monitoring-Aufrufe an verschiedenen Ports. In der folgenden Tabelle sind die JMX- und Management API-Ports für jeden Servertyp aufgeführt:

Komponente JMX-Port Management API-Port
Verwaltungsserver 1099 8080
Router 1100 8081
Message Processor 1101 8082
Qpid 1102 8083
Postgres 1103 8084

Monitoring mit JMX

Die Monitoring-Prozesse für den Management Server, den Message Processor, Qpid und Postgres verwenden alle JMX. JMX ist jedoch standardmäßig nur für Cassandra aktiviert und für alle anderen Edge-Komponenten standardmäßig deaktiviert. Sie müssen JMX daher für jede Komponente einzeln aktivieren, bevor Sie sie überwachen können.

Die JMX-Authentifizierung ist standardmäßig nicht aktiviert. Sie können die JMX-Authentifizierung für alle Komponenten aktivieren. Verwenden Sie für Cassandra die Anleitung unter JMX-Authentifizierung für Cassandra aktivieren.

JMX aktivieren

JMX ist standardmäßig nur für Cassandra aktiviert und für alle anderen Edge-Komponenten standardmäßig deaktiviert. In diesem Abschnitt wird beschrieben, wie Sie JMX für die anderen Edge-Komponenten aktivieren.

So aktivieren Sie JMX:

  1. Bearbeiten Sie die Konfigurationsdatei der Komponente. Diese Datei befindet sich unter opt/apigee/edge-component_name/bin/start. In Produktionsumgebungen befinden sich diese Konfigurationsdateien auf verschiedenen Maschinen.

    Wählen Sie auf jedem Server einen der folgenden Dateispeicherorte aus:

    • Verwaltungsserver: /opt/apigee/edge-management-server/bin/start
    • Message Processor: /opt/apigee/edge-message-processor/bin/start
    • Postgres: /opt/apigee/edge-postgres-server/bin/start
    • Qpid: /opt/apigee/edge-qpid-server/bin/start
    • Router: /opt/apigee/edge-router/bin/start

    Die Konfigurationsdatei des Management Servers auf dem Server befindet sich beispielsweise unter /opt/apigee/edge-management-server/bin/start.

  2. Fügen Sie der exec-Zeile, mit der die Komponente gestartet wird, die folgenden com.sun.management.jmxremote-Optionen hinzu:
    -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=port_number \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false

    Dabei ist port_number der JMX-Port für den Dienst. Die JMX-Portnummer Ihres Dienstes finden Sie unter JMX- und Management API-Monitoring-Ports.

    Wenn Sie beispielsweise JMX auf dem Management Server aktivieren möchten, fügen Sie der Konfigurationsdatei des Management Servers Folgendes hinzu:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts \
      -Djava.security.auth.login.config=$conf_path/jaas.config \
      -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path \
      -Ddata.dir=$data_dir \
      -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=1099 \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false \
       $* $debug_options com.apigee.kernel.MicroKernel

    In diesem Beispiel wird Port 1099 für den Management Server angegeben. Wie bereits erwähnt, hat jeder Dienst eine eigene Portnummer.

    Die bearbeitete Zeile in der Konfigurationsdatei sieht so aus:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false $* $debug_options com.apigee.kernel.MicroKernel
  3. Speichern Sie die Konfigurationsdatei.
  4. Starten Sie die Komponente mit dem Befehl restart neu.

    Führen Sie beispielsweise den folgenden Befehl aus, um den Management Server neu zu starten:

    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Die Authentifizierung für JMX ist standardmäßig nicht aktiviert. Sie können die JMX-Authentifizierung für alle Komponenten aktivieren, wie unter JMX-Authentifizierung aktivieren beschrieben. Informationen zum Aktivieren der JMX-Authentifizierung für Cassandra finden Sie unter JMX-Authentifizierung für Cassandra aktivieren.

JMX-Authentifizierung aktivieren

Die JMX-Authentifizierung ist standardmäßig nicht aktiviert. Sie können die JMX-Authentifizierung für alle Komponenten aktivieren. Verwenden Sie für Cassandra die Anleitung unter JMX-Authentifizierung für Cassandra aktivieren.

Führen Sie die folgende change_jmx_auth-Aktion auf allen Knoten aus, um die JMX-Authentifizierung zu aktivieren:

/opt/apigee/apigee-service/bin/apigee-service component change_jmx_auth [options|-f config_file]

Wobei:

  • component ist einer der folgenden Werte:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options gibt Folgendes an:
    • -u username
    • -p password
    • -e [y|n] (aktivieren oder deaktivieren)
  • config_file gibt den Speicherort einer Konfigurationsdatei an, in der Sie Folgendes definieren:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (wenn nicht festgelegt oder nicht mit -p übergeben, werden Sie dazu aufgefordert)

Sie können entweder die Befehlszeilenoptionen oder die Konfigurationsdatei verwenden, um den Nutzernamen, das Passwort und den Aktivierungs-/Deaktivierungsstatus zu definieren. Sie geben nicht sowohl eine Reihe von Optionen als auch eine Konfigurationsdatei an.

Im folgenden Beispiel wird die JMX-Authentifizierung für den Management Server mithilfe der Befehlszeilenoptionen aktiviert:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -u foo -p bar -e y

Im folgenden Beispiel wird eine Konfigurationsdatei anstelle von Befehlszeilenoptionen verwendet:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -f /tmp/my-config-file

Wenn Sie Edge auf mehreren Knoten ausführen, führen Sie den Befehl auf allen Knoten aus und geben Sie denselben Nutzernamen und dasselbe Passwort an.

Wenn Sie die JMX-Authentifizierung in der Befehlszeile deaktivieren möchten, verwenden Sie die Option „-e n“, wie im folgenden Beispiel gezeigt:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -e n

Mit JConsole überwachen

Verwenden Sie JConsole (ein JMX-kompatibles Tool), um Systemdiagnosen und Prozessstatistiken zu verwalten und zu überwachen. Mit JConsole können Sie von Ihren Servern bereitgestellte JMX-Statistiken nutzen und in einer grafischen Oberfläche anzeigen lassen. Weitere Informationen finden Sie unter JConsole verwenden.

JConsole verwendet die folgende Dienst-URL, um die über JMX angebotenen JMX-Attribute (MBeans) zu überwachen:

service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi

Wobei:

  • IP_address ist die IP-Adresse des Servers, den Sie überwachen möchten.
  • port_number ist die JMX-Portnummer des Servers, den Sie überwachen möchten.

Wenn Sie beispielsweise den Management Server überwachen möchten, geben Sie einen Befehl wie den folgenden ein (vorausgesetzt, die IP-Adresse des Servers ist 216.3.128.12):

service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi

In diesem Beispiel wird Port 1099 angegeben, der JMX-Port des Management Servers. Informationen zu anderen Ports finden Sie unter Monitoring-Ports für JMX und Management API.

In der folgenden Tabelle sind die allgemeinen JMX-Statistiken aufgeführt:

JMX-MBeans JMX-Attribute

Arbeitsspeicher

HeapMemoryUsage

NonHeapMemoryUsage

Nutzung

Mit der Management API überwachen

Edge enthält mehrere APIs, mit denen Sie Dienstprüfungen auf Ihren Servern durchführen sowie Ihre Nutzer, Organisationen und Bereitstellungen prüfen können. In diesem Abschnitt werden diese APIs beschrieben.

Dienstprüfungen durchführen

Die Management API bietet mehrere Endpunkte zum Überwachen und Diagnostizieren von Problemen mit Ihren Diensten. Zu diesen Endpunkten gehören:

Endpunkt Beschreibung
/servers/self/up

Prüft, ob ein Dienst ausgeführt wird. Für diesen API-Aufruf ist keine Authentifizierung erforderlich.

Wenn der Dienst ausgeführt wird, gibt dieser Endpunkt die folgende Antwort zurück:

<ServerField>
  <Up>true</Up>
</ServerField>

Wenn der Dienst nicht ausgeführt wird, erhalten Sie eine Antwort ähnlich der folgenden (je nachdem, um welchen Dienst es sich handelt und wie Sie ihn geprüft haben):

curl: Failed connect to localhost:port_number; Connection refused
/servers/self

Gibt Informationen zum Dienst zurück, darunter:

  • Konfigurationsattribute
  • Startzeit und Betriebszeit
  • Build-, RPM- und UUID-Informationen
  • Interner und externer Hostname und IP-Adresse
  • Region und Pod
  • <isUp>-Attribut, das angibt, ob der Dienst ausgeführt wird

Für diesen API-Aufruf müssen Sie sich mit Ihren Apigee-Administratoranmeldedaten authentifizieren.

Wenn Sie diese Endpunkte verwenden möchten, rufen Sie ein Dienstprogramm wie curl mit Befehlen auf, die die folgende Syntax verwenden:

curl http://host:port_number/v1/servers/self/up -H "Accept: [application/json|application/xml]"
curl http://host:port_number/v1/servers/self -u username:password -H "Accept: [application/json|application/xml]"

Wobei:

  • host ist die IP-Adresse des Servers, den Sie prüfen möchten. Wenn Sie auf dem Server angemeldet sind, können Sie „localhost“ verwenden. Andernfalls geben Sie die IP-Adresse des Servers sowie den Nutzernamen und das Passwort an.
  • port_number ist der Management API-Port für den Server, den Sie prüfen möchten. Dies ist für jeden Komponententyp ein anderer Port. Der Management API-Port des Management Servers ist beispielsweise 8080. Eine Liste der zu verwendenden Management API-Portnummern finden Sie unter JMX- und Management API-Monitoring-Ports.

Wenn Sie das Format der Antwort ändern möchten, können Sie den Header Accept als „application/json“ oder „application/xml“ angeben.

Im folgenden Beispiel wird der Status des Routers auf localhost (Port 8081) abgerufen:

curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"

Im folgenden Beispiel werden Informationen zum Message Processor unter 216.3.128.12 (Port 8082) abgerufen:

curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password
  -H "Accept: application/xml"

Nutzer-, Organisations- und Bereitstellungsstatus überwachen

Mit der Management API können Sie den Nutzer-, Organisations- und Bereitstellungsstatus Ihrer Proxys auf Management Servern und Message Processors überwachen. Führen Sie dazu die folgenden Befehle aus:

curl http://host:port_number/v1/users -u sysAdminEmail:password
curl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password

Dabei ist port_number entweder 8080 für den Management Server oder 8082 für den Message Processor.

Für diesen Aufruf müssen Sie sich mit dem Nutzernamen und Passwort Ihrer Systemverwaltung authentifizieren.

Der Server sollte für alle Aufrufe den Status „deployed“ zurückgeben. Wenn diese fehlschlagen, gehen Sie so vor:

  1. Prüfen Sie die Server-Logs auf Fehler. Die Logs befinden sich hier:
    • Verwaltungsserver: opt/apigee/var/log/edge-management-server
    • Message Processor: opt/apigee/var/log/edge-message-processor
  2. Führen Sie einen Aufruf an den Server aus, um zu prüfen, ob er ordnungsgemäß funktioniert.
  3. Entfernen Sie den Server aus dem ELB und starten Sie ihn dann neu:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    Wo service_name Folgendes ist:

    • edge-management-server
    • edge-message-processor

Status mit dem Befehl apigee-service prüfen

Sie können Fehler in Ihren Edge-Diensten beheben, indem Sie den Befehl apigee-service verwenden, wenn Sie auf dem Server angemeldet sind, auf dem der Dienst ausgeführt wird.

So prüfen Sie den Status eines Dienstes mit apigee-service:

  1. Melden Sie sich auf dem Server an und führen Sie den folgenden Befehl aus:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    Dabei kann service_name für folgendes stehen:

    • Verwaltungsserver: edge-management-server
    • Message Processor: edge-message-processor
    • Postgres: edge-postgres-server
    • Qpid: edge-qpid-server
    • Router: edge-router

    Beispiel:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. Wenn der Dienst nicht ausgeführt wird, starten Sie ihn:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. Prüfen Sie nach dem Neustart des Dienstes, ob er funktioniert. Verwenden Sie dazu entweder den zuvor verwendeten apigee-service status-Befehl oder die Management API, wie unter Mit der Management API überwachen beschrieben.

    Beispiel:

    curl -v http://localhost:port_number/v1/servers/self/up

    Dabei ist port_number der Management API-Port für den Dienst.

    In diesem Beispiel wird davon ausgegangen, dass Sie auf dem Server angemeldet sind und „localhost“ als Hostnamen verwenden können. Wenn Sie den Status per Remotezugriff mit der Management API prüfen möchten, müssen Sie die IP-Adresse des Servers angeben und den Nutzernamen und das Passwort des Systemadministrators in Ihren API-Aufruf einfügen.

Postgres-Monitoring

Postgres unterstützt mehrere Dienstprogramme, mit denen Sie den Status prüfen können. Diese Dienstprogramme werden in den folgenden Abschnitten beschrieben.

Organisationen und Umgebungen in Postgres prüfen

Mit dem folgenden curl-Befehl können Sie die Namen der Organisationen und Umgebungen prüfen, die auf dem Postgres-Server eingerichtet sind:

curl -v http://postgres_IP:8084/v1/servers/self/organizations

Das System sollte den Namen der Organisation und der Umgebung anzeigen.

Analysestatus prüfen

Sie können den Status der Postgres- und Qpid-Analyseserver mit dem folgenden curl-Befehl prüfen:

curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus

Das System sollte für alle Analyseserver einen Erfolgsstatus anzeigen, wie im folgenden Beispiel zu sehen:

{
  "environments" : [ {
    "components" : [ {
      "message" : "success at Thu Feb 28 10:27:38 CET 2013",
      "name" : "pg",
      "status" : "SUCCESS",
      "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]"
     }, {
      "message" : "success at Thu Feb 28 10:29:03 CET 2013",
      "name" : "qs",
      "status" : "SUCCESS",
      "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]"
     } ],
    "message" : "",
    "name" : "prod"
   } ],
  "organization" : "acme",
  "status" : "SUCCESS"
}

PostgreSQL-Datenbank

In diesem Abschnitt werden Techniken beschrieben, die Sie speziell für das Monitoring der Postgres-Datenbank verwenden können.

check_postgres.pl-Skript verwenden

Zum Überwachen der PostgreSQL-Datenbank können Sie das Standard-Monitoringskript check_postgres.pl verwenden. Weitere Informationen finden Sie unter http://bucardo.org/wiki/Check_postgres.

Vor dem Ausführen des Skripts:

  1. Sie müssen das Script check_postgres.pl auf jedem Postgres-Knoten installieren.
  2. Prüfen Sie, ob perl-Time-HiRes.x86_64 installiert ist. Dies ist ein Perl-Modul, das hochauflösende Alarm-, Ruhe-, gettimeofday- und Intervall-Timer implementiert. Sie können es beispielsweise mit dem folgenden Befehl installieren:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: Bevor Sie check_postgres.pl unter CentOS v7 verwenden, installieren Sie das RPM perl-Data-Dumper.x86_64.

check_postgres.pl-Ausgabe

Die Standardausgabe der API-Aufrufe mit check_postgres.pl ist Nagios-kompatibel. Führen Sie nach der Installation des Scripts die folgenden Prüfungen durch:

  1. Prüfen Sie die Datenbankgröße:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --critical='900 GB'
  2. Prüfen Sie die Anzahl der eingehenden Verbindungen zur Datenbank und vergleichen Sie sie mit der maximal zulässigen Anzahl von Verbindungen:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. Prüfen Sie, ob die Datenbank ausgeführt wird und verfügbar ist:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Prüfen Sie den Speicherplatz:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. Prüfen Sie die Anzahl der Organisationen und Umgebungen, die auf einem Postgres-Knoten eingerichtet wurden:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) as result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer

Datenbankprüfungen ausführen

Sie können prüfen, ob die richtigen Tabellen in der PostgreSQL-Datenbank erstellt wurden. Melden Sie sich mit dem folgenden Befehl in der PostgreSQL-Datenbank an:

psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee

Führen Sie dann diesen Befehl aus:

\d analytics."org.env.fact"

Systemstatus des Postgres-Prozesses prüfen

Sie können API-Prüfungen auf dem Postgres-Computer ausführen, indem Sie den folgenden curl-Befehl aufrufen:

curl -v http://postgres_IP:8084/v1/servers/self/health

Dieser Befehl gibt den Status ACTIVE zurück, wenn der Postgres-Prozess aktiv ist. Wenn der Postgres-Prozess nicht ausgeführt wird, wird der Status INACTIVE zurückgegeben.

Postgres-Ressourcen

Weitere Informationen zum Monitoring des Postgres-Dienstes finden Sie hier:

Apache Cassandra

JMX ist für Cassandra standardmäßig aktiviert und für den Remote-JMX-Zugriff auf Cassandra ist kein Passwort erforderlich.

JMX-Authentifizierung für Cassandra aktivieren

Sie können die JMX-Authentifizierung für Cassandra aktivieren. Anschließend müssen Sie bei allen Aufrufen des Dienstprogramms nodetool einen Nutzernamen und ein Passwort angeben.

So aktivieren Sie die JMX-Authentifizierung für Cassandra:

  1. Erstellen und bearbeiten Sie die Datei cassandra.properties:
    1. Bearbeiten Sie die Datei /opt/apigee/customer/application/cassandra.properties. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.
    2. Fügen Sie der Datei Folgendes hinzu.
      conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
      conf_cassandra-env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.password
      conf_cassandra-env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.access
    3. Speichern Sie die Datei cassandra.properties.
    4. Ändern Sie den Inhaber der Datei in „apigee:apigee“, wie im folgenden Beispiel gezeigt:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

    Weitere Informationen zum Festlegen von Tokens mithilfe von Attributdateien finden Sie unter Edge konfigurieren.

  2. jmx_auth.sh erstellen und bearbeiten:
    1. Erstellen Sie eine Datei am folgenden Speicherort, falls sie noch nicht vorhanden ist:
      /opt/apigee/customer/application/jmx_auth.sh
    2. Fügen Sie der Datei die folgenden Attribute hinzu:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. Speichern Sie die Datei jmx_auth.sh.
    4. Führen Sie die Datei aus:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. Kopieren und bearbeiten Sie die Datei jmxremote.password:
    1. Kopieren Sie die folgende Datei aus dem Verzeichnis $JAVA_HOME in das Verzeichnis /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
    2. Bearbeiten Sie die Datei jmxremote.password und fügen Sie Ihren JMX-Nutzernamen und Ihr JMX-Passwort mit der folgenden Syntax hinzu:
      JMX_USERNAME JMX_PASSWORD

      Dabei sind JMX_USERNAME und JMX_PASSWORD der JMX-Nutzername und das JMX-Passwort, die Sie zuvor festgelegt haben.

    3. Achten Sie darauf, dass die Datei „apigee“ gehört und der Dateimodus 400 ist:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. Kopieren und bearbeiten Sie die Datei jmxremote.access:
    1. Kopieren Sie die folgende Datei aus dem Verzeichnis $JAVA_HOME in das Verzeichnis /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
    2. Bearbeiten Sie die Datei „jmxremote.access“ und fügen Sie die folgende Rolle hinzu:
      JMX_USERNAME readwrite
    3. Achten Sie darauf, dass die Datei „apigee“ gehört und der Dateimodus 400 ist:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. Führen Sie configure auf Cassandra aus:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Starten Sie Cassandra neu:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Wiederholen Sie diesen Vorgang auf allen anderen Cassandra-Knoten.

JMX-Passwortverschlüsselung aktivieren

So aktivieren Sie die JMX-Passwortverschlüsselung:

  1. Öffnen Sie die Datei source/conf/casssandra-env.sh.
  2. Entfernen Sie die Kommentarzeichen für die folgenden Zeilen in der Datei:
    • JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config={T}conf_cassandra-env_java.security.auth.login.config{/T}"
    • JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.login.config=ApigeeSecureFileLoginModule"
  3. Generieren Sie in der Befehlszeile SHA1-Hashes der gewünschten Passwörter, indem Sie Folgendes eingeben: echo -n 'Secret' | openssl dgst -sha1
  4. Legen Sie das Passwort bzw. die Passwörter für den Nutzernamen in jmxremote.password fest.
  5. Ändern Sie die Datei cassandra-env.sh nach dem Update wieder in „Lesezugriff“.

JMX-Authentifizierung für Cassandra deaktivieren

So deaktivieren Sie die JMX-Authentifizierung für Cassandra:

  1. /opt/apigee/customer/application/cassandra.properties bearbeiten
  2. Entfernen Sie die folgende Zeile in der Datei:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Führen Sie „configure“ für Cassandra aus:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Starten Sie Cassandra neu:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Wiederholen Sie diesen Vorgang auf allen anderen Cassandra-Knoten.

JConsole verwenden: Aufgabenstatistiken überwachen

Verwenden Sie JConsole und die folgende Dienst-URL, um die über JMX angebotenen JMX-Attribute (MBeans) zu überwachen:

service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi

Dabei ist IP_address die IP-Adresse des Cassandra-Servers.

Cassandra-JMX-Statistiken

JMX-MBeans JMX-Attribute

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/audit/audits

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

Clusterknoten mit nodetool verwalten

Das nodetool-Dienstprogramm ist eine Befehlszeile für Cassandra, mit der Clusterknoten verwaltet werden. Das Dienstprogramm finden Sie unter /opt/apigee/apigee-cassandra/bin.

Die folgenden Aufrufe können auf allen Cassandra-Clusterknoten ausgeführt werden:

  1. Allgemeine Ringinformationen (auch für einzelne Cassandra-Knoten möglich): Suchen Sie nach „Up“ und „Normal“ für alle Knoten.
    nodetool [-u username -pw password] -h localhost ring

    Sie müssen Ihren Nutzernamen und Ihr Passwort nur übergeben, wenn Sie die JMX-Authentifizierung für Cassandra aktiviert haben.

    Die Ausgabe des obigen Befehls sieht so aus:

    Datacenter: dc-1
    ==========
    Address            Rack     Status State   Load    Owns    Token
    192.168.124.201    ra1      Up     Normal  1.67 MB 33,33%  0
    192.168.124.202    ra1      Up     Normal  1.68 MB 33,33%  5671...5242
    192.168.124.203    ra1      Up     Normal  1.67 MB 33,33%  1134...0484
  2. Allgemeine Informationen zu Knoten (Aufruf pro Knoten)
    nodetool [-u username -pw password]  -h localhost info

    Die Ausgabe des obigen Befehls sieht in etwa so aus:

    ID                     : e2e42793-4242-4e82-bcf0-oicu812
    Gossip active          : true
    Thrift active          : true
    Native Transport active: true
    Load                   : 273.71 KB
    Generation No          : 1234567890
    Uptime (seconds)       : 687194
    Heap Memory (MB)       : 314.62 / 3680.00
    Off Heap Memory (MB)   : 0.14
    Data Center            : dc-1
    Rack                   : ra-1
    Exceptions             : 0
    Key Cache              : entries 150, size 13.52 KB, capacity 100 MB, 1520781 hits, 1520923 requests, 1.000 recent hit rate, 14400 save period in seconds
    Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds
    Counter Cache          : entries 0, size 0 bytes, capacity 50 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds
    Token                  : 0
  3. Status des Thrift-Servers (Bereitstellung der Client-API)
    nodetool [-u username -pw password] -h localhost statusthrift

    Die Ausgabe des obigen Befehls sieht in etwa so aus:

    running
  4. Status von Datenstreamingvorgängen: Beobachten Sie den Traffic für Cassandra-Knoten:
    nodetool [-u username -pw password] -h localhost netstats

    Die Ausgabe des obigen Befehls sieht in etwa so aus:

    Mode: NORMAL
    Not sending any streams.
    Read Repair Statistics:
    Attempted: 151612
    Mismatch (Blocking): 0
    Mismatch (Background): 0
    Pool Name                    Active   Pending      Completed   Dropped
    Commands                        n/a         0              0         0
    Responses                       n/a         0              0       n/a

Weitere Informationen zu nodetool finden Sie unter Über das nodetool-Dienstprogramm.

Cassandra-Ressource

Weitere Informationen finden Sie unter der folgenden URL: http://www.datastax.com/docs/1.0/operations/monitoring.

Apache ZooKeeper

ZooKeeper-Status prüfen

  1. Prüfen Sie, ob der ZooKeeper-Prozess ausgeführt wird. ZooKeeper schreibt eine PID-Datei in opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Testen Sie die ZooKeeper-Ports, um sicherzustellen, dass Sie eine TCP-Verbindung zu den Ports 2181 und 3888 auf jedem ZooKeeper-Server herstellen können.
  3. Prüfen Sie, ob Sie Werte aus der ZooKeeper-Datenbank lesen können. Stellen Sie eine Verbindung mit einer ZooKeeper-Clientbibliothek (oder /opt/apigee/apigee-zookeeper/bin/zkCli.sh) her und lesen Sie einen Wert aus der Datenbank.
  4. Prüfen Sie den Status:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

ZooKeeper-Befehle mit vier Buchstaben verwenden

ZooKeeper kann über eine kleine Gruppe von Befehlen (vier Buchstaben) überwacht werden, die über netcat (nc) oder telnet an Port 2181 gesendet werden.

Weitere Informationen zu ZooKeeper-Befehlen finden Sie in der Apache ZooKeeper-Befehlsreferenz.

Beispiel:

  • srvr: Listet alle Details für den Server auf.
  • stat: Listet kurze Details zum Server und zu den verbundenen Clients auf.

Die folgenden Befehle können an den ZooKeeper-Port gesendet werden:

  1. Führen Sie den vierstelligen Befehl „ruok“ aus, um zu testen, ob der Server ohne Fehler ausgeführt wird. Eine erfolgreiche Antwort gibt „imok“ zurück.
    echo ruok | nc host 2181

    Liefert:

    imok
  2. Führen Sie den Befehl mit vier Buchstaben, stat, aus, um die Serverleistung und die Statistiken der verbundenen Clients aufzulisten:
    echo stat | nc host 2181

    Liefert:

    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients:
    /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0)
    /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433)
    /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347)
    /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692)
    Latency min/avg/max: 0/0/128
    Received: 26144
    Sent: 26160
    Connections: 4
    Outstanding: 0
    Zxid: 0x2000002c2
    Mode: follower
    Node count: 283
  3. Wenn netcat (nc) nicht verfügbar ist, können Sie stattdessen Python verwenden. Erstellen Sie eine Datei mit dem Namen zookeeper.py, die Folgendes enthält:
    import time, socket,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181))
    c.send(sys.argv[2])
    time.sleep(0.1)
    print c.recv(512)

    Führen Sie nun die folgenden Python-Zeilen aus:

    python zookeeper.py 192.168.124.201 ruok
    python zookeeper.py 192.168.124.201 stat

Test auf LDAP-Ebene

Sie können OpenLDAP überwachen, um zu sehen, ob die spezifischen Anfragen ordnungsgemäß verarbeitet werden. Mit anderen Worten: Prüfen Sie, ob eine bestimmte Suche das richtige Ergebnis liefert.

  1. Verwenden Sie ldapsearch (yum install openldap-clients), um den Eintrag des Systemadministrators abzufragen. Dieser Eintrag wird zur Authentifizierung aller API-Aufrufe verwendet.
    ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL

    Anschließend werden Sie zur Eingabe des LDAP-Administratorpassworts aufgefordert:

    Enter LDAP Password:

    Nachdem Sie das Passwort eingegeben haben, wird eine Antwort in folgendem Format angezeigt:

    dn:
    uid=admin,ou=users,ou=global,dc=apigee,dc=com
    objectClass: organizationalPerson
    objectClass: person
    objectClass: inetOrgPerson
    objectClass: top
    uid: admin
    cn: admin
    sn: admin
    userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ=
     =
    mail: opdk@google.com
  2. Prüfen Sie mit dem folgenden Befehl, ob der Management Server noch mit LDAP verbunden ist:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Liefert:

    {
      "emailId" : ADMIN,
      "firstName" : "admin",
      "lastName" : "admin"
    }

Sie können auch die OpenLDAP-Caches überwachen, um die Anzahl der Laufwerkszugriffe zu reduzieren und so die Leistung des Systems zu verbessern. Das Monitoring und die anschließende Anpassung der Cache-Größe auf dem OpenLDAP-Server können die Leistung des Verzeichnisservers stark beeinflussen. Sie können die Protokolldateien (opt/apigee/var/log) aufrufen, um Informationen zum Cache zu erhalten.