Questo documento descrive le tecniche di monitoraggio dei componenti supportati da un deployment on-premise di Apigee Edge for Private Cloud.
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 | |||||||
Componente | Utilizzo memoria [JMX*] | Controllo del servizio | Stato utente/organizzazione/ implementazione | axstatus | Controllo del database | Stato di apigee-service |
apigee-monit ** |
Server di gestione | |||||||
processore di messaggi | |||||||
Router | |||||||
Qpid | |||||||
Postgres | |||||||
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 |
Monitoraggio delle porte e dei file di configurazione
Ogni componente supporta le chiamate di monitoraggio JMX (Java Management Extensions) e dell'API di gestione su porte diverse. La seguente tabella elenca le porte JMX e dell'API di gestione per ogni tipo di server e le posizioni dei file di configurazione:
Componente | Porta JMX | Porta API di gestione | Posizione del file di configurazione |
---|---|---|---|
Server di gestione | 1099 | 8080 | $APIGEE_ROOT/customer/application/management-server.properties |
processore di messaggi | 1101 | 8082 | $APIGEE_ROOT/customer/application/message-processor.properties |
Router | 1100 | 8081 | $APIGEE_ROOT/customer/application/router.properties |
Qpid | 1102 | 8083 | $APIGEE_ROOT/customer/application/qpid-server.properties |
Postgres | 1103 | 8084 | $APIGEE_ROOT/customer/application/postgres-server.properties |
Utilizzare JMX per monitorare i componenti
Le sezioni seguenti spiegano come utilizzare JMX per monitorare i componenti Edge.
Abilita JMX
Per attivare JMX senza autenticazione o comunicazione basata su SSL, svolgi i passaggi riportati di seguito. Nota:nei sistemi di produzione, sia l'autenticazione criptata sia SSL devono essere abilitati per motivi di sicurezza.
- Modifica il file di configurazione appropriato (consulta la
Documentazione di riferimento dei file di configurazione). Crea il file di configurazione se non esiste.
conf_system_jmxremote_enable=true
- Salva il file di configurazione e assicurati che sia di proprietà di
apigee:apigee
. - Riavvia il componente Edge appropriato
apigee-service edge-management-server restart
Per disattivare JMX, rimuovi la proprietà conf_system_jmxremote_enable
o modifica
il relativo valore in false
. Quindi riavvia il componente Edge appropriato.
Autenticazione in JMX
Edge for Private Cloud supporta l'autenticazione basata su password utilizzando i dettagli archiviati nei file. Per una maggiore sicurezza, puoi memorizzare le password sotto forma di hash.
- Per abilitare l'autenticazione JMX in un componente edge-*, modifica il file di configurazione appropriato (consulta la sezione
Referenza al file di configurazione). Crea il file di configurazione se non esiste:
conf_system_jmxremote_enable=true conf_system_jmxremote_authenticate=true conf_system_jmxremote_encrypted_auth=true conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
Salva il file di configurazione e assicurati che sia di proprietà diapigee:apigee
. - Crea un hash SHA256 della password:
echo -n '
' | openssl dgst -sha256 - Crea un file
jmxremote.password
con le credenziali utente JMX:- Copia i seguenti file dalla directory
$JAVA_HOME
alla directory/opt/apigee/customer/application/<component>/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- Modifica il file e aggiungi il nome utente e la password JMX utilizzando la seguente sintassi:
USERNAME <HASH-PASSWORD>
- Assicurati che il file sia di proprietà di
apigee
e che la modalità sia 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- Copia i seguenti file dalla directory
- Crea un file
jmxremote.access
con le autorizzazioni utente JMX:- Copia i seguenti file dalla directory $JAVA_HOME alla directory
/opt/apigee/customer/application/<component>/
cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
- Modifica il file e aggiungi il tuo nome utente JMX seguito da un'autorizzazione (READONLY/READWRITE)
USERNAME READONLY
- Assicurati che il file sia di proprietà di
apigee
e che la modalità sia 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- Copia i seguenti file dalla directory $JAVA_HOME alla directory
- Riavvia il componente Edge appropriato:
apigee-service edge-management-server restart
Per disattivare l'autenticazione JMX, rimuovi la proprietà
conf_system_jmxremote_authenticate
o modifica il valore in false
e
riavvia il componente Edge appropriato.
SSL in JMX
Per attivare JMX basato su SSL in un componente edge-*:
- Modifica il file di configurazione appropriato
(consulta la
documentazione di riferimento dei file di configurazione). Crea il file di configurazione se non esiste:
conf_system_jmxremote_enable=true conf_system_jmxremote_ssl=true conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore conf_system_javax_net_ssl_keystorepassword=<keystore-password>
Salva il file di configurazione e assicurati che sia di proprietà diapigee:apigee
. - Prepara un keystore contenente la chiave del server e posizionalo nel percorso specificato nella configurazione
conf_system_javax_net_ssl_keystore
sopra. Assicurati che il file del keystore sia leggibile daapigee:apigee
. - Riavvia il componente Edge appropriato:
apigee-service edge-management-server restart
Per disattivare JMX basato su SSL, rimuovi la proprietà conf_system_jmxremote_ssl
o modifica il valore in false
. Riavvia il componente Edge appropriato.
Monitoraggio tramite Jconsole
Le istruzioni di monitoraggio tramite jconsole rimangono invariate come descritto in https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole.
È possibile aggiungere una riga che indica che "jconsole deve essere avviato con truststore e la password del truststore se SSL è abilitato per JMX". Riferimento: https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.htmlMonitoraggio 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.
Devi avviare JConsole con il truststore e la password del truststore se SSL è abilitato per JMX. 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 come il 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 |
|
Riferimento al file di configurazione
Le sezioni seguenti descrivono le modifiche che potresti dover apportare ai file di configurazione dei componenti Edge per le configurazioni JMX. Per ulteriori informazioni, consulta Porte e file di configurazione di monitoraggio.
Configurazione JMX da aggiungere al file di configurazione del componente appropriato
- Attiva l'agente JMX nel componente edge. False per impostazione predefinita.
conf_system_jmxremote_enable=true
Configurazioni per l'autenticazione basata su password
- Attiva l'autenticazione basata su password. False per impostazione predefinita.
conf_system_jmxremote_authenticate=true
- Percorso del file di accesso. Deve essere di proprietà e leggibile solo dall'utente Apigee.
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- Percorso del file della password. Deve essere di proprietà e leggibile solo dall'utente Apigee.
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- Attiva la memorizzazione della password in formato criptato. False per impostazione predefinita.
conf_system_jmxremote_encrypted_auth=true
Configurazioni per JMX basato su SSL
- Attiva SSL per la comunicazione JMX. False per impostazione predefinita.
conf_system_jmxremote_ssl=true
- Percorso dell'archivio chiavi. Deve essere di proprietà e leggibile solo dall'utente Apigee.
conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
- Password dell'archivio chiavi:
conf_system_javax_net_ssl_keystorepassword=changeme
Configurazioni JMX facoltative
I valori elencati sono valori predefiniti e possono essere modificati.
- Porta JMX. I valori predefiniti sono elencati nella tabella seguente.
conf_system_jmxremote_port=
- Porta JMX RMI. Per impostazione predefinita, il processo Java sceglie una porta casuale.
conf_system_jmxremote_rmi_port=
- Il nome host per gli stub remoti. Indirizzo IP predefinito di localhost.
conf_system_java_rmi_server_hostname=
- Proteggi il registry JMX con SSL. Valore predefinito false. Applicabile solo se SSL è abilitato.
conf_system_jmxremote_registry_ssl=false
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:
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"
Il seguente esempio recupera le informazioni sull'Elaboratore 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"
Monitora lo stato di utenti, organizzazioni e 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: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 è 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 tentativi non vanno a buon fine, procedi nel seguente modo:
- Controlla la presenza di 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
- Server di gestione:
- Esegui una chiamata al server per verificare se funziona correttamente.
- 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
:
- Accedi al server ed esegui il seguente comando:
/opt/apigee/apigee-service/bin/apigee-service service_name status
dove service_name è uno dei seguenti valori:
- 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
- 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 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 controllare lo stato da remoto con l'API Management, devi specificare l'indirizzo IP del server e includere il nome utente e la password dell'amministratore di sistema nella chiamata dell'API.
Monitoraggio di Postgres
Postgres supporta diverse utilità che puoi utilizzare per verificarne lo stato. Queste utilità sono descritte nelle sezioni che seguono.
Controllare organizzazioni e ambienti su Postgres
Puoi controllare i nomi di organizzazioni e ambienti di cui è stato eseguito l'onboarding sul server Postgres
eseguendo 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 di Dati e analisi
Puoi verificare lo stato dei server Postgres e Qpid Analytics emettendo il seguente
curl
comando:
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
Il sistema dovrebbe mostrare uno stato di esito positivo per tutti i server di analisi, come mostrato 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:
- Devi installare lo script check_postgres.pl su ogni nodo Postgres.
- Assicurati di aver installato
perl-Time-HiRes.x86_64
, un modulo Perl che implementa timer di sveglia, di sospensione, gettimeofday e intervalli ad alta risoluzione. 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 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:
- 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 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 le tabelle appropriate siano create nel database PostgreSQL. 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:
- 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.
Attivare 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:
- Crea e modifica il file
cassandra.properties
:- Modifica il file
/opt/apigee/customer/application/cassandra.properties
. Se il file non esiste, creane uno. - 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}/customer/application/apigee-cassandra/jmxremote.password conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/apigee-cassandra/jmxremote.access
- Salva il file
cassandra.properties
. - Modifica il proprietario del file in
apigee:apigee
, come mostrato 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.
- Modifica il file
- Creare e modificare
jmx_auth.sh
:- Se non esiste, crea un file nella seguente posizione:
/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
- Se non esiste, crea un file nella seguente posizione:
- Copia e modifica il file
jmxremote.password
:- Copia il seguente file dalla directory
$JAVA_HOME
a/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
- 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 impostati in precedenza.
- Assicurati che il file sia di proprietà di "apigee" e che la modalità del file sia 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/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
a/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access
$APIGEE_ROOT/customer/application/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à del file sia 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/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 la crittografia delle password JMX
Per attivare la crittografia delle password JMX:
- Apri il file
source/conf/casssandra-env.sh
. - Crea e modifica il file
cassandra.properties
:- Modifica il file
/opt/apigee/customer/application/cassandra.properties
. Se il file non esiste, creane uno. - Aggiungi quanto segue al file:
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- Salva il file cassandra.properties.
- Modifica il proprietario del file in apigee:apigee, come mostrato nell'esempio seguente:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Modifica il file
- Nella riga di comando, genera gli hash SHA1 delle password desiderate inserendo
echo -n 'Secret' | openssl dgst -sha1
- Imposta le password per il nome utente in
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(creato nella sezione precedente). - 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.
Attivare 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, segui la procedura riportata di seguito:
- Attiva JMX. Se necessario, attiva 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 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 uguali (il valore predefinito 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 precedenti:
- Inserisci il file del keystore in
/opt/apigee/customer/application/apigee-cassandra/
. - Assicurati che il file del keystore sia leggibile solo dall'utente Apigee inserendo
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- Per configurare Cassandra per JMX con SSL, segui questi passaggi:
- Interrompi il nodo Cassandra inserendo
apigee-service apigee-cassandra stop
- Attiva SSL in Cassandra
aprendo il file
/opt/apigee/customer/application/cassandra.properties
e aggiungendo le seguenti righe:conf_cassandra_env_com.sun.management.jmxremote.ssl=true conf_cassandra_env_javax.net.ssl.keyStore=/opt/apigee/customer/application/apigee-cassandra/keystore.node1 conf_cassandra_env_javax.net.ssl.keyStorePassword=keystore-password
- Modifica il proprietario del file in apigee:apigee, come mostrato nell'esempio seguente:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 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.
- Avvia il nodo Cassandra inserendo
apigee-service apigee-cassandra start
- Interrompi il nodo Cassandra inserendo
- Configura i comandi
apigee-service
Cassandra. Devi impostare alcune variabili di ambiente durante l'esecuzione dei comandiapigee-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 memorizzati in un file)
- Opzione 2 (argomenti SSL memorizzati nelle variabili di ambiente)
- Opzione 3 (argomenti SSL passati direttamente a
apigee-service
)
Opzione 1 (argomenti SSL memorizzati in un 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 funziona 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 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 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 disporre delle autorizzazioni di LETTURA sul file del truststore. 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 file 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
Ripristinare le configurazioni SSL
Se devi ripristinare le configurazioni SSL descritte nella procedura precedente, segui questi passaggi:
- Interrompi
apigee-cassandra
inserendoapigee-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
Disattivare l'autenticazione JMX per Cassandra
Per disattivare l'autenticazione JMX per Cassandra:
- Modifica
/opt/apigee/customer/application/cassandra.properties
. - Rimuovi la seguente riga nel 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.
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 |
---|---|
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 |
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:
- 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
- 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
- Stato del server Thrift (che serve l'API client)
nodetool [-u username -pw password] -h localhost statusthrift
L'output del comando riportato sopra è il seguente:
running
- 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.
Monitoraggio di Apache Qpid Broker-J
Puoi monitorare Qpid Broker-J dalla console di gestione Qpid. Questa sezione spiega come accedere alla console e utilizzarla per eseguire funzioni di monitoraggio di base. Per informazioni più dettagliate sull'utilizzo della console di gestione, consulta Console di gestione web nella documentazione di Apache Qpid.
Accedere alla console di gestione
La porta predefinita della console di gestione è 8090. Per accedere alla console su questa porta predefinita, imposta il browser web su:
http://QPID_NODE_IP:8090
Per accedere alla console, utilizza le credenziali predefinite impostate da Apigee o quelle impostate nel file di configurazione di Edge. Per maggiori dettagli, consulta il riferimento al file di configurazione di Edge.
Monitorare code e messaggi
Nel riquadro di navigazione a sinistra, vai a Java-Broker > virtualhosts > code_queue. Seleziona una coda per visualizzarne i dettagli nella parte principale dell'interfaccia utente. Nella visualizzazione dei dettagli, puoi vedere Attributi e statistiche della coda, incluse informazioni sui messaggi recapitati, in coda, sulle frequenze dei messaggi e così via.
Visualizzare e scaricare i file di log
Nel riquadro di navigazione a sinistra, vai a Java-Broker > brokerloggers > logfile. Nella visualizzazione dei dettagli dell'interfaccia utente principale, puoi visualizzare i dettagli dei file log e scaricarli.
Utilizzo dell'API di gestione Qpid
Puoi utilizzare l'API REST Apache Qpid Broker-J per automatizzare le attività di gestione e monitorare il broker. Per maggiori dettagli, consulta la documentazione dell'API REST Apache Qpid Broker.
Puoi anche utilizzare gli strumenti a riga di comando per monitorare il broker. Ad esempio:
curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"
Apache ZooKeeper
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
Utilizza 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:
- 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
- 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
- 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 righe di 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.
- 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 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
- 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 contribuiscono 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.