本文档介绍了适用于私有云的 Apigee Edge 的本地部署支持的组件监控技术。
概览
Edge 支持通过多种方式获取服务详细信息及检查服务状态。下表列出了您可以对每项符合条件的服务执行的检查类型:
管理 API | |||||||
组件 | 内存用量 [JMX*] | 服务检查 | 用户/组织/ 部署状态 | axstatus | 数据库检查 | apigee-service 状态 |
apigee-monit ** |
管理服务器 | |||||||
消息处理器 | |||||||
路由器 | |||||||
Qpid | |||||||
Postgres | |||||||
了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | 了解详情 | |
* 您必须先启用 JMX,然后才能使用它,如启用 JMX中所述。 ** |
监控端口和配置文件
每个组件都支持在不同的端口上进行 Java Management Extensions (JMX) 和 Management API 监控调用。下表列出了每种类型服务器的 JMX 和 Management API 端口以及配置文件位置:
组件 | JMX 端口 | Management API 端口 | 配置文件位置 |
---|---|---|---|
管理服务器 | 1099 | 8080 | $APIGEE_ROOT/customer/application/management-server.properties |
消息处理器 | 1101 | 8082 | $APIGEE_ROOT/customer/application/message-processor.properties |
路由器 | 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 |
使用 JMX 监控组件
以下部分介绍了如何使用 JMX 监控 Edge 组件。
启用 JMX
如需在不进行身份验证或基于 SSL 的通信的情况下启用 JMX,请执行以下步骤。 注意:在生产系统中,应同时启用加密身份验证和 SSL 以确保安全。
- 修改相应的配置文件(请参阅
配置文件参考)。如果配置文件不存在,请创建一个。
conf_system_jmxremote_enable=true
- 保存配置文件并确保其归
apigee:apigee
所有。 - 重启相应的 Edge 组件
apigee-service edge-management-server restart
如需停用 JMX,请移除属性 conf_system_jmxremote_enable
或将其值更改为 false
。然后重启相应的 Edge 组件。
JMX 中的身份验证
适用于私有云的 Edge 支持使用文件中存储的详细信息进行基于密码的身份验证。您可以将密码存储为哈希,以提高安全性。
- 要在 Edge-* 组件中启用 JMX 身份验证,请修改相应的配置文件(请参阅
配置文件参考)。创建配置文件(如果不存在):
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
保存配置文件并确保其归apigee:apigee
所有。 - 创建密码的 SHA256 哈希值:
echo -n '
' | openssl dgst -sha256 - 使用 JMX 用户凭据创建
jmxremote.password
文件:- 将以下文件从
$JAVA_HOME
目录复制到/opt/apigee/customer/application/<component>/
目录:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- 修改该文件,并使用以下语法添加您的 JMX 用户名和密码:
USERNAME <HASH-PASSWORD>
- 确保文件归
apigee
所有,并且文件模式为 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- 将以下文件从
- 创建具有 JMX 用户权限的
jmxremote.access
文件:- 将以下文件从 $JAVA_HOME 目录复制到
/opt/apigee/customer/application/<component>/
目录cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
- 修改该文件,并添加您的 JMX 用户名以及权限(READONLY/READWRITE)
USERNAME READONLY
- 请确保该文件归
apigee
所有,并且文件模式为 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- 将以下文件从 $JAVA_HOME 目录复制到
- 重启相应的 Edge 组件:
apigee-service edge-management-server restart
如需停用 JMX 身份验证,请移除 conf_system_jmxremote_authenticate
属性或将值更改为 false
,然后重启相应的 Edge 组件。
JMX 中的 SSL
要在 Edge-* 组件中启用基于 SSL 的 JMX,请执行以下操作:
- 修改相应的配置文件(请参阅
配置文件参考)。创建配置文件(如果不存在):
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>
保存配置文件并确保其归apigee:apigee
所有。 - 准备包含服务器密钥的密钥库,并将其放置在上述配置
conf_system_javax_net_ssl_keystore
中提供的路径中。确保apigee:apigee
可读取密钥库文件。 - 重启相应的 Edge 组件:
apigee-service edge-management-server restart
如需停用基于 SSL 的 JMX,请移除属性 conf_system_jmxremote_ssl
或将值更改为 false
。重启相应的 Edge 组件。
通过 Jconsole 进行监控
通过 jconsole 进行监控的说明与 https://docs.apigee.com/private-cloud/v4.52.01/how-monitor#jconsole 中所述的相同。
您可以添加一行内容,内容为“如果为 JMX 启用了 SSL,则需要使用信任库和信任库密码启动 jconsole。” 参考:https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html使用 JConsole 进行监控
使用 JConsole(一个符合 JMX 标准的工具)管理和监控健康检查和进程统计信息。 借助 JConsole,您可以使用服务器公开的 JMX 统计信息,并将其显示在图形界面中。如需了解详情,请参阅使用 JConsole。
如果为 JMX 启用了 SSL,您需要使用信任库和信任库密码启动 JConsole。 请参阅 使用 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 |
|
用法 |
|
配置文件参考文档
以下部分介绍了您可能需要对 Edge 组件配置文件进行的 JMX 相关配置更改。如需了解详情,请参阅监控端口和配置文件。
JMX 配置添加到相应组件的配置文件中
- 在 edge-component 上启用 JMX 代理。默认值为 false。
conf_system_jmxremote_enable=true
基于密码的身份验证的配置
- 启用基于密码的身份验证。默认值为 false。
conf_system_jmxremote_authenticate=true
- 访问文件的路径。应仅由 Apigee 用户拥有和读取。
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- 密码文件的路径。只能由 Apigee 用户拥有和读取。
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- 允许以加密格式存储密码。默认值为 false。
conf_system_jmxremote_encrypted_auth=true
基于 SSL 的 JMX 的配置
- 为 JMX 通信启用 SSL。默认值为 false。
conf_system_jmxremote_ssl=true
- 密钥库的路径。只能由 Apigee 用户拥有和读取。
conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
- 密钥库密码:
conf_system_javax_net_ssl_keystorepassword=changeme
可选的 JMX 配置
所列值为默认值,可以更改。
- JMX 端口。下表列出了默认值。
conf_system_jmxremote_port=
- JMX RMI 端口。默认情况下,Java 进程将选择一个随机端口。
conf_system_jmxremote_rmi_port=
- 远程桩的主机名。localhost 的默认 IP 地址。
conf_system_java_rmi_server_hostname=
- 使用 SSL 保护 JMX 注册表。默认值为 false。仅在启用 SSL 时适用。
conf_system_jmxremote_registry_ssl=false
使用 Management API 进行监控
Edge 包含多个 API,您可以使用这些 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”。
以下示例会获取 localhost(端口 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
命令检查状态
登录运行服务的服务器后,您可以使用 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,因此无需密码即可远程通过 JMX 访问 Cassandra。
为 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}/customer/application/apigee-cassandra/jmxremote.password conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/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/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
- 修改
jmxremote.password
文件,并使用以下语法添加您的 JMX 用户名和密码:JMX_USERNAME JMX_PASSWORD
其中 JMX_USERNAME 和 JMX_PASSWORD 是您之前设置的 JMX 用户名和密码。
- 确保文件归“apigee”所有,并且文件模式为 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
- 将以下文件从
- 复制并修改
jmxremote.access
文件:- 将以下文件从
$JAVA_HOME
目录复制到/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
- 修改
jmxremote.access
文件并添加以下角色:JMX_USERNAME readwrite
- 确保文件归“apigee”所有,并且文件模式为 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/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
文件。 - 创建和修改
cassandra.properties
文件:- 修改
/opt/apigee/customer/application/cassandra.properties
文件。如果该文件不存在,请创建一个。 - 将以下内容添加到文件中:
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- 保存 cassandra.properties 文件。
- 将文件的所有者更改为 apigee:apigee,如以下示例所示:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 修改
- 在命令行中,输入
echo -n 'Secret' | openssl dgst -sha1
以生成所需密码的 SHA1 哈希 - 在
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(在上一部分中创建)中为用户名设置密码。 - 在 Cassandra 上运行 configure:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 对所有其他 Cassandra 节点重复此过程。
为 Cassandra 启用带 SSL 的 JMX
启用带 SSL 的 JMX 可为与 Cassandra 基于 JMX 的通信提供额外的安全性和加密功能。如需启用带 SSL 的 JMX,您需要向 Cassandra 提供密钥和证书,以便接受基于 SSL 的 JMX 连接。您还需要为 nodetool(以及通过 JMX 与 Cassandra 通信的任何其他工具)配置 SSL。
启用 SSL 的 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/customer/application/apigee-cassandra/
中。 - 确保只有 Apigee 用户才能读取密钥库文件(通过输入
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
)chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- 请按以下步骤为 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 conf_cassandra_env_javax.net.ssl.keyStore=/opt/apigee/customer/application/apigee-cassandra/keystore.node1 conf_cassandra_env_javax.net.ssl.keyStorePassword=keystore-password ## On FIPS enabled systems, when you are using non standard keystore, set the following: ## These can be skipped otherwise ## Possible values are JKS, PKCS12, BCFKS conf_cassandra_env_javax.net.ssl.keyStoreType=PKCS12 conf_cassandra_env_javax.net.ssl.keyStoreAlias=cassjmx-tls-alias
- 将文件的所有者更改为 apigee:apigee,如以下示例所示:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 在 Cassandra 上运行 configure:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 对所有其他 Cassandra 节点重复此过程。
- 输入
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=
-Djavax.net.ssl.trustStorePassword= -Dcom.sun.management.jmxremote.registry.ssl=true ## If you are using a non standard truststore, set below, otherwise skip ## Possible values are JKS, PKCS12, BCFKS -Djavax.net.ssl.trustStoreType=PKCS12 确保 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=
export CASS_JMX_TRUSTSTORE_PASSWORD= # If you are using a non standard truststore type, export truststore type as well # Possible values are JKS, PKCS12, BCFKS export CASS_JMX_TRUSTSTORE_TYPE=PKCS12 运行以下
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=
CASS_JMX_TRUSTSTORE_PASSWORD= CASS_JMX_TRUSTSTORE_TYPE=PKCS12 /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=
-Djavax.net.ssl.trustStorePassword= -Dcom.sun.management.jmxremote.registry.ssl=true ## If you are using a non standard truststore, set below, otherwise skip ## Possible values are JKS, PKCS12, BCFKS -Djavax.net.ssl.trustStoreType=PKCS12 上述信任库路径应可供运行 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=
-Djavax.net.ssl.trustStorePassword= -Dcom.sun.management.jmxremote.registry.ssl=true -Djavax.net.ssl.trustStoreType=PKCS12 -Dssl.enable=true -u -pw -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 ColumnFamily/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
- 旧货服务器的状态(服务客户端 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 Qpid Broker-J
您可以通过 Qpid 管理控制台监控 Qpid Broker-J。本部分介绍了如何访问该控制台并使用该控制台执行基本监控功能。如需详细了解如何使用管理控制台,请参阅 Apache Qpid 文档中的 网站管理控制台。
访问管理控制台
默认的管理控制台端口为 8090。如需通过此默认端口访问控制台,请将网络浏览器指向以下网址:
http://QPID_NODE_IP:8090
如需登录控制台,请使用 Apigee 设置的默认凭据或在 Edge 配置文件中设置的凭据。如需了解详情,请参阅 Edge 配置文件参考文档。
监控队列和消息
在左侧导航面板中,依次选择 Java-Broker > virtualhosts > queues。选择队列,即可在界面的主要部分查看其详细信息。在详细信息视图中,您可以查看队列属性和统计信息,包括有关已传送消息、已加入队列、消息速率等的信息。
查看和下载日志文件
在左侧导航面板中,依次选择 Java-Broker > brokerloggers > logfile。在主要界面详情视图中,您可以查看日志文件详情和下载日志文件。
使用 Qpid 管理 API
您可以使用 Apache Qpid Broker-J REST API 自动执行管理任务并监控代理。 如需了解详情,请参阅 Apache Qpid Broker REST API 文档。
您还可以使用命令行工具监控代理。例如:
curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"
为 Qpid 启用 SSL 监控
要为监控和管理提供额外的安全保护,请在 Qpid 的管理门户和 Qpid 的 Management API 上启用 SSL。请按照以下准则提供密钥和证书。
Qpid 提供了一个文件密钥库选项,可在 Apigee 中启用。此类型接受 Java 和 Java 工具(例如 keytool)理解的标准 JKS 密钥库格式。
密钥库准备
除了使用 keytool 之外,您还需要直接提供证书文件以供 Qpidd 客户端使用。
如需生成密钥库,请参阅 Java Keytool 文档。
验证要求后
- 将密钥库和证书文件放在
/opt/apigee/customer/application/apigee-qpidd
中。 - 确保只有 Apigee 用户可以读取密钥库文件:
chown apigee:apigee /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore chmod 400 /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore chown apigee:apigee /opt/apigee/customer/application/apigee-qpidd/qpidd-cert.pem chmod 400 /opt/apigee/customer/application/apigee-qpidd/qpidd-cert.pem
在 Qpid 中启用 SSL
请一次在一个 Qpid 节点上执行以下步骤:
打开 /opt/apigee/customer/application/qpidd.properties
文件,然后添加以下几行代码:
conf_qpidd_qpid_management.https.enabled=true conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/qpidd.keystore conf_qpidd_qpid.keystore.password=keystore-password conf_qpidd_qpid.keystore.certificateAlias=certificate-alias conf_qpidd_qpid.keystore.certificate=/opt/apigee/customer/application/apigee-qpidd/qpidd-cert.pem
- 将文件的所有者更改为 apigee:apigee:
chown apigee:apigee /opt/apigee/customer/application/qpidd.properties
- 配置 Qpidd:
apigee-service apigee-qpidd configure
- 重启 Qpidd:
apigee-service apigee-qpidd restart
- 使用 wait_for_ready 检查状态:
apigee-service apigee-qpidd wait_for_ready
还原 SSL 配置
从文件 /opt/apigee/customer/application/qpidd.properties
中移除或注释掉属性:
conf_qpidd_qpid_management.https.enabled=true conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/keystore
- 配置 Qpidd:
apigee-service apigee-qpidd configure
- 重启 Qpidd:
apigee-service apigee-qpidd restart
- 使用 wait_for_ready 检查状态:
apigee-service apigee-qpidd wait_for_ready
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
) 以获取有关缓存的信息。