本文档介绍了 Apigee Edge 的本地部署所支持的组件的监控技术。
概览
Edge 支持多种方式来获取服务的详细信息以及检查其状态。下表列出了您可以对每项符合条件的服务执行的检查类型:
管理 API | |||||||
服务 | 内存用量 [JMX*] | 服务检查 | 用户/组织/ 部署状态 | axstatus | 数据库检查 | apigee-service 状态 |
apigee-monit ** |
管理服务器 | |||||||
消息处理器 | |||||||
Postgres | |||||||
Qpid | |||||||
路由器 | |||||||
了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | |
* 您必须先按照启用 JMX 中的说明启用 JMX,然后才能使用 JMX。 ** |
JMX 和 Management API 监控端口
每个组件都支持在不同的端口上进行 JMX 和 Management API 监控调用。下表列出了每种类型服务器的 JMX 和 Management API 端口:
组件 | JMX 端口 | Management API 端口 |
---|---|---|
管理服务器 | 1099 | 8080 |
路由器 | 1100 | 8081 |
消息处理器 | 1101 | 8082 |
Qpid | 1102 | 8083 |
Postgres | 1103 | 8084 |
使用 JMX 进行监控
管理服务器、消息处理器、Qpid 和 Postgres 的监控进程均使用 JMX。不过,默认情况下,只有 Cassandra 启用了 JMX,所有其他 Edge 组件均停用了 JMX。因此,您必须先为每个组件单独启用 JMX,然后才能监控它们。
JMX 身份验证默认处于停用状态。您可以为所有组件启用 JMX 身份验证。对于 Cassandra,请按照为 Cassandra 启用 JMX 身份验证中的说明操作。
启用 JMX
默认情况下,仅为 Cassandra 启用 JMX,并为所有其他 Edge 组件停用 JMX。本部分介绍了如何为其他 Edge 组件启用 JMX。
如需启用 JMX,请执行以下操作:
- 修改组件的配置文件。此文件位于
opt/apigee/edge-component_name/bin/start
。在生产环境中,这些配置文件将位于不同的计算机上。从每台服务器上的以下文件位置中进行选择:
- 管理服务器:
/opt/apigee/edge-management-server/bin/start
- 消息处理器:
/opt/apigee/edge-message-processor/bin/start
- Postgres:
/opt/apigee/edge-postgres-server/bin/start
- Qpid:
/opt/apigee/edge-qpid-server/bin/start
- 路由器:
/opt/apigee/edge-router/bin/start
例如,管理服务器在其服务器上的配置文件位于
/opt/apigee/edge-management-server/bin/start
。 - 管理服务器:
- 将以下
com.sun.management.jmxremote
选项添加到启动组件的exec
行:-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
其中 port_number 是服务的 JMX 端口。如需获取服务的 JMX 端口号,请参阅 JMX 和 Management API 监控端口。
例如,如需在管理服务器上启用 JMX,请将以下内容添加到管理服务器的配置文件中:
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
此示例为管理服务器指定了端口 1099。如前所述,每项服务都有自己的端口号。
配置文件中修改后的行如下所示:
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
- 保存配置文件。
- 使用
restart
命令重启组件。例如,如需重启管理服务器,请执行以下命令:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
默认情况下,JMX 身份验证未启用。您可以为所有组件启用 JMX 身份验证,如启用 JMX 身份验证中所述。如需为 Cassandra 启用 JMX 身份验证,请参阅为 Cassandra 启用 JMX 身份验证。
启用 JMX 身份验证
JMX 身份验证默认处于停用状态。您可以为所有组件启用 JMX 身份验证。对于 Cassandra,请按照为 Cassandra 启用 JMX 身份验证中的说明操作
如需启用 JMX 身份验证,请在所有节点上执行以下 change_jmx_auth
操作:
/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]
其中:
- component 是以下值之一:
edge-management-server
edge-message-processor
edge-postgres-server
edge-qpid-server
edge-router
- options 指定以下内容:
-u username
-p password
-e [y|n]
(启用或停用)
- config_file 用于指定配置文件的位置,您可以在其中定义以下内容:
JMX_USERNAME=username
JMX_ENABLED=y|n
JMX_PASSWORD=password
(如果未设置或未通过-p
传入,系统会提示您)
您可以使用命令行选项或配置文件来定义用户名、密码和启用/停用状态。您未同时指定一组选项和配置文件。
以下示例使用命令行选项为管理服务器启用 JMX 身份验证:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
以下示例使用配置文件,而不是命令行选项:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f /tmp/my-config-file
如果您在多个节点上运行 Edge,请在所有节点上运行该命令,并指定相同的用户名和密码。
如需在命令行中停用 JMX 身份验证,请使用“-e n”选项,如以下示例所示:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
使用 JConsole 进行监控
使用 JConsole(一个符合 JMX 标准的工具)管理和监控健康检查和进程统计信息。 借助 JConsole,您可以使用服务器公开的 JMX 统计信息,并将其显示在图形界面中。如需了解详情,请参阅使用 JConsole。
JConsole 使用以下服务网址来监控通过 JMX 提供的 JMX 属性 (MBean):
service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi
其中:
- IP_address 是您要监控的服务器的 IP 地址。
- port_number 是您要监控的服务器的 JMX 端口号。
例如,如需监控管理服务器,请发出类似以下的命令(假设服务器的 IP 地址为 216.3.128.12):
service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi
请注意,此示例指定了端口 1099,这是管理服务器 JMX 端口。如需了解其他端口,请参阅 JMX 和 Management API 监控端口。
下表显示了通用 JMX 统计信息:
JMX MBean | JMX 属性 |
---|---|
内存 |
HeapMemoryUsage |
NonHeapMemoryUsage |
|
用法 |
|
使用 Management API 进行监控
Edge 包含多个 API,可用于在服务器上执行服务检查以及检查用户、组织和部署。本部分介绍了这些 API。
执行服务检查
Management API 提供了多个端点,用于监控和诊断服务问题。这些端点包括:
端点 | 说明 |
---|---|
/servers/self/up |
检查服务是否正在运行。您无需进行身份验证即可执行此 API 调用。 如果服务正在运行,此端点会返回以下响应: <ServerField> <Up>true</Up> </ServerField> 如果服务未运行,您将收到类似于以下内容的响应(具体取决于服务及其检查方式): curl: Failed connect to localhost:port_number; Connection refused |
/servers/self |
返回有关服务的信息,包括:
此 API 调用需要您使用 Apigee 管理员凭据进行身份验证。 |
如需使用这些端点,请使用采用以下语法的命令调用 curl
等实用程序:
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]"
其中:
- host 是您要检查的服务器的 IP 地址。如果您已登录服务器,则可以使用“localhost”;否则,请指定服务器的 IP 地址以及用户名和密码。
- port_number 是您要检查的服务器的 Management API 端口。这对于每种类型的组件而言都是不同的端口。例如,管理服务器的 Management API 端口为 8080。如需查看要使用的 Management API 端口号列表,请参阅 JMX 和 Management API 监控端口
如需更改响应的格式,您可以将 Accept
标头指定为“application/json”或“application/xml”。
以下示例获取本地主机(端口 8081)上的路由器状态:
curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"
以下示例可获取有关位于 216.3.128.12(端口 8082)的消息处理器的信息:
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
监控用户、组织和部署状态
您可以使用 Management API 发出以下命令,监控管理服务器和消息处理器上代理的用户、组织和部署状态:
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
其中,port_number 是管理服务器的 8080 或消息处理器的 8082。
此调用要求您使用系统管理员用户名和密码进行身份验证。
服务器应针对所有调用返回“已部署”状态。如果这些操作失败,请执行以下操作:
- 检查服务器日志中是否有错误。日志位于以下位置:
- 管理服务器:
opt/apigee/var/log/edge-management-server
- 消息处理器:
opt/apigee/var/log/edge-message-processor
- 管理服务器:
- 对服务器进行调用,检查其是否正常运行。
- 从 ELB 中移除服务器,然后重启:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
其中 service_name 为:
edge-management-server
edge-message-processor
使用 apigee-service
命令检查状态
在登录运行 Edge 服务的服务器后,您可以使用 apigee-service
命令对 Edge 服务进行问题排查。
如需使用 apigee-service
检查服务的状态,请执行以下操作:
- 登录服务器并运行以下命令:
/opt/apigee/apigee-service/bin/apigee-service service_name status
其中 service_name 是以下值之一:
- 管理服务器:
edge-management-server
- 消息处理器:
edge-message-processor
- Postgres:
edge-postgres-server
- Qpid:
edge-qpid-server
- 路由器:
edge-router
例如:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
- 管理服务器:
- 如果服务未运行,请启动服务:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- 重启服务后,请使用之前使用的
apigee-service status
命令或使用 Management API 进行监控中介绍的 Management API 检查服务是否正常运行。例如:
curl -v http://localhost:port_number/v1/servers/self/up
其中 port_number 是服务的 Management API 端口。
此示例假定您已登录服务器并且可以使用“localhost”作为主机名。要使用 Management API 远程检查状态,您必须指定服务器的 IP 地址,并在 API 调用中添加系统管理员用户名和密码。
Postgres 监控
Postgres 支持多种实用程序,您可以使用这些实用程序检查其状态。以下部分介绍了这些实用程序。
在 Postgres 上查看组织和环境
您可以通过发出以下 curl
命令来检查已在 Postgres 服务器上完成初始配置的组织和环境名称:
curl -v http://postgres_IP:8084/v1/servers/self/organizations
系统应显示组织和环境名称。
验证分析状态
您可以通过发出以下 curl
命令来验证 Postgres 和 Qpid 分析服务器的状态:
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
系统应为所有分析服务器显示成功状态,如以下示例所示:
{ "environments" : [ { "components" : [ { "message" : "success at Thu Feb 28 10:27:38 CET 2013", "name" : "pg", "status" : "SUCCESS", "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]" }, { "message" : "success at Thu Feb 28 10:29:03 CET 2013", "name" : "qs", "status" : "SUCCESS", "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]" } ], "message" : "", "name" : "prod" } ], "organization" : "acme", "status" : "SUCCESS" }
PostgreSQL 数据库
本部分介绍了您可以专门用于监控 Postgres 数据库的技术。
使用 check_postgres.pl
脚本
如需监控 PostgreSQL 数据库,您可以使用标准监控脚本 check_postgres.pl
。如需了解详情,请参阅 http://bucardo.org/wiki/Check_postgres。
运行脚本之前:
- 您必须在每个 Postgres 节点上安装 check_postgres.pl 脚本。
- 确保已安装
perl-Time-HiRes.x86_64
,这是一个 Perl 模块,用于实现高分辨率闹钟、休眠、gettimeofday 和间隔计时器。例如,您可以使用以下命令进行安装:
yum install perl-Time-HiRes.x86_64
- CentOS 7:在 CentOS v7 上使用 check_postgres.pl 之前,请安装
perl-Data-Dumper.x86_64
RPM。
check_postgres.pl 输出
使用 check_postgres.pl
的 API 调用的默认输出与 Nagios 兼容。安装脚本后,请执行以下检查:
- 检查数据库大小:
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'
- 检查数据库的传入连接数,并与允许的连接数上限进行比较:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- 检查数据库是否正在运行且可用:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- 检查磁盘可用空间:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
- 检查 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
运行数据库检查
您可以验证 PostgreSQL 数据库中是否已创建正确的表。使用以下命令登录 PostgreSQL 数据库:
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
然后运行以下命令:
\d analytics."org.env.fact"
检查 postgres 进程的运行状况
您可以通过调用以下 curl
命令在 Postgres 计算机上执行 API 检查:
curl -v http://postgres_IP:8084/v1/servers/self/health
当 postgres 进程处于活动状态时,此命令会返回 ACTIVE
状态。如果 Postgres 进程未启动并运行,则会返回 INACTIVE
状态。
Postgres 资源
如需详细了解如何监控 Postgres 服务,请参阅以下内容:
- 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
Cassandra 默认启用 JMX,并且对 Cassandra 的远程 JMX 访问不需要密码。
为 Cassandra 启用 JMX 身份验证
您可以为 Cassandra 启用 JMX 身份验证。完成此操作后,您需要向对 nodetool 实用程序的所有调用传递用户名和密码。
如需为 Cassandra 启用 JMX 身份验证,请执行以下操作:
- 创建和修改
cassandra.properties
文件:- 修改
/opt/apigee/customer/application/cassandra.properties
文件。如果该文件不存在,请创建一个。 - 将以下内容添加到文件中:
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
- 保存
cassandra.properties
文件。 - 将文件的所有者更改为
apigee:apigee
,如以下示例所示:chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
如需详细了解如何使用属性文件设置令牌,请参阅如何配置 Edge。
- 修改
- 创建和修改
jmx_auth.sh
:- 在以下位置创建一个文件(如果该文件不存在):
/opt/apigee/customer/application/jmx_auth.sh
- 将以下属性添加到该文件中:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- 保存
jmx_auth.sh
文件。 - 获取文件的来源:
source /opt/apigee/customer/application/jmx_auth.sh
- 在以下位置创建一个文件(如果该文件不存在):
- 复制并修改
jmxremote.password
文件:- 将以下文件从
$JAVA_HOME
目录复制到/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
- 修改
jmxremote.password
文件,并使用以下语法添加 JMX 用户名和密码:JMX_USERNAME JMX_PASSWORD
其中 JMX_USERNAME 和 JMX_PASSWORD 是您之前设置的 JMX 用户名和密码。
- 确保该文件归“apigee”所有,并且文件模式为 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
- 将以下文件从
- 复制并修改
jmxremote.access
文件:- 将以下文件从
$JAVA_HOME
目录复制到/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- 修改 jmxremote.access 文件并添加以下角色:
JMX_USERNAME readwrite
- 确保该文件归“apigee”所有,并且文件模式为 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
- 将以下文件从
- 在 Cassandra 上运行
configure
:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 对所有其他 Cassandra 节点重复此过程。
启用 JMX 密码加密
如需启用 JMX 密码加密,请执行以下步骤:
- 打开
source/conf/casssandra-env.sh
文件。 - 取消对文件中以下行的注释:
-
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"
-
- 在命令行中,输入
echo -n 'Secret' | openssl dgst -sha1
以生成所需密码的 SHA1 哈希 - 在
jmxremote.password
中为用户名设置密码。 - 更新后,将文件
cassandra-env.sh
改回只读。
为 Cassandra 启用带 SSL 的 JMX
启用带 SSL 的 JMX 可为与 Cassandra 基于 JMX 的通信提供额外的安全性和加密功能。如需启用带 SSL 的 JMX,您需要向 Cassandra 提供密钥和证书,以便接受基于 SSL 的 JMX 连接。您还需要为 nodetool(以及通过 JMX 与 Cassandra 通信的任何其他工具)配置 SSL。
启用了 SSL 的 JMX 同时支持纯文本 JMX 密码和加密 JMX 密码。
如需为 Cassandra 启用带 SSL 的 JMX,请按以下步骤操作:
- 启用 JMX。 如有需要,请启用密码加密。
- 为 Cassandra 启用 JMX 身份验证。
如上所述。确保 nodetool 可以使用配置的用户名和密码。
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
准备密钥库和信任库。
密钥库应包含密钥和证书,并用于配置 Cassandra 服务器。如果密钥库包含多个密钥对,Cassandra 会使用第一个密钥对来启用 SSL。
请注意,密钥库和密钥的密码应相同(使用 keytool 生成密钥时的默认密码)。
- 信任库应仅包含证书,供客户端(基于 Apigee 服务的命令或 nodetool)通过 JMX 连接使用。
验证上述要求后:
- 将密钥库文件放在
/opt/apigee/data/apigee-cassandra
中。 - 输入
chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1 chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
,确保只有 Apigee 用户可以读取密钥库文件
- 请按以下步骤为 Cassandra 配置 SSL 的 JMX:
- 输入
apigee-service apigee-cassandra stop
以停止 Cassandra 节点 - 打开
/opt/apigee/customer/application/cassandra.properties
文件并添加以下行,以在 Cassandra 中启用 SSL:conf_cassandra-env_com.sun.management.jmxremote.ssl=true
文件应归
apigee:apigee
所有。 - 按照以下步骤在 Cassandra 中启用 SSL 相关配置。
打开文件
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
,取消注释以下行,并根据需要更改路径/opt/apigee/data/apigee-cassandra/keystore.node1
和密钥库密码。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"
确保文件归apigee:apigee
所有。 - 输入
apigee-service apigee-cassandra start
以启动 Cassandra 节点
- 输入
- 配置
apigee-service
Cassandra 命令。 您需要在运行apigee-service
命令时设置特定的环境变量,包括以下变量:apigee-service apigee-cassandra stop apigee-service apigee-cassandra wait_for_ready apigee-service apigee-cassandra ring apigee-service apigee-cassandra backup
您可以通过多种方式为 JMX 身份验证和 SSL 配置
apigee-service
。根据易用性和安全做法选择一个选项。选项 1(SSL 参数存储在文件中)
设置以下环境变量:
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
在 Apigee 用户的主目录 (
/opt/apigee
) 中创建一个文件。$HOME/.cassandra/nodetool-ssl.properties
修改该文件并添加以下行:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
确保 Apigee 用户可以读取信任库文件。
运行以下
apigee-service
命令。 如果它能顺利运行,则表示您的配置正确无误。apigee-service apigee-cassandra ring
选项 2(SSL 参数存储在环境变量中)
设置以下环境变量:
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>
运行以下
apigee-service
命令。如果它能正常运行,则表示您的配置正确无误。apigee-service apigee-cassandra ring
选项 3(将 SSL 参数直接传递给
apigee-service
)运行任意
apigee-service
命令,如下所示。 您无需配置任何环境变量。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
设置 nodetool。Nodetool 需要向其传递 JMX 参数。您可以通过以下两种方式配置 nodetool 以启用 SSL 的 JMX 运行,如下面的配置选项所述:
这两个选项在将 SSL 相关配置传递给 nodetool 的方式上有所不同。在上述两种情况下,运行 nodetool 的用户都应对信任库文件拥有读取权限。根据易用性和安全做法选择适当的选项。
如需详细了解 nodetool 参数,请参阅 DataStax 文档。
配置选项 1
在运行 nodetool 的用户的主目录中创建一个文件。
$HOME/.cassandra/nodetool-ssl.properties
将以下代码行添加到文件中:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
上述信任库路径应可供运行 nodetool 的任何用户访问。
使用
--ssl
选项运行nodetool
。/opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
配置选项 2
使用下列额外参数将
nodetool
作为单个命令运行。/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
还原 SSL 配置
如果您需要还原上述步骤中所述的 SSL 配置,请执行以下步骤:
- 输入
apigee-service apigee-cassandra stop
停止apigee-cassandra
- 从文件
/opt/apigee/customer/application/cassandra.properties
中移除conf_cassandra-env_com.sun.management.jmxremote.ssl=true
行。 - 在
/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”
- 输入以下命令启动
apigee-cassandra
- 移除环境变量
CASS_JMX_SSL
(如果已设置)。unset CASS_JMX_SSL
- 检查基于
apigee-service
的命令(例如ring
、stop
、backup
等)是否正常运行。 - 停止将
--ssl
开关与 nodetool 搭配使用
apigee-service apigee-cassandra start
为 Cassandra 停用 JMX 身份验证
如需为 Cassandra 停用 JMX 身份验证,请执行以下操作:
- 修改
/opt/apigee/customer/application/cassandra.properties
。 - 移除文件中的以下行:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- 在 Cassandra 上运行 configure:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 对所有其他 Cassandra 节点重复此过程。
使用 JConsole:监控任务统计信息
使用 JConsole 和以下服务网址监控通过 JMX 提供的 JMX 属性 (MBean):
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
其中 IP_address 是 Cassandra 服务器的 IP 地址。
Cassandra JMX 统计信息
JMX MBean | 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 |
使用 nodetool 管理集群节点
nodetool 实用程序是 Cassandra 的命令行界面,用于管理集群节点。该实用程序位于 /opt/apigee/apigee-cassandra/bin
。
可以在所有 Cassandra 集群节点上进行以下调用:
- 常规环形信息(也适用于单个 Cassandra 节点):查找所有节点的“已启动”和“正常”状态。
nodetool [-u username -pw password] -h localhost ring
仅当您为 Cassandra 启用了 JMX 身份验证时,才需要传递用户名和密码。
上述命令的输出如下所示:
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
- 节点的一般信息(每个节点调用一次)
nodetool [-u username -pw password] -h localhost info
上述命令的输出如下所示:
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
- Thrift 服务器的状态(提供客户端 API)
nodetool [-u username -pw password] -h localhost statusthrift
上述命令的输出如下所示:
running
- 数据流操作的状态:观察 Cassandra 节点的流量:
nodetool [-u username -pw password] -h localhost netstats
上述命令的输出如下所示:
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
如需详细了解 nodetool,请参阅 nodetool 实用程序简介。
Cassandra 资源
请参阅以下网址:http://www.datastax.com/docs/1.0/operations/monitoring。
Apache ZooKeeper
检查 ZooKeeper 状态
- 确保 ZooKeeper 进程正在运行。ZooKeeper 会将 PID 文件写入
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
。 - 测试 ZooKeeper 端口,确保您可以与每个 ZooKeeper 服务器上的端口 2181 和 3888 建立 TCP 连接。
- 确保您可以从 ZooKeeper 数据库中读取值。使用 ZooKeeper 客户端库(或
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
)进行连接并从数据库中读取值。 - 查看状态:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
使用 ZooKeeper 四字母字词
您可以通过一小组命令(四个字母的单词)监控 ZooKeeper,这些命令会使用 netcat (nc) 或 telnet 发送到端口 2181。
如需详细了解 ZooKeeper 命令,请参阅 Apache ZooKeeper 命令参考。
例如:
srvr
:列出服务器的完整详细信息。stat
:列出服务器和已连接的客户端的简要详细信息。
您可以发出以下命令到 ZooKeeper 端口:
- 运行由四个字母组成的 ruok 命令,测试服务器是否以无错误状态运行。成功的响应会返回“imok”。
echo ruok | nc host 2181
返回:
imok
- 运行由四个字母组成的命令
stat
,以列出服务器性能和已连接客户端的统计信息:echo stat | nc host 2181
返回:
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
- 如果 netcat (nc) 不可用,您可以使用 Python 作为替代方案。创建一个名为
zookeeper.py
的文件,其中包含以下内容: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)
现在,运行以下 Python 代码行:
python zookeeper.py 192.168.124.201 ruok
python zookeeper.py 192.168.124.201 stat
LDAP 级别测试
您可以监控 OpenLDAP,了解特定请求是否正常处理。换句话说,检查是否有特定搜索会返回正确的结果。
- 使用
ldapsearch
(yum install openldap-clients
) 查询系统管理员条目。此条目用于对所有 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
然后,系统会提示您输入 LDAP 管理员密码:
Enter LDAP Password:
输入密码后,您会在表单中看到响应:
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
- 使用以下命令检查管理服务器是否仍连接到 LDAP:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
返回:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
您还可以监控 OpenLDAP 缓存,这有助于减少磁盘访问次数,从而提高系统性能。在 OpenLDAP 服务器中监控并调整缓存大小可能会严重影响目录服务器的性能。您可以查看日志文件 (opt/apigee/var/log
),以获取有关缓存的信息。