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 seguente tabella elenca i tipi di controlli che puoi eseguire su ciascun servizio idoneo:
API di gestione | |||||||
Servizio | Utilizzo della memoria [JMX*] | Controllo di servizio | Stato utente/organizzazione/ deployment | Stato-ax | Controllo database | Stato di apigee-service |
apigee-monit ** |
Server di gestione | |||||||
processore di messaggi | |||||||
Postgres | |||||||
Qpid | |||||||
Router | |||||||
Ulteriori informazioni | Ulteriori informazioni | Ulteriori informazioni | Ulteriori informazioni | Ulteriori informazioni | Ulteriori informazioni | Ulteriori informazioni | |
* Prima di poter utilizzare JMX, è necessario abilitarlo, come descritto in Abilitare JMX. ** Il servizio |
Porte di monitoraggio JMX e API Management
Ogni componente supporta le chiamate di monitoraggio JMX e dell'API Management su porte diverse. La seguente tabella elenca le porte JMX e dell'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 il monitoraggio
I processi di monitoraggio per il server di gestione, il processore di messaggi, Qpid e Postgres utilizzano tutti JMX. Tuttavia, JMX è abilitato per impostazione predefinita solo per Cassandra e disabilitato per impostazione predefinita per tutti gli altri componenti Edge. Devi quindi abilitare JMX singolarmente per ciascun componente prima di poterlo monitorare.
L'autenticazione JMX non è abilitata per impostazione predefinita. Puoi abilitare l'autenticazione JMX per tutti i componenti. Per Cassandra, segui le istruzioni in Abilitare l'autenticazione JMX per Cassandra.
Abilita JMX
JMX è abilitato per impostazione predefinita solo per Cassandra e disabilitato per impostazione predefinita per tutti gli altri componenti Edge. Questa sezione descrive come abilitare JMX per gli altri componenti Edge.
Per attivare JMX:
- Modifica il file di configurazione del componente. Questo file si trova nella cartella
opt/apigee/edge-component_name/bin/start
. In ambienti di produzione, questi file di configurazione si trovano su macchine diverse.Scegli tra le seguenti posizioni dei file su ciascun server:
- Server di gestione:
/opt/apigee/edge-management-server/bin/start
- Processore dei 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 suo server si trova all'indirizzo
/opt/apigee/edge-management-server/bin/start
. - Server di gestione:
- Aggiungi le seguenti opzioni
com.sun.management.jmxremote
alla rigaexec
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 tuo servizio, consulta l'articolo sulle porte di monitoraggio di JMX e API Management.
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 indicato in precedenza, ogni servizio ha il 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
- Salva il file di configurazione.
- 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 abilitare l'autenticazione JMX per tutti i componenti, come descritto in Abilitare l'autenticazione JMX. Per abilitare l'autenticazione JMX per Cassandra, consulta Abilitare l'autenticazione JMX per Cassandra.
Attiva autenticazione JMX
L'autenticazione JMX non è abilitata per impostazione predefinita. Puoi abilitare l'autenticazione JMX per tutti i componenti. Per Cassandra, segui le istruzioni riportate in Abilitare l'autenticazione JMX per Cassandra
Per abilitare 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:
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 se non viene trasmesso 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 devi specificare sia un insieme di opzioni sia un file di configurazione.
L'esempio seguente 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 disabilitare l'autenticazione JMX dalla riga di comando, utilizza l'opzione "-e n", come illustrato nell'esempio seguente:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
Monitora con JConsole
Utilizza JConsole (uno strumento conforme a JMX) per gestire e monitorare le statistiche relative al controllo di integrità e ai processi. Con JConsole, puoi consultare le statistiche JMX visualizzate dai tuoi server e visualizzarle in un'interfaccia grafica. Per ulteriori informazioni, consulta Utilizzo di 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, ovvero la porta JMX del server di gestione. Per le altre porte, consulta la pagina relativa alle porte di monitoraggio di JMX e API di gestione.
La seguente tabella 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 e controllare utenti, organizzazioni e deployment. Questa sezione descrive queste API.
Esegui controlli dei servizi
L'API di gestione fornisce diversi endpoint per il monitoraggio e la diagnosi dei problemi relativi ai servizi. Questi endpoint includono:
Endpoint | Descrizione |
---|---|
/servers/self/up |
Verifica 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 l'hai controllato): curl: Failed connect to localhost:port_number; Connection refused |
/servers/self |
Restituisce informazioni sul servizio, tra cui:
Questa chiamata API richiede l'autenticazione con le credenziali di amministratore 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"; altrimenti, 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 ciascun 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 di JMX e API Management
Per modificare il formato della risposta, puoi specificare l'intestazione Accept
come "application/json" o "application/xml".
L'esempio seguente restituisce lo stato del router su localhost (porta 8081):
curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"
L'esempio seguente recupera informazioni sul processore di messaggi all'indirizzo 216.3.128.12 (porta 8082):
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
Monitorare lo stato degli utenti, dell'organizzazione e del deployment
Puoi utilizzare l'API di gestione per monitorare lo stato degli utenti, dell'organizzazione e del deployment dei proxy sui server di gestione e sui processori di messaggi inviando i seguenti comandi:
curl http://host:port_number/v1/users -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
Dove port_number corrisponde a 8080 per il server di gestione o 8082 per il processore di messaggi.
Per questa chiamata è necessario eseguire l'autenticazione con il nome utente e la password di amministratore di sistema.
Il server dovrebbe restituire lo stato "implementato" per tutte le chiamate. Se il problema persiste, procedi nel seguente modo:
- Verifica la presenza di eventuali errori nei log del server. I log si trovano in:
- Server di gestione:
opt/apigee/var/log/edge-management-server
- Processore dei messaggi:
opt/apigee/var/log/edge-message-processor
- Server di gestione:
- Effettuare una chiamata al server per verificare che funzioni correttamente.
- Rimuovi il server da ELB, quindi riavvialo:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
Dove si trova service_name:
edge-management-server
edge-message-processor
Controlla lo stato con il comando apigee-service
Puoi risolvere i problemi dei servizi Edge utilizzando il comando apigee-service
dopo aver eseguito l'accesso al server che esegue il servizio.
Per controllare lo stato di un servizio con apigee-service
:
- Accedi al server ed esegui questo comando:
/opt/apigee/apigee-service/bin/apigee-service service_name status
Dove service_name corrisponde a uno dei seguenti valori:
- Server di gestione:
edge-management-server
- Processore dei 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
- Server di gestione:
- Se il servizio non è in esecuzione, avvialo:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- Dopo aver riavviato il servizio, verifica che funzioni, con il comando
apigee-service status
che hai utilizzato in precedenza o con l'API di gestione descritta in Monitoraggio con l'API di gestione.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 possa utilizzare "localhost" come nome host. Per controllare lo stato da remoto con l'API di gestione, devi specificare l'indirizzo IP del server e includere nella chiamata API il nome utente e la password dell'amministratore di sistema.
Monitoraggio Postgres
Postgres supporta diverse utilità che puoi utilizzare per verificarne lo stato. Queste utilità sono descritte nelle sezioni seguenti.
Controlla organizzazioni e ambienti su Postgres
Puoi verificare i nomi delle organizzazioni e degli ambienti inseriti nel server Postgres
inviando il seguente comando curl
:
curl -v http://postgres_IP:8084/v1/servers/self/organizations
Il sistema dovrebbe mostrare il nome dell'organizzazione e dell'ambiente.
Verificare lo stato delle analisi
Puoi verificare lo stato dei server di analisi Postgres e Qpid utilizzando il seguente comando curl
:
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
Il sistema dovrebbe mostrare 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 in modo specifico per il monitoraggio del database Postgres.
Utilizza lo script check_postgres.pl
Per monitorare il database PostgreSQL, puoi utilizzare uno script di monitoraggio standard, check_postgres.pl
. Per ulteriori informazioni, visita la pagina http://bucardo.org/wiki/Check_postgres.
Prima di eseguire lo script:
- Devi installare lo script check_postgres.pl su ciascun nodo Postgres.
- Assicurati di aver installato
perl-Time-HiRes.x86_64
, un modulo Perl che implementa allarme ad alta risoluzione, sospensione, gettimeofday e timer a intervalli. Ad esempio, puoi installarlo utilizzando il seguente comando:
yum install perl-Time-HiRes.x86_64
- CentOS 7: prima di utilizzare check_postgres.pl su CentOS v7, installa l'RPM
perl-Data-Dumper.x86_64
.
Output check_postgres.pl
L'output predefinito delle chiamate API che utilizzano check_postgres.pl
è compatibile con Nagios. Dopo aver installato lo script, effettua i seguenti controlli:
- 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'
- Controlla il numero di connessioni in entrata al database e confrontalo con il numero massimo di connessioni consentite:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- Controlla se il database è in esecuzione e disponibile:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- 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%'
- Controlla il numero di organizzazione e ambiente inseriti 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 comando seguente:
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
Dopodiché, esegui:
\d analytics."org.env.fact"
Controlla lo stato di integrità del processo Postgres
Puoi eseguire i controlli 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 e in esecuzione, restituisce lo stato INACTIVE
.
Risorse Postgres
Per ulteriori informazioni sul monitoraggio del servizio Postgres, vedi quanto segue:
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
Apache Cassandra
JMX è abilitato per impostazione predefinita per Cassandra e l'accesso JMX remoto a Cassandra non richiede una password.
Attiva l'autenticazione JMX per Cassandra
Puoi attivare l'autenticazione JMX per Cassandra. Dopo averlo fatto, ti verrà richiesto di passare un nome utente e una password a tutte le chiamate all'utilità nodetool.
Per attivare l'autenticazione JMX per Cassandra:
- Crea e modifica il file
cassandra.properties
:- Modifica il file
/opt/apigee/customer/application/cassandra.properties
. Se il file non esiste, crealo. - 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
- Salva il file
cassandra.properties
. - Modifica il proprietario del file in
apigee:apigee
, come illustrato nell'esempio seguente:chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
Per saperne di più sull'utilizzo dei file delle proprietà per impostare i token, consulta Come configurare Edge.
- Modifica il file
- Crea e modifica
jmx_auth.sh
:- Crea un file nel seguente percorso se non esiste:
/opt/apigee/customer/application/jmx_auth.sh
- Aggiungi le seguenti proprietà al file:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- Salva il file
jmx_auth.sh
. - Origine del file:
source /opt/apigee/customer/application/jmx_auth.sh
- Crea un file nel seguente percorso se non esiste:
- Copia e modifica il file
jmxremote.password
:- Copia il seguente file dalla directory
$JAVA_HOME
in/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
- Modifica il file
jmxremote.password
e aggiungi il nome utente e la 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.
- Assicurati che il file sia di proprietà di "apigee" e che la modalità file sia 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
- Copia il seguente file dalla directory
- Copia e modifica il file
jmxremote.access
:- Copia il seguente file dalla directory
$JAVA_HOME
in/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- Modifica il file jmxremote.access e aggiungi il seguente ruolo:
JMX_USERNAME readwrite
- Assicurati che il file sia di proprietà di "apigee" e che la modalità file sia 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
- Copia il seguente file dalla directory
- Esegui
configure
su Cassandra:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Riavvia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Ripeti questa procedura su tutti gli altri nodi Cassandra.
Attiva crittografia password JMX
Per attivare la crittografia delle password JMX, segui questi passaggi:
- Apri il file
source/conf/casssandra-env.sh
. - Rimuovi il commento dalle seguenti righe del 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"
-
- Nella riga di comando, genera gli hash SHA1 delle password desiderate inserendo
echo -n 'Secret' | openssl dgst -sha1
- Imposta le password in base al nome utente in
jmxremote.password
. - Ripristina il file
cassandra-env.sh
in sola lettura dopo l'aggiornamento.
Abilita JMX con SSL per Cassandra
L'abilitazione di JMX con SSL offre sicurezza e crittografia aggiuntive per le comunicazioni basate su JMX con Cassandra. Per abilitare JMX con SSL, devi fornire una chiave e un certificato a Cassandra per accettare connessioni JMX basate su SSL. Devi inoltre configurare nodetool (e qualsiasi altro strumento che comunica con Cassandra su JMX) per SSL.
JMX abilitato per SSL supporta le password JMX criptate e in testo non crittografato.
Per abilitare JMX con SSL per Cassandra, utilizza la seguente procedura:
- Abilita JMX. Se necessario, abilita la crittografia della password.
- 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
Prepara l'archivio chiavi e l'archivio attendibilità.
L'archivio chiavi deve contenere una chiave e un certificato e viene utilizzato per configurare il server Cassandra. Se l'archivio chiavi contiene più coppie di chiavi, Cassandra utilizza la prima coppia di chiavi per abilitare SSL.
Tieni presente che le password per l'archivio chiavi e la chiave devono essere le stesse (l'impostazione predefinita quando viene generata la chiave utilizzando keytool).
- Truststore deve contenere solo il certificato ed è utilizzato dai client (comandi basati su Apigee-service o nodetool) per la connessione tramite JMX.
Dopo aver verificato i requisiti di cui sopra:
- Inserisci il file dell'archivio chiavi in
/opt/apigee/data/apigee-cassandra
. - Assicurati che il file dell'archivio chiavi 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
- Per configurare Cassandra per JMX con SSL:
- Arresta il nodo Cassandra inserendo
apigee-service apigee-cassandra stop
- Abilita 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
. - Attiva la configurazione relativa a SSL in Cassandra come indicato di seguito.
Apri il file
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
e rimuovi il commento dalle righe seguenti, modificando il percorso/opt/apigee/data/apigee-cassandra/keystore.node1
e la password dell'archivio chiavi 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à diapigee:apigee
. - Avvia il nodo Cassandra inserendo
apigee-service apigee-cassandra start
- Arresta il nodo Cassandra inserendo
- Configura i comandi Cassandra di
apigee-service
. Durante l'esecuzione dei comandiapigee-service
devi impostare determinate variabili di ambiente, tra cui quelle riportate 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 per SSL. Scegli un'opzione in base all'usabilità e alle pratiche di sicurezza.- Opzione 1 (argomenti SSL memorizzati nel file)
- Opzione 2 (argomenti SSL memorizzati nelle variabili di ambiente)
- Opzione 3 (argomenti SSL passati direttamente a
apigee-service
)
Opzione 1 (argomenti SSL memorizzati 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 di Apigee.
Esegui questo comando
apigee-service
. Se viene eseguito 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 viene eseguito 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 alcuna variabile 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
Configura nodetool. Nodetool richiede il passaggio dei parametri JMX. Esistono due modi per configurare nodetool per l'esecuzione con JMX abilitato per SSL, come descritto nelle opzioni di configurazione riportate di seguito:
Le opzioni differiscono nel modo in cui le configurazioni relative a SSL vengono passate a nodetool. In entrambi i casi, l'utente che esegue nodetool deve disporre delle autorizzazioni di lettura per il file dell'archivio attendibilità. Scegli un'opzione appropriata in base all'usabilità e alle pratiche di sicurezza.
Per saperne di più sui parametri 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 dell'archivio attendibilità 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:
- Interrompi
apigee-cassandra
entrando inapigee-service apigee-cassandra stop
- Rimuovi la riga
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
dal file/opt/apigee/customer/application/cassandra.properties
. - 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”
- Inizia
apigee-cassandra
inserendo - Rimuovi la variabile di ambiente
CASS_JMX_SSL
, se impostata.unset CASS_JMX_SSL
- Verifica che i comandi basati su
apigee-service
, comering
,stop
,backup
e così via, funzionino. - Interrompi l'utilizzo dell'opzione
--ssl
con nodetool
apigee-service apigee-cassandra start
Disattiva l'autenticazione JMX per Cassandra
Per disattivare l'autenticazione JMX per Cassandra:
- Modifica
/opt/apigee/customer/application/cassandra.properties
. - Rimuovi la seguente riga dal file:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- Esegui la configurazione su Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Riavvia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Ripeti questa procedura su tutti gli altri nodi Cassandra.
Utilizzo di JConsole: monitoraggio delle statistiche delle attività
Utilizza JConsole e il seguente URL di 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 ColonnaFamiglie/apprepo/organizzazioni ColonnaFamilies/apprepo/apiproxy_revisions ColonnaFamiglie/apprepo/apiproxies ColonnaFamiglie/audit/controlli ColonnaFamiglie/audit/rif_controllo |
PendingTasks |
MemtableColumnsCount |
|
MemtableDataSize |
|
ReadCount |
|
RecentReadLatencyMicros |
|
TotalReadLatencyMicros |
|
WriteCount |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
TotalDiskSpaceUsed |
|
LiveDiskSpaceUsed |
|
LiveSSTableCount |
|
BloomFilterFalsePositives |
|
RecentBloomFilterFalseRatio |
|
BloomFilterFalseRatio |
Usa nodetool per gestire i nodi del cluster
L'utilità Nodetool è un'interfaccia a riga di comando per Cassandra che gestisce i nodi cluster. L'utilità è disponibile all'indirizzo /opt/apigee/apigee-cassandra/bin
.
Le seguenti chiamate possono essere effettuate su tutti i nodi del cluster Cassandra:
- Informazioni generali sulla suoneria (possibile anche per un singolo nodo Cassandra): cerca i valori "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 è simile a questo:
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
- Informazioni generali sui nodi (chiamata per nodo)
nodetool [-u username -pw password] -h localhost info
L'output del comando riportato sopra sarà simile al 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
- Stato del server Thrift (API client di pubblicazione)
nodetool [-u username -pw password] -h localhost statusthrift
L'output del comando riportato sopra è simile al seguente:
running
- Stato delle operazioni di streaming di dati: osserva il traffico per i nodi cassandra:
nodetool [-u username -pw password] -h localhost netstats
L'output del comando riportato sopra è simile al 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 saperne di più su nodetool, consulta Informazioni sull'utilità nodetool.
Risorsa Cassandra
Fai riferimento al seguente URL: http://www.datastax.com/docs/1.0/operations/monitoring.
ZooKeeper Apache
Controlla lo stato di ZooKeeper
- Assicurati che il processo ZooKeeper sia in esecuzione. ZooKeeper scrive un file PID in
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
. - Testa le porte ZooKeeper per assicurarti di poter stabilire una connessione TCP alle porte 2181 e 3888 su ogni server ZooKeeper.
- 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. - 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) che vengono inviati alla porta 2181 utilizzando netcat (nc) o telnet.
Per maggiori informazioni sui comandi ZooKeeper, vedi: Riferimento per il comando ZooKeeper di Apache.
Ad esempio:
srvr
: elenca i dettagli completi del server.stat
: elenca brevi dettagli relativi al server e ai client connessi.
I seguenti comandi possono essere inviati alla porta ZooKeeper:
- Esegui il comando ruok di quattro lettere per verificare se il server è in esecuzione in uno stato diverso da errore. Una
risposta corretta restituisce "imok".
echo ruok | nc host 2181
Resi:
imok
- Esegui il comando di quattro lettere
stat
per elencare le prestazioni del server e le statistiche dei client connessi:echo stat | nc host 2181
Resi:
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
- Se netcat (nc) non è disponibile, puoi utilizzare Python come alternativa. Crea un file
denominato
zookeeper.py
che contenga 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 del livello LDAP
Puoi monitorare OpenLDAP per vedere se le richieste specifiche vengono gestite correttamente. In altre parole, cerca una ricerca specifica che restituisca il risultato corretto.
- Utilizza
ldapsearch
(yum install openldap-clients
) per eseguire 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 amministratore LDAP:
Enter LDAP Password:
Dopo aver inserito la password, visualizzerai 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
- Controlla se il server di gestione è ancora connesso a LDAP con il seguente comando:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
Resi:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
Puoi anche monitorare le cache di OpenLDAP, che consentono di ridurre il numero di accessi al disco e, di conseguenza, di migliorare le prestazioni del sistema. Il monitoraggio e l'ottimizzazione delle dimensioni 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.