\# 第六十九章 使用 REST API 监控 IRIS 每个 \`IRIS®\` 数据平台实例都包含一个提供实例统计信息的 \`REST\` 接口。 \`REST API\` 提供了一种从多台运行 \`IRIS\` 的机器收集信息的方法,使能够详细监控构成您的应用程序的所有实例。 本附录描述了 \`/api/monitor\` 服务提供的指标。这些指标与开源监控和警报工具 \`Prometheus\` 兼容。配置 \`Prometheus\` 以抓取多个连接的 \`IRIS\` 实例提供了整个系统的内聚视图,从而更容易评估系统是否正常有效地运行。 注意:有关创建和使用 REST 接口的介绍,请参阅第一眼:使用 产品开发 \`Rest\` 接口。 \# /api/monitor Service \`/api/monitor\` 服务提供有关运行它的  \`IRIS\` 实例的信息。默认情况下,\`/api/monitor Web\` 应用程序启用了“未经身份验证”的访问权限。有关为此服务设置身份验证的信息,请参阅创建 \`REST\` 服务中的保护 REST 服务一章。 此 API 具有以下两个端点: - \`/metrics Endpoint\`,,它返回所有实例指标,并且可以配置为返回特定的应用程序指标。 - \`/alerts Endpoint\`,它返回自上次抓取端点以来发布的所有系统警报。 注意: IRIS 将所有错误记录在位于 \`install-dir/mgr\` 目录中的 \`SystemMonitor.log\` 文件中。 \## \`/metrics Endpoint\` \`/metrics\` 端点返回一个指标列表,这些指标在指标描述中进行了描述。还可以启用有关活动互操作性产品的其他指标的收集,如互操作性指标中所述。创建应用程序指标包含有关如何定义自定义指标的说明。 要配置 \`Prometheus\` 以抓取  \`IRIS\` 实例,请按照使用 \`Prometheus\` 的第一步(\`https://prometheus.io/docs/introduction/first_steps/\`在新选项卡中打开)中的说明进行操作。 注意:此表包含此处记录的 \`IRIS\` 版本的指标。由于新版本中可能会添加指标,因此请确保该文档与  \`IRIS\` 版本相匹配。 - \`iris\_cpu\_pct {id="ProcessType"}\` - IRIS 进程类型的 \`CPU\` 使用百分比。 \`ProcessType\` 可以是以下任何一项:\`ECPWorker、ECPCliR、ECPCliW、ECPSrvR、ECPSrvW、LICENSESRV、WDAUX、WRTDMN、JRNDMN、GARCOL、CSPDMN、CSPSRV、ODBCSRC、MirrorMaster、MirrorPri、MirrorBack、MirrorPre、MirrorSvrR、MirrorJrnR、MirrorSK、MirrorComm\`。 - \`iris\_cpu\_usage\` - 操作系统上所有程序的 \`CPU\` 使用率百分比 - \`iris\_csp\_activity {id="IPaddress:port"}\` - \`Web\` 网关服务器自启动以来处理的 \`Web\` 请求数 - \`iris\_csp\_actual_connections {id="IPAddress:port"}\` - \`Web\` 网关服务器与该服务器的当前连接数 - \`iris\_csp\_gateway\_latency {id="IPaddress:port"}\` - 获取 \`iris\_csp_\` 指标时从 \`Web\` 网关服务器获得响应的时间,以毫秒为单位 - \`iris\_csp\_in\_use\_connections {id="IPaddress:port"}\` - 正在处理 \`Web\` 请求的 \`Web\` 网关服务器与此服务器的当前连接数 - \`iris\_csp\_private_connections {id="IPaddress:port"}\` - 为状态感知应用程序保留的 \`Web\` 网关服务器与此服务器的当前连接数(保留模式 \`1\`) - \`iris\_csp\_sessions\` - 此服务器上当前活动的 \`Web\` 会话 \`ID\` 数 - \`iris\_cache\_efficiency\` - 全局引用与物理读写的比率,以百分比表示 - \`iris\_db\_expansion\_size\_mb {id="database"}\` -扩展数据库的数量,以兆字节为单位 - \`iris\_db\_free_space {id="database"}\` - 数据库中可用的可用空间,以兆字节为单位(此指标每天仅更新一次,可能不会反映最近的更改。) - \`iris\_db\_latency {id="database"}\` - 完成从数据库随机读取的时间量,以毫秒为单位 - \`iris\_db\_max\_size\_mb {id="database"}\` - 数据库可以增长到的最大大小,以兆字节为单位 - \`iris\_db\_size_mb {id="database",dir="path"}\` - 数据库大小,以兆字节为单位 - \`iris\_directory\_space {id="database",dir="path"}\` - 数据库目录存储卷上的可用空间,以兆字节为单位 - \`iris\_disk\_percent_full {id="database",dir="path"}\` - 数据库目录存储卷上的空间百分比 - \`iris\_ecp\_conn\` - 此 \`ECP\` 应用程序服务器上的活动客户端连接总数 - \`iris\_ecp\_conn_max\` - 来自此 \`ECP\` 应用程序服务器的最大活动客户端连接数 - \`iris\_ecp\_connections\` - 此 \`ECP\` 应用程序服务器与其配置的 \`ECP\` 数据服务器同步时同步的服务器数 - \`iris\_ecp\_latency\` - \`ECP\` 应用服务器和 \`ECP\` 数据服务器之间的延迟,以毫秒为单位 - \`iris\_ecps\_conn\` - 每秒与此 \`ECP\` 数据服务器的活动客户端连接总数 - \`iris\_ecps\_conn_max\` - 与此 \`ECP\` 数据服务器的最大活动客户端连接数 - \`iris\_glo\_a\_seize\_per_sec\` - 每秒全局资源上的 \`Aseizes\` 数 - \`iris\_glo\_n\_seize\_per_sec\` - 每秒全局资源上的 \`Nseizes\` 数 - \`iris\_glo\_ref\_per\_sec\` - 每秒对位于本地数据库上的全局变量的引用数 - \`iris\_glo\_ref\_rem\_per_sec\` - 每秒对位于远程数据库上的全局变量的引用数 - \`iris\_glo\_seize\_per\_sec\` - 每秒占用全局资源的次数 - \`iris\_glo\_update\_per\_sec\` - 每秒对本地数据库上的全局变量进行更新(\`SET\` 和 \`KILL\` 命令)的次数 - \`iris\_glo\_update\_rem\_per_sec\` - 每秒对位于远程数据库上的全局变量的更新(\`SET\` 和 \`KILL\` 命令)数 - \`iris\_jrn\_block\_per\_sec\` - 每秒写入磁盘的日志块 - \`iris\_jrn\_free_space {id="JournalType",dir="path"}\` - 每个日志目录的存储卷上可用的可用空间,以兆字节为单位。 \`JournalType\` 可以是 \`WIJ\`、\`primary\` 或 \`secondary\` - \`iris\_jrn\_size {id="JournalType"}\` - 每个日志文件的当前大小,以兆字节为单位。 \`JournalType\` 可以是 \`WIJ\`、\`primary\` 或 \`secondary\` - \`iris\_license\_available\` - 当前未使用的许可证数量 - \`iris\_license\_consumed\` - 当前使用的许可证数量 - \`iris\_license\_percent_used\` - 当前使用的许可证的百分比 - \`iris\_log\_reads\_per\_sec\` - 每秒逻辑读取 - \`iris\_obj\_a\_seize\_per_sec\` - 每秒对象资源上的 \`Aseizes\` 数 - \`iris\_obj\_del\_per\_sec\` - 每秒删除的对象数 - \`iris\_obj\_hit\_per\_sec\` - 进程内存中每秒的对象引用数 - \`iris\_obj\_load\_per\_sec\` - 每秒从磁盘加载的对象数,不在共享内存中 - \`iris\_obj\_miss\_per\_sec\` - 每秒在内存中找不到的对象引用数 - \`iris\_obj\_new\_per\_sec\` - 每秒初始化的对象数 - \`iris\_obj\_seize\_per\_sec\` - 每秒占用对象资源的次数 - \`iris\_page\_space\_percent\_used\` - 已用最大分配页面文件空间的百分比 - \`iris\_phys\_mem\_percent\_used\` - 当前使用的物理内存 (\`RAM)\` 的百分比 - \`iris\_phys\_reads\_per\_sec\` - 每秒从磁盘读取的物理数据库块 - \`iris\_phys\_writes\_per\_sec\` - 每秒写入磁盘的物理数据库块 - \`iris\_process\_count\` - 活跃的 \`IRIS\` 进程总数 - \`iris\_rtn\_a\_seize\_per_sec\` - 每秒例程资源上的 \`Aseizes\` 数 - \`iris\_rtn\_call\_local\_per_sec\` - 每秒对位于远程数据库上的全局变量的本地例程调用数 - \`iris\_rtn\_call\_miss\_per_sec\` - 每秒在内存中找不到的例程调用数 - \`iris\_rtn\_call\_remote\_per_sec\` - 每秒远程例程调用次数 - \`iris\_rtn\_load\_per\_sec\` - 每秒从本地加载或保存到磁盘的例程数 - \`iris\_rtn\_load\_rem\_per_sec\` - 每秒从磁盘远程加载或保存到磁盘的例程数 - \`iris\_rtn\_seize\_per\_sec\` - 每秒占用例程资源的次数 - \`iris\_sam\_get\_db\_sensors\_seconds\` - 收集 \`iris\_db*\` 传感器所花费的时间,以秒为单位 - \`iris\_sam\_get\_jrn\_sensors\_seconds\` - 收集 \`iris\_jrn*\` 传感器所花费的时间,以秒为单位 - \`iris\_sam\_get\_sql\_sensors\_seconds\` - 收集 \`iris\_sql*\` 传感器所花费的时间,以秒为单位 - \`iris\_sam\_get\_wqm\_sensors\_seconds\` - 收集 \`iris\_wqm*\` 传感器所花费的时间,以秒为单位 - \`iris\_smh\_available {id="purpose"}\` - 按目的可用的共享内存,以千字节为单位 - \`iris\_smh\_percent_full {id="purpose"}\` - 按目的使用的已分配共享内存的百分比  - \`iris\_smh\_total\` - 为当前实例分配的共享内存,以千字节为单位 - \`iris\_smh\_total\_percent\_full\` - 当前实例使用的已分配共享内存的百分比 - \`iris\_smh\_used {id="purpose"}\` - 按目的使用的共享内存,以千字节为单位 - \`iris\_sql\_active_queries {id="namespace"}\` - 当前执行的 \`SQL\` 语句数 - \`iris\_sql\_active\_queries\_95_percentile {id="namespace"}\` - 对于当前的活动 SQL 语句集,自语句开始执行以来经过的第 \`95\` 个百分位数的时间 - \`iris\_sql\_active\_queries\_99_percentile {id="namespace"}\` - 对于当前活动的 SQL 语句集,自语句开始执行以来经过的第 \`99\` 个百分位数的时间 - \`iris\_sql\_queries\_avg\_runtime {id="namespace"}\` - 平均 \`SQL\` 语句运行时间,以秒为单位 - \`iris\_sql\_queries\_avg\_runtime\_std\_dev {id="namespace"}\` - 平均 SQL 语句运行时间的标准偏差 - \`iris\_sql\_queries\_per\_second {id="namespace"}\` - 每秒平均 \`SQL\` 语句数 - \`iris\_system\_alerts\` - 自系统启动以来发布到消息日志的警报数 - \`iris\_system\_alerts_log\` - 当前位于警报日志中的警报数 - \`iris\_system\_alerts_new\` - \`/api/monitor/alerts\` 端点上是否有新警报,作为布尔值 - \`iris\_system\_state\` - 表示系统监视器健康状态的数字 - \`iris\_trans\_open_count\` - 当前实例上打开的事务数 - \`iris\_trans\_open_secs\` - 当前实例上打开事务的平均持续时间,以秒为单位 - \`iris\_trans\_open\_secs\_max\` - 当前实例上当前打开的最长事务的 - \`iris\_wd\_buffer_redirty\` - 写入守护进程在最近一个周期中写入并且也在前一个周期中写入的数据库缓冲区数 - \`iris\_wd\_buffer_write\` - 写入守护进程在其最近周期写入的数据库缓冲区数 - \`iris\_wd\_cycle_time\` - 完成最近的写入守护进程周期所花费的时间量,以毫秒为单位 - \`iris\_wd\_proc\_in\_global\` - 在最近的写入守护进程周期开始时主动持有全局缓冲区的进程数 - \`iris\_wd\_size_write\` - 写入守护程序在其最近周期写入的数据库缓冲区的大小,以千字节为单位 - \`iris\_wd\_sleep\` - 写入守护进程在其最近的周期开始之前处于非活动状态的时间量,以毫秒为单位 - \`iris\_wd\_temp_queue\` - 写入守护进程在其最近周期开始时使用的内存缓冲区数 - \`iris\_wd\_temp_write\` - 写入守护进程在其最近周期中写入的内存缓冲区数 - \`iris\_wdwij\_time\` - 写入守护进程在其最近的周期内写入 WIJ 文件所花费的时间,以毫秒为单位 - \`iris\_wd\_write_time\` - 写守护进程在其最近的周期内将缓冲区写入数据库所花费的时间,以毫秒为单位 - \`iris\_wij\_writes\_per\_sec\` - \`WIJ\` 每秒物理块写入 - \`iris\_wqm\_active\_worker\_jobs {id="category"}\` - 未被阻塞的运行逻辑的平均工作者作业数 - \`iris\_wqm\_commands\_per\_sec {id="category"}\` - 平均每秒在此工作队列管理类别中执行的命令数 - \`iris\_wqm\_globals\_per\_sec {id="category"}\` - 平均每秒在此工作队列管理类别中运行的全局引用数 - \`iris\_wqm\_max\_active\_worker_jobs {id="category"}\` - 自上次记录日志条目以来的最大活动工作人员数 - \`iris\_wqm\_max\_work\_queue_depth {id="category"}\` - 自上次记录以来此工作队列管理类别队列中的最大条目数 - \`iris\_wqm\_waiting\_worker\_jobs {id="category"}\` - 等待一个组连接并为其工作的空闲工人作业的平均数量