本文档介绍了本地部署所支持的组件的监控技术, 部署适用于私有云的 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
文件: <ph type="x-smartling-placeholder">- </ph>
- 将
$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
文件: <ph type="x-smartling-placeholder">- </ph>
- 将以下文件从 $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:
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 代理。默认值为 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。
执行服务检查
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(对于邮件) 处理器。
此调用要求您使用系统管理用户名和 密码。
服务器应该返回“已部署”状态。如果这些方法失败,请执行以下操作:
- 检查服务器日志中是否存在任何错误。日志位于:
<ph type="x-smartling-placeholder">
- </ph>
- 管理服务器:
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 上查看组织和环境
您可以检查在 Postgres Server 上进行初始配置的组织和环境名称
方法是发出以下 curl
命令:
curl -v http://postgres_IP:8084/v1/servers/self/organizations
系统应显示组织和环境名称。
验证分析状态
您可以通过发出以下命令来验证 Postgres 和 Qpid 分析服务器的状态
curl
命令:
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
每千次展示收入。
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
文件: <ph type="x-smartling-placeholder">- </ph>
- 修改
/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
: <ph type="x-smartling-placeholder">- </ph>
- 如果文件不存在,请在以下位置创建一个:
/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
文件: <ph type="x-smartling-placeholder">- </ph>
- 将以下文件从
$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
文件: <ph type="x-smartling-placeholder">- </ph>
- 将以下文件从
$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
文件: <ph type="x-smartling-placeholder">- </ph>
- 修改
/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
- 修改
- 在命令行上,输入所需密码的 SHA1 哈希值
echo -n 'Secret' | openssl dgst -sha1
- 针对 中的用户名设置密码
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(创建于 )。 - 在 Cassandra 上运行配置:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 在所有其他 Cassandra 节点上重复此过程。
为 Cassandra 启用 JMX with SSL
启用带 SSL 的 JMX 可为与 JMX 之间的通信提供额外的安全和加密, Cassandra。要启用带 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-service) 命令或 nodetool)进行连接。
验证上述要求后:
- 将密钥库文件放在
/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
- 按照以下步骤使用 SSL 为 JMX 配置 Cassandra:
<ph type="x-smartling-placeholder">
- </ph>
- 停止 Cassandra 节点,方法是输入
apigee-service apigee-cassandra stop
- 在 Cassandra 中启用 SSL 方法
打开文件“
/opt/apigee/customer/application/cassandra.properties
” 并添加以下几行代码: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
- 将文件的所有者更改为 apigee:apigee,如以下示例所示:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 在 Cassandra 上运行配置:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 在所有其他 Cassandra 节点上重复此过程。
- 输入以下命令来启动 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 身份验证配置
apigee-service
和 SSL。请根据易用性和安全做法选择相应选项。选项 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 的用户应对信任库文件具有 READ 权限。 根据易用性和安全做法选择合适的选项。
如需详细了解 nodetool 参数,请参阅 <ph type="x-smartling-placeholder"></ph> 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-cassandra
apigee-service apigee-cassandra stop
- 从以下位置移除第
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
行: 文件/opt/apigee/customer/application/cassandra.properties
。 - 注释掉
/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 上运行配置:
/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:
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 节点):查找
“向上”和“Normal”(正常)所有节点
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。本部分将介绍 如何访问控制台并使用它执行基本的监控功能。如需详细了解 有关如何使用管理控制台的信息,请参阅 Web 管理控制台。
访问管理控制台
默认管理控制台端口为 8090。要通过此默认端口访问控制台,请执行以下操作: 将您的网络浏览器指向:
http://QPID_NODE_IP:8090
如需登录控制台,请使用 Apigee 设置的默认凭据或在 Edge 配置文件。有关详情,请参阅 Edge 配置文件参考文档。
监控队列和消息
在左侧导航面板中,导航到 Java-Broker >虚拟主机 >队列。选择 队列,以在界面的主要部分中查看其详细信息。在详细信息视图中,您可以看到 队列属性和统计信息,包括已传送的消息、已加入队列的消息、消息速率等信息。
查看和下载日志文件
在左侧导航面板中,导航到 Java-Broker >经纪人 >日志文件。在 在主界面详细信息视图中,您可以查看日志文件详情以及下载日志文件。
使用 Qpid Management 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 端口,确保您可以与端口 2181 和端口 2181 建立 TCP 连接 3888。
- 确保您可以从 ZooKeeper 数据库中读取值。使用 ZooKeeper 连接
客户端库(或
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
)并读取值 从数据库中提取数据 - 查看状态:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
使用由四个字母组成的 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
) 以获取有关缓存的信息。