如何监控

适用于私有云的 Edge v4.18.01

本文档介绍了本地部署所支持的组件的监控技术, Apigee Edge 的部署指南

启用 JMX

对于 Cassandra 默认启用 JMX,对于所有其他 Edge 则默认停用 JMX 组件。因此,您必须分别为每个组件启用 JMX。

每个组件支持不同端口上的 JMX。下表列出了 JMX 端口和 为在该端口启用 JMX 而修改的文件:

组件 JMX 端口 文件
管理服务器 1099 /opt/apigee/edge-management-server/bin/start
路由器 1100 /opt/apigee/edge-router/bin/start
消息处理器 1101 /opt/apigee/edge-message-processor/bin/start
Qpid 1102 /opt/apigee/edge-qpid-server/bin/start
Postgres 1103 /opt/apigee/edge-postgres-server/bin/start

例如,要在管理服务器上启用 JMX,请打开 在编辑器中 /opt/apigee/edge-management-server/bin/start 。您应该会看到以下代码行 启动管理服务器:

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 $* $debug_options com.apigee.kernel.MicroKernel

修改此行以添加以下内容:

-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 

请注意,该行将管理服务器的 JMX 端口号指定为 1099。将 每个组件的端口号(如上表定义)。例如:

exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts 
-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 
-Djava.security.auth.login.config=$conf_path/jaas.config 
-Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel

保存文件,然后重新启动该组件。例如,重启 服务器:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

启用 JMX 身份验证和 设置 JMX 密码

对管理服务器、消息处理器、Qpid 和 Postgres 的监控过程 使用 JMX。JMX 默认处于启用状态,远程 JMX 访问不需要密码。

要启用 JMX 身份验证,每个组件都有一个 change_jmx_auth 操作,供您用于 启用/停用身份验证和设置 JMX 凭据。

要启用 JMX 身份验证,请使用以下命令:

>  /opt/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile

其中:

  • compedge-management-server、Edge-message-processor、 Edge-qpid-server, edge-postgres-server.
  • 具体选项包括: <ph type="x-smartling-placeholder">
      </ph>
    • -u:用户名
    • -p:密码
    • -e:y(启用)或 n (可编辑)
  • 配置文件包括: <ph type="x-smartling-placeholder">
      </ph>
    • JMX_USERNAME=用户名
    • JMX_ENABLED=y/n
    • JMX_PASSWORD=password (如果未设置或未使用 -p 传入,系统会提示您)

例如,如需在命令行中使用选项,请执行以下命令:

> /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 configFile

如果您在多个节点上运行 Edge,请在所有节点上运行此命令,并指定相同的 用户名和密码。

如果以后要停用 JMX 身份验证,请使用以下命令:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n

管理服务器

使用 用于监控系统健康检查和处理信息的 JConsole

使用 JConsole(一种兼容 JMX 的工具)来管理和监控健康检查和处理统计信息。 通过使用 JConsole,您可以使用管理服务器(或任何服务器)公开的 JMX 统计信息,并且 在图形界面中显示它们。如需详细了解 JConsole 的用法,请参阅 http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html

使用 JConsole 和以下服务网址监控 JMX 属性 (MBean) 通过 JMX 提供。

service:jmx:rmi:///jndi/rmi://<ip address>:<port>/jmxrmi

其中,<ip address> 是管理服务器的 IP 地址(或者 相应的服务器)。默认情况下,管理服务器的端口为 1099。

下表显示了常规 JMX 统计信息:

JMX MBean

JMX 属性

内存

HeapMemoryUsage

NonHeapMemoryUsage

用法

注意:属性值将以四个值显示:submitted、 init、max 和 used。

使用 Edge Application API 检查

可通过调用以下代码,对管理服务器(或任何服务器)执行 API 检查 C网址 命令:

curl http://<host>:8080/v1/servers/self/up -H "Accept: application/json"

其中,&lt;host&gt; 是管理服务器的 IP 地址。 您可以将 Accept 类型指定为 application/jsonapplication/xml

此调用会返回“true”和“false”。如果为 true,则表示节点已启动,Java 服务已启动 。

如果未收到 HTTP 200 (OK) 响应,则 Edge 无法响应端口 8080 请求。

问题排查

  1. 登录服务器并运行以下命令:
    /opt/apigee/apigee-service/bin/apigee-service 边缘管理服务器状态
  2. 如果服务未运行,请启动服务:
    /opt/apigee/apigee-service/bin/apigee-service 边缘管理服务器启动

使用 Edge 应用 - 用户、组织和部署检查

管理服务器发挥着至关重要的作用,能够将各个本地的所有其他包裹汇集在一起 安装。您可以在管理服务器上查看用户、组织和部署状态 方法是发出以下命令:

curl -u userEmail:password http://localhost:8080/v1/users
curl -u userEmail:password http://localhost:8080/v1/organizations
curl -u userEmail:password http://localhost:8080/v1/organizations/orgname/deployments

系统应显示“已部署”状态。如果这些方法都失败,请 以下:

  1. 检查管理服务器日志(位于 opt/apigee/var/log/edge-management-server) 检查是否存在任何错误
  2. 对管理服务器进行调用以检查其是否正常运行 正确。
  3. 从 ELB 中移除服务器,然后重启管理服务器。
    /opt/apigee/apigee-service/bin/apigee-service 边缘管理服务器重启

路由器

您可以通过调用以下 C网址 对路由器(或任何服务器)执行 API 检查 命令:

curl http://<host>:8081/v1/servers/self/up

其中,host 是路由器的 IP 地址。

此调用会返回“true”和“false”。如果为 true,则表示该节点已启动且路由器 服务正在运行。

如果未收到 HTTP 200 (OK) 响应,则 Edge 无法响应端口 8081 请求。

问题排查

  1. 登录服务器并运行以下命令:
    /&lt;inst_root&gt;/apigee/apigee-service/bin/apigee-service 边缘路由器状态
  2. 如果服务未运行,请启动服务
    /&lt;inst_root&gt;/apigee/apigee-service/bin/apigee-service 边缘路由器启动
  3. 重启后,请检查它能否正常运行
    curl -v http://localhost:port/v1/servers/self/up

    其中,路由器的 port 为 8081,消息处理器的端口为 8082。

使用 用于监控系统健康检查和处理信息的 JConsole

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用 1100 端口。

消息处理器

使用 用于监控系统健康检查和处理信息的 JConsole

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用端口 - 1101。

使用 Edge Application API 检查

对于路由器,请按照上述相同步骤操作。

注意:请务必使用 8082 端口。

使用 JMX 消息流检查

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用端口 - 1101。

Qpid 服务器

使用 JConsole 监控系统健康检查和处理信息

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用 1102 端口。

使用 Edge Application API 检查

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用 8083 端口。以下 C网址 命令是 Qpid Server:

curl http://<qpid_IP>:8083/v1/servers/self

Postgres 服务器

使用 用于监控系统健康检查和处理信息的 JConsole

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用端口 - 1103。

使用 Edge Application API 检查

对于管理服务器,请按照上述相同方法操作。

注意:请务必使用 8084 端口。以下 C网址 命令是 Postgres Server 支持:

curl http://<postgres_IP>:8084/v1/servers/self

使用 Edge 应用组织和环境检查

您可以检查在 Postgres Server 上进行初始配置的组织和环境名称 方法是发出以下 C网址 命令:

curl http:// <postgres_IP>:8084/v1/servers/self/organizations

注意:请务必使用 8084 端口。

系统应显示组织和环境名称。

使用 Edge 应用 axstatus 勾选

您可以通过发出以下 C网址 来验证分析服务器的状态 命令。

curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus

对于所有分析服务器,系统应显示 SUCCESS 状态。上述 C网址 的输出 如下所示:

{
  "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 数据库

使用 check_postgres.pl 脚本

要监控 PostgreSQL 数据库,您可以使用标准监控脚本 check_postgres.pl,可从以下网址获取: http://bucardo.org/wiki/Check_postgres.

注意:您需要在每个 Postgres 中安装脚本 check_postgres.pl 节点。

在运行脚本之前,请执行以下操作:

  1. 确保您已安装 perl-Time-HiRes.x86_64,这是一个 Perl 模块, 实现高分辨率闹钟、休眠、gettimeofday 和间隔计时器。例如,您 可以使用以下命令进行安装:
    yum 安装 perl-Time-HiRes.x86_64

使用脚本 check_postgres.pl 进行的 API 调用的默认输出与 Nagios 兼容。更新后 安装脚本后,进行以下检查:

  1. 数据库大小 - 检查数据库大小:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --active='900 GB'
  2. 到数据库的传入连接 - 检查到 的传入连接数 数据库,并与允许的最大连接数进行比较:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -操作后端
  3. 数据库可用性和性能 – 检查数据库是否正在运行 可用:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -操作连接
  4. 磁盘空间 - 检查磁盘空间:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -actiondisk_space --warning='80%' --referrer='90%'
  5. 初始配置的组织/环境 - 检查组织数量和 Postgres 节点中初始加入的环境:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) 的结果 来自 pg_tables,其中 schemaname='analytics'以及类似“%fact”的表名称--warning='80' --referrer='90'--valtype=integer

注意:请参阅 http://bucardo.org/check_postgres/check_postgres.pl.html ,如果您需要有关使用上述命令的任何帮助。

数据库检查

您可以验证是否在 PostgreSQL 数据库中创建了正确的表。登录 PostgreSQL 数据库:

psql -h /opt/apigee/var/run/apigee-postgresql/  -U apigee -d apigee

然后运行以下命令:

\d analytics."<org>.<env>.fact"

检查 postgres 的健康状况 进程

您可以通过调用以下 C网址 命令在 postgres 机器上执行 API 检查:

http://<postgres_IP>:8084/v1/servers/self/health/

注意:请务必使用端口 8084。

当 postgres 进程处于活动状态时,它会返回“ACTIVE”状态。如果 postgres 如果进程未启动并运行,则会返回“INACTIVE”状态。

Postgres 资源

Apache Cassandra

使用 JConsole - 监控任务 统计信息

使用 JConsole 和以下服务网址监控 JMX 属性 (MBean) 通过 JMX 提供。

service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi

其中 <ip address> 是 Cassandra 的 IP 服务器。

对 Cassandra 默认启用 JMX,对 Cassandra 的远程 JMX 访问不需要 密码。

要启用 JMX 身份验证以添加密码,请执行以下操作:

  1. 修改 /opt/apigee/customer/application/cassandra.properties。 如果该文件不存在,请创建该文件。
  2. 将以下内容添加到文件中:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. 保存文件。
  4. 将以下文件从 $JAVA_HOME 目录复制到 /opt/apigee/data/apigee-cassandra/:
    cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
  5. 修改 jmxremote.password 和 将用户名和密码添加到该文件中:
    Cassandra 密码

    其中,password 是 JMX 密码。
  6. 修改 ${JAVA_HOME}/lib/management/jmxremote.access 和 添加以下角色:
    Cassandra 读写
  7. 确保文件归“apigee”所有文件模式为 400:
    &gt;chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
    &gt;chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote。*
  8. 如果文件不存在,请在以下位置创建一个:
    /opt/apigee/customer/application/jmx_auth.sh
  9. 将以下代码行添加到您刚刚创建的 jmx_auth.sh 文件中:
    export CASS_JMX_USERNAME=JMX_USERNAME
    export CASS_JMX_PASSWORD=JMX_PASSWORD
  10. 执行以下命令:
    source /opt/apigee/customer/application/jmx_auth.sh
  11. 在以下设备上运行 configure Cassandra:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra 配置
  12. 重启 Cassandra:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra 重启
  13. 在所有其他 Cassandra 节点上重复此过程。

如需稍后停用身份验证,请执行以下操作:

  1. 修改 /opt/apigee/customer/application/cassandra.properties
  2. 移除文件中的以下行:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. 在 Cassandra 上运行配置:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra 配置
  4. 重启 Cassandra:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra 重启
  5. 在所有其他 Cassandra 节点上重复此过程。

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 下找到。

如需详细了解 nodetool 实用程序,请参阅 http://www.datastax.com/docs/1.0/references/nodetool

可以在所有 Cassandra 集群节点上进行以下调用:

  1. 常规环信息(也适用于单个 Cassandra 节点):查找 “向上”和“Normal”(正常)所有节点
    [host]# nodetool -u username -p password -h localhost 响铃

    上述命令的输出如下所示:
    地址 DC 机架状态状态负荷 令牌
    192.168.124.201 dc1 ra1 正常大小 1.67 MB 33.33%
    192.168.124.202 dc1 ra1 正常大小 1.68 MB 33.33% 56713727820156410577229101238628035242
    192.168.124.203 dc1 ra1 正常大小 1.67 MB 33.33% 113427455640312821154458202477256070484
  2. 关于节点的一般信息(每个节点的调用次数)
    nodetool -u username -p password -h 本地主机信息

    上述命令的输出如下所示:
    令牌 :0
    八卦消息: true
    加载大小:1.67 MB
    世代编号:1361968765
    正常运行时间(秒):78108
    堆内存 (MB):46,80 / 772,00
    数据中心:dc1
    机架:ra1
    异常:0
  3. 旧货服务器的状态(服务客户端 API)
    host]# nodetool -u username -p password -h 本地主机 statusthrift

    上述命令的输出将状态显示为“running”。
  4. 数据流操作的状态:观察 cassandra 的流量 节点
    nodetool -u username -p password -h localhost netstats 192.168.124.203

    上述命令的输出如下所示:
    模式:NORMAL
    没有流式传输到 /192.168.124.203
    的内容 没有来自 /192.168.124.203
    的流式传输内容 池名称处于活跃、待处理状态
    命令无 0 1688 年
    回复不适用 0 292277

Cassandra 监控(界面)

请访问 datastax opscenter 网址:http://www.datastax.com/products/opscenter

Cassandra 资源

请参阅以下网址:http://www.datastax.com/docs/1.0/operations/monitoring

Apache ZooKeeper

检查 ZooKeeper 状态

  1. 确保 ZooKeeper 进程正在运行。ZooKeeper 会写入一个 PID 文件到 opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
  2. 测试 ZooKeeper 端口,确保您可以与端口 2181 和端口 2181 建立 TCP 连接 3888。
  3. 确保您可以从 ZooKeeper 数据库中读取值。使用 ZooKeeper 连接 客户端库(或 /opt/apigee/apigee-zookeeper/bin/zkCli.sh) 并从数据库中读取值。
  4. 查看状态:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper 状态

使用 ZooKeeper Four Letter Words

可以通过发送到 使用 netcat (nc) 或 telnet 访问端口 2181。

如需详细了解 ZooKeeper 命令,请参阅:http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands

例如:

  • srvr:列出完整详细信息 。
  • stat:列出简要详情 服务器和连接的客户端

您可以发出以下命令到 ZooKeeper 端口:

  1. 运行由四个字母组成的 ruok 命令,测试服务器是否以无错误状态运行。答 成功响应会返回“imok”。
    echo ruok |nc <主机> 2181

    返回:
    Imok
  2. 运行由四个字母组成的命令 stat 列出服务器性能和已连接的客户端 统计信息。
    echo 统计信息 |nc <主机> 2181

    返回:
    Zookeeper 版本:3.4.5-1392090、 构建于 2012 年 9 月 30 日 17:52 (GMT)
    客户:
    /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)
    延迟时间(最小值/平均值/最大值):0/0/128
    接收时间:26144
    已发送:26160
    连接:4
    未完成:0
    Zxid:0x2000002c2
    模式:关注者
    节点数:283

    注意:有时,需要查看 ZooKeeper 是否处于 Mode:leader、 关注者或观察者。
  3. 如果 netcat (nc) 不可用,您可以使用 Python 作为替代方案。创建文件 名为 zookeeper.py 包含以下内容:
    导入时间、套接字,
    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)
    打印 c.recv(512)


    现在,运行以下 Python 代码行:
    python zookeeper.py 192.168.124.201 鲁克
    python zookeeper.py 192.168.124.201 stat

OpenLDAP

LDAP 级别测试

您可以监控 OpenLDAP,以查看特定请求是否得到正确处理。在 也就是检查特定搜索会返回正确结果。

  1. 使用 ldapsearchyum 安装 openldap-clients) 来查询系统管理员条目。此条目用于对所有 API 调用进行身份验证。
    ldapsearch -b &quot;uid=admin,ou=users,ou=global,dc=apigee,dc=com&quot;-x -W -D "cn=manager,dc=apigee,dc=com"- 小时 ldap://localhost:10389 -LLL

    然后,系统会提示您输入 LDAP 管理员密码:
    输入 LDAP 密码

    输入密码后,您会看到以下形式的回复:
    dn: uid=admin,ou=users,ou=global,dc=apigee,dc=com
    objectClass:organizationPerson
    objectClass:person
    objectClass:inetOrgPerson
    objectClass:top
    uid:admin
    cn:管理员
    sn:管理员
    用户密码:e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ=
    =
    邮寄地址:opdk@google.com
  2. 检查管理服务器是否仍连接到 LDAP 问题:
    curl -u <userEMail>:<密码>http://localhost:8080/v1/users/&lt;ADMIN&gt;

    返回:
    {
    &quot;emailId&quot;:<ADMIN>,
    “firstName”: "管理员",
    “lastName”:“管理员”
    }

您还可以监控 OpenLDAP 缓存,以帮助减少磁盘访问次数 从而提升系统性能。监控并调整 OpenLDAP 服务器会严重影响目录服务器的性能。您可以查看 文件 (opt/apigee/var/log) 复制到 获取有关缓存的信息。