Come monitorare

Questo documento descrive le tecniche di monitoraggio dei componenti supportati da un deployment on-premise di Apigee Edge.

Panoramica

Edge supporta diversi modi per ottenere dettagli sui servizi e per controllarne gli stati. La tabella seguente elenca i tipi di controlli che puoi eseguire su ogni servizio idoneo:

API Mgmt
Servizio Utilizzo memoria [JMX*] Controllo del servizio Stato utente/dell'organizzazione/ dell'implementazione axstatus Controllo del database Stato di apigee-service apigee-monit**
Server di gestione
processore di messaggi
Postgres
Qpid
Router
Scopri di più Scopri di più Scopri di più Scopri di più Scopri di più Scopri di più Scopri di più

* Prima di poter utilizzare JMX, devi attivarlo, come descritto in Attivare JMX.

** Il servizio apigee-monit controlla se un componente è attivo e tenterà di riavviarlo se non lo è. Per saperne di più, vedi Auto-riparazione con apigee-monit.

Porte di monitoraggio JMX e API di gestione

Ogni componente supporta le chiamate di monitoraggio JMX e API di gestione su porte diverse. La seguente tabella elenca le porte JMX e API di gestione per ciascun tipo di server:

Componente Porta JMX Porta API di gestione
Server di gestione 1099 8080
Router 1100 8081
processore di messaggi 1101 8082
Qpid 1102 8083
Postgres 1103 8084

Utilizza JMX per monitorare

I processi di monitoraggio per Management Server, Message Processor, Qpid e Postgres tutti utilizzano JMX. Tuttavia, JMX è abilitato per impostazione predefinita solo per Cassandra e disabilitato per impostazione predefinita per tutti gli altri componenti di Edge. Pertanto, devi attivare JMX singolarmente per ogni componente prima di poterli monitorare.

L'autenticazione JMX non è abilitata per impostazione predefinita. Puoi attivare l'autenticazione JMX per tutti i componenti. Per Cassandra, utilizza le istruzioni in Abilitare l'autenticazione JMX per Cassandra.

Abilita JMX

JMX è abilitato per impostazione predefinita solo per Cassandra e disattivato per impostazione predefinita per tutti gli altri componenti di Edge. Questa sezione descrive come attivare JMX per gli altri componenti di Edge.

Per attivare JMX:

  1. Modifica il file di configurazione del componente. Questo file si trova in opt/apigee/edge-component_name/bin/start. Negli ambienti di produzione, questi file di configurazione si troveranno su macchine diverse.

    Scegli tra le seguenti posizioni di file su ciascun server:

    • Server di gestione: /opt/apigee/edge-management-server/bin/start
    • Processore di messaggi: /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

    Ad esempio, il file di configurazione del server di gestione sul server si trova all'indirizzo /opt/apigee/edge-management-server/bin/start.

  2. Aggiungi le seguenti opzioni com.sun.management.jmxremote alla riga exec che avvia il componente:
    -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

    dove port_number è la porta JMX per il servizio. Per ottenere il numero di porta JMX del servizio, consulta Porte di monitoraggio JMX e API di gestione.

    Ad esempio, per abilitare JMX sul server di gestione, aggiungi quanto segue al file di configurazione del server di gestione:

    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

    Questo esempio specifica la porta 1099 per il server di gestione. Come affermato in precedenza, ogni servizio ha un proprio numero di porta.

    La riga modificata nel file di configurazione ha il seguente aspetto:

    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. Salva il file di configurazione.
  4. Riavvia il componente con il comando restart.

    Ad esempio, per riavviare il server di gestione, esegui questo comando:

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

L'autenticazione per JMX non è abilitata per impostazione predefinita. Puoi attivare l'autenticazione JMX per tutti i componenti, come descritto in Attivare l'autenticazione JMX. Per attivare l'autenticazione JMX per Cassandra, consulta Attivare l'autenticazione JMX per Cassandra.

Attiva l'autenticazione JMX

L'autenticazione JMX non è abilitata per impostazione predefinita. Puoi attivare l'autenticazione JMX per tutti i componenti. Per Cassandra, segui le istruzioni riportate in Attivare l'autenticazione JMX per Cassandra

Per attivare l'autenticazione JMX, esegui la seguente azione change_jmx_auth su tutti i nodi:

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

Dove:

  • component è uno dei seguenti valori:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options specifica quanto segue:
    • -u username
    • -p password
    • -e [y|n] (attiva o disattiva)
  • config_file specifica la posizione di un file di configurazione in cui definisci quanto segue:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (se non impostato o non passato con -p, ti viene richiesto)

Puoi utilizzare le opzioni della riga di comando o il file di configurazione per definire il nome utente, la password e lo stato di attivazione/disattivazione. Non specifichi sia un insieme di opzioni sia un file di configurazione.

Il seguente esempio abilita l'autenticazione JMX per il server di gestione utilizzando le opzioni della riga di comando:

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

L'esempio seguente utilizza un file di configurazione anziché le opzioni della riga di comando:

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

Se esegui Edge su più nodi, esegui il comando su tutti i nodi specificando lo stesso nome utente e la stessa password.

Per disattivare l'autenticazione JMX sulla riga di comando, utilizza l'opzione "-e n", come mostrato nell'esempio seguente:

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

Monitoraggio con JConsole

Utilizza JConsole (uno strumento conforme a JMX) per gestire e monitorare il controllo dell'integrità e le statistiche di elaborazione. Con JConsole, puoi utilizzare le statistiche JMX esposte dai tuoi server e visualizzarle in un'interfaccia grafica. Per ulteriori informazioni, consulta Utilizzare JConsole.

JConsole utilizza il seguente URL di servizio per monitorare gli attributi JMX (MBean) offerti tramite JMX:

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

Dove:

  • IP_address è l'indirizzo IP del server che vuoi monitorare.
  • port_number è il numero di porta JMX del server che vuoi monitorare.

Ad esempio, per monitorare il server di gestione, esegui un comando simile al seguente (supponendo che l'indirizzo IP del server sia 216.3.128.12):

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

Tieni presente che questo esempio specifica la porta 1099, che è la porta JMX del server di gestione. Per altre porte, consulta Porte di monitoraggio JMX e API di gestione.

La tabella seguente mostra le statistiche JMX generiche:

MBean JMX Attributi JMX

Memoria

HeapMemoryUsage

NonHeapMemoryUsage

Utilizzo

Monitoraggio con l'API di gestione

Edge include diverse API che puoi utilizzare per eseguire controlli dei servizi sui tuoi server, nonché per controllare gli utenti, le organizzazioni e le implementazioni. Questa sezione descrive queste API.

Esegui controlli del servizio

L'API Management fornisce diversi endpoint per il monitoraggio e la diagnosi dei problemi relativi ai tuoi servizi. Questi endpoint includono:

Endpoint Descrizione
/servers/self/up

Controlla se un servizio è in esecuzione. Questa chiamata API non richiede l'autenticazione.

Se il servizio è in esecuzione, questo endpoint restituisce la seguente risposta:

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

Se il servizio non è in esecuzione, riceverai una risposta simile alla seguente (a seconda del servizio e di come lo hai controllato):

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

Restituisce informazioni sul servizio, tra cui:

  • Proprietà di configurazione
  • Ora di inizio e tempo di attività
  • Informazioni su build, RPM e UUID
  • Nome host e indirizzo IP interni ed esterni
  • Regione e pod
  • Proprietà <isUp>, che indica se il servizio è in esecuzione

Questa chiamata API richiede l'autenticazione con le credenziali di amministratore di Apigee.

Per utilizzare questi endpoint, richiama un'utilità come curl con comandi che utilizzano la seguente sintassi:

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]"

Dove:

  • host è l'indirizzo IP del server che vuoi controllare. Se hai eseguito l'accesso al server, puoi utilizzare "localhost"; in caso contrario, specifica l'indirizzo IP del server, nonché il nome utente e la password.
  • port_number è la porta dell'API di gestione per il server che vuoi controllare. Si tratta di una porta diversa per ogni tipo di componente. Ad esempio, la porta dell'API di gestione del server di gestione è 8080. Per un elenco dei numeri di porta dell'API di gestione da utilizzare, consulta Porte di monitoraggio JMX e API di gestione

Per modificare il formato della risposta, puoi specificare l'intestazione Accept come "application/json" o "application/xml".

Il seguente esempio recupera lo stato del router su localhost (porta 8081):

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

L'esempio seguente restituisce informazioni sul processore di messaggi alla porta 216.3.128.12 (porta 8082):

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

Monitora lo stato degli utenti, dell'organizzazione e del deployment

Puoi utilizzare l'API Management per monitorare lo stato di organizzazione, utente e di implementazione dei proxy su server di gestione e processori di messaggi eseguendo i seguenti comandi:

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

dove port_number è 8080 per il server di gestione o 8082 per il gestore dei messaggi.

Questa chiamata richiede l'autenticazione con il nome utente e la password di amministrazione del sistema.

Il server deve restituire uno stato "implementato" per tutte le chiamate. Se questi passaggi non risolvono il problema, procedi nel seguente modo:

  1. Verifica la presenza di eventuali errori nei log del server. I log si trovano all'indirizzo:
    • Server di gestione: opt/apigee/var/log/edge-management-server
    • Processore di messaggi: opt/apigee/var/log/edge-message-processor
  2. Esegui una chiamata al server per verificare se funziona correttamente.
  3. Rimuovi il server dall'ELB e riavvialo:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    Dove service_name è:

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

Controllare lo stato con il comando apigee-service

Puoi risolvere i problemi relativi ai servizi Edge utilizzando il comando apigee-service dopo aver eseguito l'accesso al server su cui è in esecuzione il servizio.

Per controllare lo stato di un servizio con apigee-service:

  1. Accedi al server ed esegui il seguente comando:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    Dove service_name è uno dei seguenti:

    • Server di gestione: edge-management-server
    • Processore di messaggi: edge-message-processor
    • Postgres: edge-postgres-server
    • Qpid: edge-qpid-server
    • Router: edge-router

    Ad esempio:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. Se il servizio non è in esecuzione, avvialo:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. Dopo aver riavviato il servizio, verifica che funzioni utilizzando il comando apigee-service status che hai utilizzato in precedenza o l'API Management descritta in Monitorare con l'API Management.

    Ad esempio:

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

    dove port_number è la porta dell'API di gestione per il servizio.

    Questo esempio presuppone che tu abbia eseguito l'accesso al server e che tu possa utilizzare "localhost" come nome host. Per verificare lo stato in remoto con l'API di gestione, devi specificare l'indirizzo IP del server e includere il nome utente e la password dell'amministratore di sistema nella chiamata API.

Monitoraggio di Postgres

Postgres supporta diverse utilità che puoi utilizzare per verificarne lo stato. Queste utilità sono descritte nelle sezioni seguenti.

Controllare organizzazioni e ambienti su Postgres

Puoi verificare i nomi delle organizzazioni e degli ambienti inseriti nel server Postgres utilizzando il seguente comando curl:

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

Il sistema deve mostrare il nome dell'organizzazione e dell'ambiente.

Verificare lo stato di Dati e analisi

Puoi verificare lo stato dei server di analisi Postgres e Qpid emettendo il seguente curl comando:

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

Il sistema dovrebbe visualizzare uno stato di operazione riuscita per tutti i server di analisi, come illustrato nell'esempio seguente:

{
  "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"
}

Database PostgreSQL

Questa sezione descrive le tecniche che puoi utilizzare specificamente per il monitoraggio del database Postgres.

Utilizzare lo script check_postgres.pl

Per monitorare il database PostgreSQL, puoi utilizzare uno script di monitoraggio standard, check_postgres.pl. Per ulteriori informazioni, consulta http://bucardo.org/wiki/Check_postgres.

Prima di eseguire lo script:

  1. Devi installare lo script check_postgres.pl su ogni nodo Postgres.
  2. Assicurati di aver installato perl-Time-HiRes.x86_64, un modulo Perl che implementa timer ad alta risoluzione per sveglie, sospensione, gettimeofday e intervallo. Ad esempio, puoi installarlo utilizzando il seguente comando:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: prima di utilizzare check_postgres.pl su CentOS 7, installa il pacchetto RPM perl-Data-Dumper.x86_64.

Output di check_postgres.pl

L'output predefinito delle chiamate API che utilizzano check_postgres.pl è compatibile con Nagios. Dopo aver installato lo script, esegui i seguenti controlli:

  1. Controlla le dimensioni del database:
    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. Controlla il numero di connessioni in entrata nel database e confrontalo con il numero massimo consentito di connessioni:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. Controlla se il database è in esecuzione e disponibile:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Controlla lo spazio su disco:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. Controlla il numero di organizzazioni e ambienti di cui è stato eseguito il provisioning in un nodo Postgres:
    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

Esegui controlli del database

Puoi verificare che nel database PostgreSQL vengano create le tabelle corrette. Accedi al database PostgreSQL utilizzando il seguente comando:

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

Dopodiché, esegui:

\d analytics."org.env.fact"

Controlla lo stato di salute del processo postgres

Puoi eseguire controlli dell'API sulla macchina Postgres richiamando il seguente comando curl:

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

Questo comando restituisce lo stato ACTIVE quando il processo postgres è attivo. Se il processo Postgres non è attivo, viene restituito lo stato INACTIVE.

Risorse Postgres

Per ulteriori informazioni sul monitoraggio del servizio Postgres, consulta le seguenti risorse:

Apache Cassandra

JMX è abilitato per impostazione predefinita per Cassandra e l'accesso JMX remoto a Cassandra non richiede una password.

Abilita l'autenticazione JMX per Cassandra

Puoi attivare l'autenticazione JMX per Cassandra. Dopodiché, ti verrà chiesto di passare un nome utente e una password a tutte le chiamate all'utilità nodetool.

Per abilitare l'autenticazione JMX per Cassandra:

  1. Crea e modifica il file cassandra.properties:
    1. Modifica il file /opt/apigee/customer/application/cassandra.properties. Se il file non esiste, creane uno.
    2. Aggiungi quanto segue al file:
      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. Salva il file cassandra.properties.
    4. Modifica il proprietario del file in apigee:apigee, come illustrato nell'esempio seguente:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

    Per ulteriori informazioni sull'utilizzo dei file delle proprietà per impostare i token, consulta Come configurare Edge.

  2. Creare e modificare jmx_auth.sh:
    1. Se non esiste, crea un file nella seguente posizione:
      /opt/apigee/customer/application/jmx_auth.sh
    2. Aggiungi le seguenti proprietà al file:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. Salva il file jmx_auth.sh.
    4. Crea il file di origine:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. Copia e modifica il file jmxremote.password:
    1. Copia il seguente file dalla directory $JAVA_HOME a /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
    2. Modifica il file jmxremote.password e aggiungi il tuo nome utente e la tua password JMX utilizzando la seguente sintassi:
      JMX_USERNAME JMX_PASSWORD

      Dove JMX_USERNAME e JMX_PASSWORD sono il nome utente e la password JMX che hai impostato in precedenza.

    3. Assicurati che il file sia di proprietà di "apigee" e che la modalità del file sia 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. Copia e modifica il file jmxremote.access:
    1. Copia il seguente file dalla directory $JAVA_HOME a /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
    2. Modifica il file jmxremote.access e aggiungi il seguente ruolo:
      JMX_USERNAME readwrite
    3. Assicurati che il file sia di proprietà di "apigee" e che la modalità del file sia 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. Esegui configure su Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. Riavvia Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. Ripeti questa procedura su tutti gli altri nodi Cassandra.

Attiva la crittografia delle password JMX

Per attivare la crittografia della password JMX, segui questi passaggi:

  1. Apri il file source/conf/casssandra-env.sh.
  2. Rimuovi il commento dalle seguenti righe nel file:
    • 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. Nella riga di comando, genera gli hash SHA1 delle password desiderate inserendo echo -n 'Secret' | openssl dgst -sha1
  4. Imposta le password in base al nome utente in jmxremote.password.
  5. Ripristina il file cassandra-env.sh in modo che sia di sola lettura dopo l'aggiornamento.

Abilita JMX con SSL per Cassandra

L'attivazione di JMX con SSL offre sicurezza e crittografia aggiuntive per la comunicazione basata su JMX con Cassandra. Per attivare JMX con SSL, devi fornire una chiave e un certificato a Cassandra per accettare le connessioni JMX basate su SSL. Devi anche configurare nodetool (e qualsiasi altro strumento che comunichi con Cassandra tramite JMX) per SSL.

JMX con SSL abilitato supporta le password JMX sia in testo normale che criptate.

Per attivare JMX con SSL per Cassandra, utilizza la procedura seguente:

  1. Attiva JMX. Se necessario, attiva la crittografia della password.
  2. Attiva l'autenticazione JMX per Cassandra. come descritto sopra. Assicurati che nodetool funzioni con il nome utente e la password configurati.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. Prepara l'archivio chiavi e l'archivio attendibile.

    • Il keystore deve contenere una chiave e un certificato e viene utilizzato per configurare il server Cassandra. Se il keystore contiene più coppie di chiavi, Cassandra utilizza la prima coppia di chiavi per attivare SSL.

      Tieni presente che le password per l'archivio chiavi e la chiave devono essere le stesse (quelle predefinite quando generi la chiave utilizzando keytool).

    • Il truststore deve contenere solo il certificato e viene utilizzato dai client (comandi basati su Apigee-Service o nodetool) per la connessione tramite JMX.

    Dopo aver verificato i requisiti di cui sopra:

    1. Inserisci il file del keystore in /opt/apigee/data/apigee-cassandra.
    2. Assicurati che il file del keystore sia leggibile solo dall'utente Apigee inserendo
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
  4. Per configurare Cassandra per JMX con SSL, segui questi passaggi:
    1. Interrompi il nodo Cassandra inserendo
      apigee-service apigee-cassandra stop
    2. Attiva SSL in Cassandra aprendo il file /opt/apigee/customer/application/cassandra.properties e aggiungendo la seguente riga:
      conf_cassandra-env_com.sun.management.jmxremote.ssl=true

      Il file deve essere di proprietà di apigee:apigee.

    3. Attiva la configurazione relativa a SSL in Cassandra come segue. Apri il file /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh e rimuovi il commento dalle seguenti righe, modificando il percorso /opt/apigee/data/apigee-cassandra/keystore.node1 e la password del keystore in base alle esigenze.
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node1"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keystore-password"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
      Assicurati che il file sia di proprietà di apigee:apigee.
    4. Avvia il nodo Cassandra inserendo
      apigee-service apigee-cassandra start
  5. Configura i comandi apigee-service Cassandra. Devi impostare alcune variabili di ambiente durante l'esecuzione dei comandi apigee-service, tra cui quelli riportati di seguito:
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    Esistono diverse opzioni per configurare apigee-service per l'autenticazione JMX e SSL. Scegli un'opzione in base all'usabilità e alle tue pratiche di sicurezza.

    Opzione 1 (argomenti SSL archiviati nel file)

    Imposta le seguenti variabili di ambiente:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y

    Crea un file nella home directory dell'utente Apigee (/opt/apigee).

    $HOME/.cassandra/nodetool-ssl.properties

    Modifica il file e aggiungi le seguenti righe:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Assicurati che il file Trustore sia leggibile dall'utente Apigee.

    Esegui questo comando apigee-service. Se viene eseguita senza errori, le configurazioni sono corrette.

    apigee-service apigee-cassandra ring

    Opzione 2 (argomenti SSL memorizzati nelle variabili di ambiente)

    Imposta le seguenti variabili di ambiente:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y
    # Ensure the truststore file is accessible by Apigee user.
    export CASS_JMX_TRUSTSTORE=<path-to-trustore.node1>
    export CASS_JMX_TRUSTSTORE_PASSWORD=<truststore-password>

    Esegui questo comando apigee-service. Se funziona senza errori, le configurazioni sono corrette.

    apigee-service apigee-cassandra ring

    Opzione 3 (argomenti SSL passati direttamente a apigee-service)

    Esegui qualsiasi comando apigee-service come quello riportato di seguito. Non è necessario configurare le variabili di ambiente.

    CASS_JMX_USERNAME=ADMIN CASS_JMX_PASSWORD=PASSWORD CASS_JMX_SSL=Y CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> CASS_JMX_TRUSTSTORE_PASSWORD=<trustore-password> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
  6. Configura nodetool. Nodetool richiede che vengano passati i parametri JMX. Esistono due modi per configurare nodetool in modo che venga eseguito con JMX abilitato per SSL, come descritto nelle opzioni di configurazione riportate di seguito:

    Le opzioni differiscono per il modo in cui le configurazioni relative a SSL vengono passate a nodetool. In entrambi i casi, l'utente che esegue nodetool deve avere autorizzazioni di lettura sul file dell'archivio di attendibilità. Scegli un'opzione appropriata in base all'usabilità e alle tue pratiche di sicurezza.

    Per scoprire di più sui parametri di nodetool, consulta la documentazione di DataStax.

    Opzione di configurazione 1

    Crea un file nella home directory dell'utente che esegue nodetool.

    $HOME/.cassandra/nodetool-ssl.properties

    Aggiungi le seguenti righe al file:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    Il percorso del truststore specificato sopra deve essere accessibile a qualsiasi utente che esegue nodetool.

    Esegui nodetool con l'opzione --ssl.

    /opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

    Opzione di configurazione 2

    Esegui nodetool come singolo comando con i parametri aggiuntivi elencati di seguito.

    /opt/apigee/apigee-cassandra/bin/nodetool -Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

Ripristina configurazioni SSL

Se devi ripristinare le configurazioni SSL descritte nella procedura precedente, segui questi passaggi:

  1. Interrompi apigee-cassandra inserendo
    apigee-service apigee-cassandra stop
  2. Rimuovi la riga conf_cassandra-env_com.sun.management.jmxremote.ssl=true dal file /opt/apigee/customer/application/cassandra.properties.
  3. Commenta le seguenti righe in /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node0"
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keypass"
    # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true”
  4. Inizia apigee-cassandra inserendo
  5. apigee-service apigee-cassandra start
  6. Rimuovi la variabile di ambiente CASS_JMX_SSL se è impostata.

    unset CASS_JMX_SSL
  7. Verifica che i comandi basati su apigee-service, come ring, stop, backup e così via, funzionino.
  8. Interrompi l'utilizzo dell'opzione --ssl con nodetool

Disattivare l'autenticazione JMX per Cassandra

Per disattivare l'autenticazione JMX per Cassandra:

  1. Modifica /opt/apigee/customer/application/cassandra.properties.
  2. Rimuovi la seguente riga nel file:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Esegui la configurazione su Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Riavvia Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Ripeti questa procedura su tutti gli altri nodi Cassandra.

Utilizzare JConsole: monitorare le statistiche delle attività

Utilizza JConsole e il seguente URL del servizio per monitorare gli attributi JMX (MBean) offerti tramite JMX:

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

Dove IP_address è l'IP del server Cassandra.

Statistiche JMX di Cassandra

MBean JMX Attributi JMX

ColonnaFamiglie/apprepo/ambienti

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColonnaFamiglie/apprepo/apiproxies

ColonnaFamiglie/controlli/controlli

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

Utilizzare nodetool per gestire i nodi del cluster

L'utilità nodetool è un'interfaccia a riga di comando per Cassandra che gestisce i nodi del cluster. L'utilità è disponibile all'indirizzo /opt/apigee/apigee-cassandra/bin.

È possibile effettuare le seguenti chiamate su tutti i nodi del cluster Cassandra:

  1. Informazioni generali sull'anello (possibile anche per un singolo nodo Cassandra): cerca "Up" e "Normal" per tutti i nodi.
    nodetool [-u username -pw password] -h localhost ring

    Devi passare il nome utente e la password solo se hai attivato l'autenticazione JMX per Cassandra.

    L'output del comando riportato sopra è il seguente:

    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. Informazioni generali sui nodi (chiamata per nodo)
    nodetool [-u username -pw password]  -h localhost info

    L'output del comando riportato sopra è il seguente:

    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. Stato del server dell'usato (API client di pubblicazione)
    nodetool [-u username -pw password] -h localhost statusthrift

    L'output del comando riportato sopra è il seguente:

    running

  4. Stato delle operazioni di streaming dei dati: osserva il traffico per i nodi Cassandra:
    nodetool [-u username -pw password] -h localhost netstats

    L'output del comando riportato sopra è il seguente:

    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

Per ulteriori informazioni su nodetool, consulta Informazioni sull'utilità nodetool.

Risorsa Cassandra

Fai riferimento al seguente URL: http://www.datastax.com/docs/1.0/operations/monitoring.

Apache ZooKeeper

Controlla lo stato di ZooKeeper

  1. Assicurati che il processo ZooKeeper sia in esecuzione. ZooKeeper scrive un file PID in opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Testa le porte ZooKeeper per assicurarti di poter stabilire una connessione TCP alle porte 2181 e 3888 su ogni server ZooKeeper.
  3. Assicurati di poter leggere i valori dal database ZooKeeper. Connettiti utilizzando una libreria client ZooKeeper (o /opt/apigee/apigee-zookeeper/bin/zkCli.sh) e leggi un valore dal database.
  4. Controlla lo stato:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

Usa parole di quattro lettere di ZooKeeper

ZooKeeper può essere monitorato tramite un piccolo insieme di comandi (parole di quattro lettere) inviati alla porta 2181 utilizzando netcat (nc) o telnet.

Per ulteriori informazioni sui comandi ZooKeeper, consulta la pagina Riferimento ai comandi di Apache ZooKeeper.

Ad esempio:

  • srvr: elenca i dettagli completi del server.
  • stat: elenca brevi dettagli sul server e sui client collegati.

I seguenti comandi possono essere emessi alla porta ZooKeeper:

  1. Esegui il comando di quattro lettere ruok per verificare se il server è in esecuzione in uno stato senza errori. Una risposta positiva restituisce "imok".
    echo ruok | nc host 2181

    Restituisce:

    imok
  2. Esegui il comando di quattro lettere stat per elencare il rendimento del server e le statistiche dei client collegati:
    echo stat | nc host 2181

    Restituisce:

    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. Se netcat (nc) non è disponibile, puoi utilizzare Python come alternativa. Crea un file denominato zookeeper.py contenente quanto segue:
          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)

    Ora esegui le seguenti linee Python:

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

Test di livello LDAP

Puoi monitorare OpenLDAP per verificare se le richieste specifiche vengono eseguite correttamente. In altre parole, cerca una ricerca specifica che restituisca il risultato corretto.

  1. Utilizza ldapsearch (yum install openldap-clients) per eseguire una query sulla voce dell'amministratore di sistema. Questa voce viene utilizzata per autenticare tutte le chiamate API.
    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

    Ti verrà quindi chiesta la password di amministrazione LDAP:

    Enter LDAP Password:

    Dopo aver inserito la password, viene visualizzata una risposta nel modulo:

    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. Controlla se il server di gestione è ancora connesso a LDAP con il seguente comando:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    Restituisce:

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

Puoi anche monitorare le cache OpenLDAP, che aiutano a ridurre il numero di accessi al disco e quindi a migliorare le prestazioni del sistema. Il monitoraggio e la successiva ottimizzazione della dimensione della cache nel server OpenLDAP possono influire notevolmente sulle prestazioni del server di directory. Puoi visualizzare i file di log (opt/apigee/var/log) per ottenere informazioni sulla cache.