En este documento, se describen las técnicas de supervisión de los componentes compatibles con una implementación local de Apigee Edge.
Descripción general
Edge admite varias formas de obtener detalles sobre los servicios y verificar sus estados. En la siguiente tabla, se enumeran los tipos de verificaciones que puedes realizar en cada servicio apto:
API de administración | |||||||
Servicios | Uso de memoria [JMX*] | Verificación de servicios | Estado de la organización, el usuario o la implementación | estado_axial | Verificación de la base de datos | Estado de apigee-service |
apigee-monit ** |
Servidor de administración | |||||||
Message Processor | |||||||
Postgres | |||||||
Qpid | |||||||
Router | |||||||
Más información | Más información | Más información | Más información | Más información | Más información | Más información | |
* Para poder usar JMX, debes habilitarlo, como se describe en Cómo habilitar JMX. ** El servicio |
Puertos de supervisión de JMX y la API de Management
Cada componente admite llamadas de supervisión de JMX y la API de Management en puertos diferentes. En la siguiente tabla, se enumeran los puertos de JMX y de la API de Management para cada tipo de servidor:
Componente | Puerto JMX | Puerto de API de Management |
---|---|---|
Servidor de administración | 1099 | 8080 |
Router | 1100 | 8081 |
Message Processor | 1101 | 8082 |
Qpid | 1102 | 8083 |
Postgres | 1103 | 8084 |
Usa JMX para supervisar
Los procesos de supervisión para el servidor de administración, el procesador de mensajes, Qpid y Postgres usan JMX. Sin embargo, JMX está habilitado de forma predeterminada solo para Cassandra y está inhabilitado de forma predeterminada para todos los demás componentes de Edge. Por lo tanto, debes habilitar JMX de forma individual para cada componente antes de poder supervisarlos.
La autenticación JMX no está habilitada de forma predeterminada. Puedes habilitar la autenticación JMX para todos los componentes. Para Cassandra, usa las instrucciones en Habilita la autenticación JMX para Cassandra.
Habilitar JMX
JMX está habilitado de forma predeterminada solo para Cassandra y está inhabilitado de forma predeterminada para todos los demás componentes de Edge. En esta sección, se describe cómo habilitar JMX para los otros componentes de Edge.
Para habilitar JMX, siga estos pasos:
- Edita el archivo de configuración del componente. Este archivo se encuentra en
opt/apigee/edge-component_name/bin/start
. En entornos de producción, estos archivos de configuración estarán en diferentes máquinas.Elige una de las siguientes ubicaciones de los archivos en cada servidor:
- Servidor de administración:
/opt/apigee/edge-management-server/bin/start
- Procesador de mensajes:
/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
Por ejemplo, el archivo de configuración del servidor de administración en su servidor está en
/opt/apigee/edge-management-server/bin/start
. - Servidor de administración:
- Agrega las siguientes opciones de
com.sun.management.jmxremote
a la líneaexec
que inicia el 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
Donde port_number es el puerto JMX para el servicio. Para obtener el número de puerto JMX de tu servicio, consulta JMX y puertos de supervisión de la API de Management.
Por ejemplo, para habilitar JMX en el servidor de administración, agrega lo siguiente al archivo de configuración del servidor de administración:
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
En este ejemplo, se especifica el puerto 1099 para el servidor de administración. Como se indicó anteriormente, cada servicio tiene su propio número de puerto.
La línea editada en el archivo de configuración se ve de la siguiente manera:
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
- Guarda el archivo de configuración.
- Reinicia el componente con el comando
restart
.Por ejemplo, para reiniciar el servidor de administración, ejecuta el siguiente comando:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
La autenticación de JMX no está habilitada de forma predeterminada. Puedes habilitar la autenticación JMX para todos los componentes, como se describe en Cómo habilitar la autenticación JMX. Si quieres habilitar la autenticación JMX para Cassandra, consulta Habilita la autenticación JMX para Cassandra.
Habilitar autenticación JMX
La autenticación JMX no está habilitada de forma predeterminada. Puedes habilitar la autenticación JMX para todos los componentes. Para Cassandra, usa las instrucciones en Habilita la autenticación JMX para Cassandra.
Para habilitar la autenticación JMX, ejecuta la siguiente acción change_jmx_auth
en todos los nodos:
/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]
Aquí:
- component es uno de los siguientes:
edge-management-server
edge-message-processor
edge-postgres-server
edge-qpid-server
edge-router
- options especifica lo siguiente:
-u username
-p password
-e [y|n]
(habilitar o inhabilitar)
- config_file especifica la ubicación de un archivo de configuración en el que defines lo siguiente:
JMX_USERNAME=username
JMX_ENABLED=y|n
JMX_PASSWORD=password
(si no se configura o no se pasa con-p
, se te solicitará)
Puedes usar las opciones de la línea de comandos o el archivo de configuración para definir el nombre de usuario y la contraseña, y habilitar o inhabilitar el estado. No debes especificar un conjunto de opciones y un archivo de configuración.
En el siguiente ejemplo, se habilita la autenticación JMX para el servidor de administración mediante las opciones de línea de comandos:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
En el siguiente ejemplo, se usa un archivo de configuración en lugar de opciones de la línea de comandos:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f /tmp/my-config-file
Si ejecutas Edge en varios nodos, ejecuta el comando en todos los nodos y especifica el mismo nombre de usuario y contraseña.
Para inhabilitar la autenticación JMX en la línea de comandos, usa la opción "-e n", como se muestra en el siguiente ejemplo:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
Cómo supervisar con JConsole
Use JConsole (una herramienta que cumple con JMX) para administrar y supervisar las estadísticas de verificación de estado y procesamiento de datos. Con JConsole, puedes consumir las estadísticas de JMX expuestas por tus servidores y mostrarlas en una interfaz gráfica. Para obtener más información, consulta Cómo usar JConsole.
JConsole usa la siguiente URL de servicio para supervisar los atributos de JMX (MBeans) que se ofrecen a través de JMX:
service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi
Aquí:
- IP_address es la dirección IP del servidor que deseas supervisar.
- port_number es el número de puerto JMX del servidor que deseas supervisar.
Por ejemplo, para supervisar el servidor de administración, ejecuta un comando como el siguiente (suponiendo que la dirección IP del servidor es 216.3.128.12):
service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi
Ten en cuenta que este ejemplo especifica el puerto 1099, que es el puerto JMX del servidor de administración. Para otros puertos, consulta Puertos de supervisión de JMX y de la API de Management.
En la siguiente tabla, se muestran las estadísticas genéricas de JMX:
JMX MBeans | Atributos JMX |
---|---|
Memoria |
HeapMemoryUsage |
Uso sin memoria de montón |
|
Uso |
|
Supervisa con la API de Management
Edge incluye varias API que puedes usar para realizar verificaciones de servicio en los servidores y también a los usuarios, organizaciones y, también, implementaciones. En esta sección, se describen estas API.
Realiza verificaciones de servicios
La API de Management proporciona varios extremos para supervisar y diagnosticar problemas de los servicios. Entre estos extremos, se incluyen los siguientes:
Extremo | Descripción |
---|---|
/servers/self/up |
Comprueba si se está ejecutando un servicio. Esta llamada a la API no requiere que te autentiques. Si el servicio se está ejecutando, este extremo muestra la siguiente respuesta: <ServerField> <Up>true</Up> </ServerField> Si el servicio no se está ejecutando, obtendrás una respuesta similar a la siguiente (según el servicio que sea y la forma en que lo verificaste): curl: Failed connect to localhost:port_number; Connection refused |
/servers/self |
Muestra información sobre el servicio, incluido lo siguiente:
Esta llamada a la API requiere que se autentique con sus credenciales de administrador de Apigee. |
Para usar estos extremos, invoca una utilidad como curl
con comandos que usen la siguiente sintaxis:
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]"
Aquí:
- host es la dirección IP del servidor que deseas verificar. Si accediste al servidor, puedes usar “localhost”. De lo contrario, especifica la dirección IP del servidor, el nombre de usuario y la contraseña.
- port_number es el puerto de la API de Management del servidor que deseas verificar. Este es un puerto diferente para cada tipo de componente. Por ejemplo, el puerto de la API de Management del servidor es 8080. A fin de obtener una lista de los números de puerto de la API de Management que se usarán, consulta Puertos de supervisión de JMX y la API de Management
Para cambiar el formato de la respuesta, puedes especificar el encabezado Accept
como "application/json" o "application/xml".
En el siguiente ejemplo, se obtiene el estado del router en localhost (puerto 8081):
curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"
En el siguiente ejemplo, se obtiene información sobre el Message Processor en 216.3.128.12 (puerto 8082):
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
Supervise el estado de los usuarios, la organización y la implementación
Puedes usar la API de Management para supervisar el usuario, la organización y el estado de implementación de tus proxies en los servidores de administración y los procesadores de mensajes mediante la emisión de los siguientes comandos:
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
Donde port_number es 8080 para el servidor de administración o 8082 para el procesador de mensajes.
Esta llamada requiere que te autentiques con tu nombre de usuario y contraseña de administración del sistema.
El servidor debe mostrar un estado "implementado" para todas las llamadas. Si fallan, haz lo siguiente:
- Revisa los registros del servidor en busca de errores. Los registros se encuentran en las siguientes ubicaciones:
- Servidor de administración:
opt/apigee/var/log/edge-management-server
- Procesador de mensajes:
opt/apigee/var/log/edge-message-processor
- Servidor de administración:
- Realiza una llamada al servidor para verificar si está funcionando correctamente.
- Quita el servidor de ELB y, luego, reinícialo:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
En el ejemplo anterior, service_name es:
edge-management-server
edge-message-processor
Verifica el estado con el comando apigee-service
Puedes solucionar los problemas de los servicios perimetrales mediante el comando apigee-service
cuando accedes al servidor que ejecuta el servicio.
Para verificar el estado de un servicio con apigee-service
, haz lo siguiente:
- Accede al servidor y ejecuta el siguiente comando:
/opt/apigee/apigee-service/bin/apigee-service service_name status
En el ejemplo anterior, service_name es una de las siguientes opciones:
- Servidor de administración:
edge-management-server
- Procesador de mensajes:
edge-message-processor
- Postgres:
edge-postgres-server
- Qpid:
edge-qpid-server
- Router:
edge-router
Por ejemplo:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
- Servidor de administración:
- Si el servicio no se está ejecutando, inícialo:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- Después de reiniciar el servicio, verifica que funcione, ya sea mediante el comando
apigee-service status
que usaste antes o con la API de Management que se describe en Cómo supervisar con la API de Management.Por ejemplo:
curl -v http://localhost:port_number/v1/servers/self/up
Donde port_number es el puerto de la API de Management del servicio.
En este ejemplo, se supone que accediste al servidor y puedes usar “localhost” como nombre de host. Para verificar el estado de forma remota con la API de Management, debes especificar la dirección IP del servidor y, además, incluir el nombre de usuario y la contraseña del administrador del sistema en la llamada a la API.
Supervisión de Postgres
Postgres admite varias utilidades que puedes usar para verificar su estado. Estas utilidades se describen en las siguientes secciones.
Revisa las organizaciones y los entornos en Postgres
Puedes verificar los nombres de organizaciones y entornos que están incorporados en el servidor de Postgres si ejecutas el siguiente comando curl
:
curl -v http://postgres_IP:8084/v1/servers/self/organizations
El sistema debe mostrar el nombre de la organización y del entorno.
Verifica el estado de las estadísticas
Puedes verificar el estado de los servidores de estadísticas de Postgres y Qpid emitiendo el siguiente comando curl
:
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
El sistema debe mostrar un estado de éxito para todos los servidores de estadísticas, como se muestra en el siguiente ejemplo:
{ "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" }
Base de datos PostgresSQL
En esta sección, se describen técnicas que puedes usar específicamente para supervisar la base de datos de Postgres.
Usa la secuencia de comandos check_postgres.pl
Para supervisar la base de datos PostgresSQL, puedes usar una secuencia de comandos de supervisión estándar, check_postgres.pl
. Para obtener más información, consulta http://bucardo.org/wiki/Check_postgres.
Antes de ejecutar la secuencia de comandos, siga estos pasos:
- Debes instalar la secuencia de comandos check_postgres.pl en cada nodo de Postgres.
- Asegúrate de haber instalado
perl-Time-HiRes.x86_64
, un módulo de Perl que implementa alarmas de alta resolución, suspensión, gettimeofday e cronómetros. Por ejemplo, puedes instalarlo con el siguiente comando:
yum install perl-Time-HiRes.x86_64
- CentOS 7: Antes de usar check_postgres.pl en CentOS v7, instala el RPM
perl-Data-Dumper.x86_64
.
Resultado de check_postgres.pl
El resultado predeterminado de las llamadas a la API que usan check_postgres.pl
es compatible con Nagios. Después de instalar la secuencia de comandos, haz lo siguiente:
- Comprueba el tamaño de la base de datos:
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'
- Verifica la cantidad de conexiones entrantes a la base de datos y compárala con la cantidad máxima permitida de conexiones:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- Comprueba si la base de datos está en ejecución y disponible:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- Comprueba el espacio en el disco:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
- Verifica la cantidad de organizaciones y entornos incorporados en un nodo de 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
Ejecutar verificaciones de bases de datos
Puede verificar que se creen las tablas adecuadas en la base de datos de PostgresSQL. Accede a la base de datos de PostgreSQL con el siguiente comando:
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
Luego, ejecute lo siguiente:
\d analytics."org.env.fact"
Verifica el estado del proceso de postgres
Puedes realizar verificaciones de API en la máquina de Postgres si invocas el siguiente comando de curl
:
curl -v http://postgres_IP:8084/v1/servers/self/health
Este comando muestra el estado ACTIVE
cuando el proceso de postgres está activo. Si el proceso de Postgres no está en funcionamiento, se muestra el estado INACTIVE
.
Recursos de Postgres
Para obtener información adicional sobre la supervisión del servicio de Postgres, consulta lo siguiente:
- 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 está habilitado de forma predeterminada para Cassandra y el acceso remoto de JMX a Cassandra no requiere una contraseña.
Habilitar la autenticación JMX para Cassandra
Puedes habilitar la autenticación JMX para Cassandra. Luego, se te pedirá que pases un nombre de usuario y una contraseña a todas las llamadas a la utilidad nodetool.
Si quieres habilitar la autenticación JMX para Cassandra, sigue estos pasos:
- Crea y edita el archivo
cassandra.properties
:- Edita el archivo
/opt/apigee/customer/application/cassandra.properties
. Si el archivo no existe, créalo. - Agrega lo siguiente al archivo:
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
- Guarda el archivo
cassandra.properties
. - Cambia el propietario del archivo a
apigee:apigee
, como se muestra en el siguiente ejemplo:chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
Si quieres obtener más información sobre el uso de archivos de propiedades para establecer tokens, consulta Cómo configurar Edge.
- Edita el archivo
- Crea y edita
jmx_auth.sh
:- Crea un archivo en la siguiente ubicación si no existe:
/opt/apigee/customer/application/jmx_auth.sh
- Agrega las siguientes propiedades al archivo:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- Guarda el archivo
jmx_auth.sh
. - Obtén el archivo
source /opt/apigee/customer/application/jmx_auth.sh
:
- Crea un archivo en la siguiente ubicación si no existe:
- Copia y edita el archivo
jmxremote.password
:- Copia el siguiente archivo del directorio
$JAVA_HOME
a/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
- Edita el archivo
jmxremote.password
y agrega tu nombre de usuario y contraseña de JMX con la siguiente sintaxis:JMX_USERNAME JMX_PASSWORD
En el comando anterior, JMX_USERNAME y JMX_PASSWORD son el nombre de usuario y la contraseña de JMX que configuraste anteriormente.
- Asegúrate de que el archivo sea propiedad de “apigee” y de que el modo de archivo sea 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
- Copia el siguiente archivo del directorio
- Copia y edita el archivo
jmxremote.access
:- Copia el siguiente archivo del directorio
$JAVA_HOME
a/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- Edita el archivo jmxremote.access y agrega el siguiente rol:
JMX_USERNAME readwrite
- Asegúrate de que el archivo sea propiedad de “apigee” y de que el modo de archivo sea 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
- Copia el siguiente archivo del directorio
- Ejecuta
configure
en Cassandra:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Reinicia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Repite este proceso en todos los demás nodos de Cassandra.
Habilitar la encriptación de contraseñas JMX
Para habilitar la encriptación de contraseñas JMX, sigue estos pasos:
- Abre el archivo
source/conf/casssandra-env.sh
. - Quita los comentarios de las siguientes líneas del archivo:
-
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"
-
- En la línea de comandos, ingresa
echo -n 'Secret' | openssl dgst -sha1
para generar los hash SHA1 de las contraseñas deseadas. - Establece las contraseñas en el nombre de usuario de
jmxremote.password
. - Vuelve a cambiar el archivo
cassandra-env.sh
para leer solo después de la actualización.
Habilitar JMX con SSL para Cassandra
La habilitación de JMX con SSL proporciona seguridad y encriptación adicionales para la comunicación basada en JMX con Cassandra. Si quieres habilitar JMX con SSL, debes proporcionar una clave y un certificado a Cassandra para aceptar conexiones JMX basadas en SSL. También debes configurar nodetool (y cualquier otra herramienta que se comunique con Cassandra a través de JMX) para SSL.
JMX habilitado para SSL admite contraseñas JMX de texto simple y encriptadas.
Si quieres habilitar JMX con SSL para Cassandra, usa el siguiente procedimiento:
- Habilita JMX. Habilita la encriptación de contraseñas si es necesario.
- Habilita la autenticación JMX para Cassandra.
como se describió anteriormente. Asegúrate de que nodetool esté funcionando con el nombre de usuario y la contraseña configurados.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
Preparar almacén de claves y almacén de confianza
El almacén de claves debe contener una clave y un certificado, y se usa para configurar el servidor de Cassandra. Si el almacén de claves contiene varios pares de claves, Cassandra usa el primer par de claves para habilitar SSL.
Ten en cuenta que las contraseñas del almacén de claves y la clave deben ser iguales (las predeterminadas cuando generas la clave con keytool).
- Truststore solo debe contener el certificado, y los clientes (los comandos basados en servicios de Apigee o nodetool) lo usan para conectarse a través de JMX.
Después de verificar los requisitos anteriores:
- Coloca el archivo del almacén de claves en
/opt/apigee/data/apigee-cassandra
. - Ingresa
chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1 chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
para asegurarte de que solo el usuario de Apigee pueda leer el archivo del almacén de claves.
- Configura Cassandra para JMX con SSL mediante los siguientes pasos:
- Para detener el nodo de Cassandra, ingresa
apigee-service apigee-cassandra stop
. - Para habilitar SSL en Cassandra, abre el archivo
/opt/apigee/customer/application/cassandra.properties
y agrega la siguiente línea:conf_cassandra-env_com.sun.management.jmxremote.ssl=true
El archivo debe ser propiedad de
apigee:apigee
. - Habilita la configuración relacionada con SSL en Cassandra de la siguiente manera.
Abre el archivo
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
, quita los comentarios de las siguientes líneas y cambia la ruta/opt/apigee/data/apigee-cassandra/keystore.node1
y la contraseña del almacén de claves según sea necesario.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"
Asegúrese de que el archivo sea propiedad deapigee:apigee
. - Para iniciar el nodo Cassandra, ingresa
apigee-service apigee-cassandra start
.
- Para detener el nodo de Cassandra, ingresa
- Configura los comandos de
apigee-service
de Cassandra. Debes establecer ciertas variables de entorno mientras ejecutas los comandosapigee-service
, incluidas las que se muestran a continuación:apigee-service apigee-cassandra stop apigee-service apigee-cassandra wait_for_ready apigee-service apigee-cassandra ring apigee-service apigee-cassandra backup
Existen varias opciones a fin de configurar
apigee-service
para la autenticación JMX y SSL. Elige una opción en función de la usabilidad y tus prácticas de seguridad.- Opción 1 (argumentos SSL almacenados en el archivo)
- Opción 2 (argumentos SSL almacenados en variables de entorno)
- Opción 3 (argumentos SSL pasados directamente a
apigee-service
)
Opción 1 (argumentos SSL almacenados en el archivo)
Configura las siguientes variables del entorno:
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 archivo en el directorio principal del usuario de Apigee (
/opt/apigee
).$HOME/.cassandra/nodetool-ssl.properties
Edite el archivo y agregue las siguientes líneas:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
Asegúrese de que el usuario de Apigee pueda leer el archivo trustore.
Ejecuta el siguiente comando
apigee-service
: Si se ejecuta sin errores, la configuración es correcta.apigee-service apigee-cassandra ring
Opción 2 (argumentos SSL almacenados en variables de entorno)
Configura las siguientes variables del entorno:
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>
Ejecuta el siguiente comando
apigee-service
: Si se ejecuta sin errores, la configuración es correcta.apigee-service apigee-cassandra ring
Opción 3 (argumentos SSL pasados directamente a
apigee-service
)Ejecuta cualquier comando
apigee-service
como el que se muestra a continuación. No es necesario configurar ninguna variable de entorno.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 requiere que se le pasen parámetros de JMX. Existen dos maneras de configurar nodetool para que se ejecute con JMX habilitado para SSL, como se describe en las siguientes opciones de configuración:
Las opciones difieren en la forma en que se pasan las configuraciones relacionadas con SSL a nodetool. En ambos casos, el usuario que ejecuta nodetool debería tener permisos de LECTURA en el archivo del almacén de confianza. Elige una opción adecuada según tu usabilidad y prácticas de seguridad.
Para obtener más información sobre los parámetros de nodetool, consulta la documentación de DataStax.
Opción de configuración 1
Crea un archivo en el directorio principal del usuario que ejecuta nodetool.
$HOME/.cassandra/nodetool-ssl.properties
Agrega las siguientes líneas al archivo:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
Cualquier usuario que ejecute nodetool debe poder acceder a la ruta del almacén de confianza especificada con anterioridad.
Ejecuta
nodetool
con la opción--ssl
./opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
Opción de configuración 2
Ejecuta
nodetool
como un solo comando con los parámetros adicionales que se enumeran a continuación./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
Revertir configuraciones SSL
Si necesitas revertir las configuraciones de SSL descritas en el procedimiento anterior, sigue estos pasos:
- Ingresa
apigee-service apigee-cassandra stop
para detenerteapigee-cassandra
- Quita la línea
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
del archivo/opt/apigee/customer/application/cassandra.properties
. - Comenta las siguientes líneas en
/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”
- Ingresa
apigee-cassandra
para ingresar - Quita la variable de entorno
CASS_JMX_SSL
si se configuró.unset CASS_JMX_SSL
- Verifica que funcionen los comandos basados en
apigee-service
, comoring
,stop
ybackup
, entre otros. - Deja de usar el interruptor
--ssl
con nodetool
apigee-service apigee-cassandra start
Inhabilitar la autenticación JMX para Cassandra
Para inhabilitar la autenticación JMX en Cassandra, sigue estos pasos:
- Editar
/opt/apigee/customer/application/cassandra.properties
. - Quita la siguiente línea del archivo:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- Ejecuta la configuración en Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Reinicia Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Repite este proceso en todos los demás nodos de Cassandra.
Usa JConsole: Supervisa las estadísticas de tareas
Usa JConsole y la siguiente URL de servicio para supervisar los atributos de JMX (MBeans) que se ofrecen a través de JMX:
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
Donde IP_address es la IP del servidor de Cassandra.
Estadísticas de Cassandra JMX
JMX MBeans | Atributos JMX |
---|---|
ColumnFamilies/apprepo/entornos ColumnFamilies/apprepo/organizations ColumnFamilies/apprepo/apiproxy_revisions ColumnFamilies/apprepo/apiproxies Familias/columna/auditoría/auditorías ColumnasFamilias/audit/audits_ref |
Tareas pendientes |
Recuento de columnas |
|
Tamaño de los datos medibles |
|
Recuento de lectura |
|
RecentReadLatencyMicros |
|
Total de latencia de lectura micros |
|
Recuento de escrituras |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
Espacio en disco total usado |
|
Espacio en vivo en disco utilizado |
|
LiveSSTableCount. |
|
FiltroFalsoFalsos positivos |
|
Filtro de BloomFilterFalseRatio |
|
Proporción de filtros falsos de Bloom |
Use nodetool para administrar los nodos del clúster
La utilidad nodetool es una interfaz de línea de comandos para Cassandra que administra
los nodos del clúster. Puedes encontrar la utilidad en /opt/apigee/apigee-cassandra/bin
.
Se pueden realizar las siguientes llamadas en todos los nodos del clúster de Cassandra:
- Información general del anillo (también es posible para un nodo de Cassandra único): Busca los nodos "Arriba" y "Normal" en todos los nodos.
nodetool [-u username -pw password] -h localhost ring
Solo debes pasar tu nombre de usuario y contraseña si habilitaste la autenticación JMX para Cassandra.
El resultado del comando anterior se ve como se muestra a continuación:
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
- Información general sobre los nodos (llamada por nodo)
nodetool [-u username -pw password] -h localhost info
El resultado del comando anterior se ve de la siguiente manera:
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
- Estado del servidor de segunda mano (entrega de la API del cliente)
nodetool [-u username -pw password] -h localhost statusthrift
El resultado del comando anterior se ve de la siguiente manera:
running
- Estado de las operaciones de transmisión de datos: Observa el tráfico de nodos de Cassandra:
nodetool [-u username -pw password] -h localhost netstats
El resultado del comando anterior se ve de la siguiente manera:
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
Para obtener más información sobre nodetool, consulta Acerca de la utilidad de nodetool.
Recurso de Cassandra
Consulte la siguiente URL: http://www.datastax.com/docs/1.0/operations/monitoring.
Apache ZooKeeper
Cómo verificar el estado de ZooKeeper
- Asegúrate de que el proceso de ZooKeeper esté en ejecución. ZooKeeper escribe un archivo PID en
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
. - Prueba los puertos de ZooKeeper para asegurarte de poder establecer una conexión TCP a los puertos 2181 y 3888 en cada servidor de ZooKeeper.
- Asegúrate de poder leer los valores de la base de datos de ZooKeeper. Conéctate mediante una biblioteca cliente de ZooKeeper (o
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
) y lee un valor de la base de datos. - Verifica el estado:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
Usa palabras de cuatro letras de ZooKeeper
ZooKeeper se puede supervisar mediante un pequeño conjunto de comandos (palabras de cuatro letras) que se envían al puerto 2181 con netcat (nc) o telnet.
Para obtener más información sobre los comandos de ZooKeeper, consulta la referencia de comandos de Apache ZooKeeper.
Por ejemplo:
srvr
: Muestra una lista de los detalles completos del servidor.stat
: Muestra una lista de los detalles breves del servidor y los clientes conectados.
Se pueden emitir los siguientes comandos al puerto ZooKeeper:
- Ejecute el comando ruok de cuatro letras para probar si el servidor se está ejecutando en un estado que no es un error. Una respuesta correcta muestra “imok”.
echo ruok | nc host 2181
Se muestra lo siguiente:
imok
- Ejecuta el comando de cuatro letras,
stat
, para enumerar el rendimiento del servidor y las estadísticas de los clientes conectados:echo stat | nc host 2181
Se muestra lo siguiente:
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
- Si netcat (nc) no está disponible, puedes usar Python como alternativa. Crea un archivo llamado
zookeeper.py
que contenga lo siguiente: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)
Ahora, ejecute las siguientes líneas de Python:
python zookeeper.py 192.168.124.201 ruok
python zookeeper.py 192.168.124.201 stat
Prueba de nivel de LDAP
Puede supervisar OpenLDAP para ver si las solicitudes específicas se entregan correctamente. En otras palabras, comprueba si hay una búsqueda específica que muestre el resultado correcto.
- Usa
ldapsearch
(yum install openldap-clients
) para consultar la entrada del administrador del sistema. Esta entrada se usa para autenticar todas las llamadas a la 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
A continuación, se le solicitará la contraseña de administrador de LDAP:
Enter LDAP Password:
Después de ingresar la contraseña, verá una respuesta en el formulario:
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
- Usa el siguiente comando para verificar si Management Server sigue conectado a LDAP:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
Se muestra lo siguiente:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
También puedes supervisar las cachés de OpenLDAP, que ayudan a reducir la cantidad de accesos al disco y, por lo tanto, mejorar el rendimiento del sistema. Supervisar y, luego, ajustar el tamaño de la caché en el servidor de OpenLDAP puede tener un gran impacto en el rendimiento del servidor del directorio. Puedes ver los archivos de registro (opt/apigee/var/log
) para obtener información sobre la caché.