文章
· 二月 9, 2023 阅读大约需 5 分钟

第七十一章 使用 REST API 监控 IRIS - 活动量指标

第七十一章 使用 REST API 监控 IRIS - 活动量指标

活动量指标

  • iris_interop_avg_processing_time {id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"} - 在生产和命名空间中处理指定 MessageType 的消息所需的平均时间长度(以秒为单位)。 HostType 可以是服务、操作或参与者(即进程)。 MessageType 是用户定义的;如果未指定 MessageType,则返回“-”。如果输出已配置为包括主机标签,则单独提供每个主机的消息处理时间。
  • iris_interop_avg_queueing_time {id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"} - 指定 MessageType 的消息在生产和命名空间中由 HostType 的主机处理时在队列中花费的平均持续时间(以秒为单位)。 HostType 可以是服务、操作或参与者(即进程)。 MessageType 是用户定义的;如果未指定 MessageType,则返回“-”。如果输出已配置为包括主机标签,则单独提供每个主机的排队时间。
  • iris_interop_sample_count {id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"} - 在最近的采样间隔内,生产和命名空间中的主机类型主机处理的指定 MessageType 的消息数。 HostType 可以是服务、操作或参与者(即进程)。 MessageType 是用户定义的;如果未指定 MessageType,则返回“-”。如果输出已配置为包括主机标签,则单独提供每个主机处理的消息数。
  • iris_interop_sample_count_per_sec {id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"} - 生产和命名空间中的主机每秒处理的指定 MessageType 的消息数,在最近的采样间隔内取平均值。 HostType 可以是服务、操作或参与者(即进程)。 MessageType 是用户定义的;如果未指定 MessageType,则返回“-”。如果输出已配置为包括主机标签,则单独提供每个主机处理的消息数。

HTTP 指标

  • iris_interop_avg_http_received_chars {id="namespace",host="host",production="production"} - 在最近的采样间隔内,生产和命名空间中每个 HTTPSOAP 响应接收到的平均字符数。如果输出已配置为包括主机标签,则单独提供每个主机接收的平均字符数。
  • iris_interop_avg_http_sent_chars {id="namespace",host="host",production="production"} - 在最近的采样间隔内,生产和命名空间中每个 HTTPSOAP 请求发送的平均字符数。如果输出已配置为包括主机标签,则单独提供每个主机发送的平均字符数。
  • iris_interop_avg_http_ttfc {id="namespace",host="host",production="production"} - Time to First Character (TTFC):从 HTTPSOAP 请求开始到相应响应的第一个字符之间的平均时间长度,以秒为单位。如果输出已配置为包括主机标签,则单独提供每个主机的 TTFC
  • iris_interop_avg_http_ttlc {id="namespace",host="host",production="production"} - 最后一个字符的时间 (TTLC):从 HTTPSOAP 请求开始到相应响应的最后一个字符之间的平均时间长度。如果输出已配置为包括主机标签,则单独提供每个主机的 TTLC
  • iris_interop_http_sample_count {id="namespace",host="host",production="production"} - 在最近的采样间隔内在生产和名称空间内发送的 HTTPSOAP 传输数。如果输出已配置为包括主机标签,则单独提供每个主机发送的传输数。
  • iris_interop_http_sample_count_per_sec {id="namespace",host="host",production="production"} - 生产和命名空间中每秒发送的 HTTPSOAP 传输数,在最近的采样间隔内取平均值。如果输出已配置为包括主机标签,则单独提供每台主机每秒发送的传输数。

创建应用程序指标

将自定义应用程序指标添加到 /metrics 端点返回的指标:

  1. 创建一个继承自 %SYS.Monitor.SAM.Abstract 的新类。
  2. PRODUCT 参数定义为应用程序的名称。这可以是除 iris 之外的任何值,它是为 IRIS 指标保留的。
  3. 实现 GetSensors() 方法来定义所需的自定义指标,如下所示:
  • 该方法必须包含一个或多个对 SetSensor() 方法的调用。此方法设置应用程序指标的名称和值。这些值应该是整数或浮点数,以确保与 PrometheusSAM 兼容。

可以选择为指标定义标签,但如果这样做,则必须始终为该特定指标定义标签。

注意:有关选择指标和标签名称的最佳实践,请参阅 Prometheus 文档中的指标和标签命名(https://prometheus.io/docs/practices/naming/)。

  • 如果成功,该方法必须返回 $$$OK

重要提示:缓慢执行 GetSensors() 会对系统性能产生负面影响。请务必测试 GetSensors() 实现是否有效,并避免可能超时或挂起的实现。

  1. 编译类。一个例子如下所示:
/// Example of a custom class for the /metric API
Class MyMetrics.Example Extends %SYS.Monitor.SAM.Abstract
{

Parameter PRODUCT = "myapp";

/// Collect metrics from the specified sensors
Method GetSensors() As %Status
{
   do ..SetSensor("my_counter",$increment(^MyCounter),"my_label")
   do ..SetSensor("my_gauge",$random(100))
   return $$$OK
}

}
  1. 使用 SYS.Monitor.SAM.Config classAddApplicationClass()方法将自定义类添加到 /metrics 配置。将类的名称和它所在的名称空间作为参数传递。

例如,在终端中从 %SYS 命名空间输入以下内容:


%SYS>set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("MyMetrics.Example", "USER") %SYS>w status status=1
  1. 确保 /api/monitor Web 应用程序具有访问自定义指标所需的应用程序角色。有关如何编辑应用程序角色的详细信息,请参阅编辑应用程序:应用程序角色选项卡。

此步骤授予 /api/monitor 对自定义指标所需数据的访问权限。例如,如果自定义指标类位于 USER 数据库中(受 %DB_USER 资源保护),则授予 /api/monitor %DB_USER 角色

  1. 通过将浏览器指向 http://<instance-host>:52773/api/monitor/metrics(其中 52773 是默认的 WebServer 端口)来查看 /metrics 端点的输出。您定义的指标应出现在 IRIS 指标之后,例如:
[...]
myapp_my_counter{id="my_label") 1
myapp_my_gauge 92

/metrics 端点现在返回定义的自定义指标。 IRIS 指标包含一个“iris_”前缀,而自定义指标使用 PRODUCT 的值作为前缀。

/alerts Endpoint

/alerts 端点从 alerts.log 文件中获取最新的警报并以 JSON 格式返回它们,例如:


{"time":"2019-08-15T10:36:38.313Z","severity":2,\ "message":"Failed to allocate 1150MB shared memory using large pages. Switching to small pages."}

调用 /alerts 时,它会返回自上次调用 /alerts 以来生成的警报。 iris_system_alerts_new 指标是一个布尔值,指示是否已生成新警报。

讨论 (0)1
登录或注册以继续