第七十一章 使用 REST API 监控 IRIS - 活动量指
2023-02-09 本文已影响0人
Cache技术分享
第七十一章 使用 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"}
- 在最近的采样间隔内,生产和命名空间中每个HTTP
或SOAP
响应接收到的平均字符数。如果输出已配置为包括主机标签,则单独提供每个主机接收的平均字符数。 -
iris_interop_avg_http_sent_chars {id="namespace",host="host",production="production"}
- 在最近的采样间隔内,生产和命名空间中每个HTTP
或SOAP
请求发送的平均字符数。如果输出已配置为包括主机标签,则单独提供每个主机发送的平均字符数。 -
iris_interop_avg_http_ttfc {id="namespace",host="host",production="production"}
-Time to First Character (TTFC)
:从HTTP
或SOAP
请求开始到相应响应的第一个字符之间的平均时间长度,以秒为单位。如果输出已配置为包括主机标签,则单独提供每个主机的TTFC
-
iris_interop_avg_http_ttlc {id="namespace",host="host",production="production"}
- 最后一个字符的时间 (TTLC
):从HTTP
或SOAP
请求开始到相应响应的最后一个字符之间的平均时间长度。如果输出已配置为包括主机标签,则单独提供每个主机的TTLC
。 -
iris_interop_http_sample_count {id="namespace",host="host",production="production"}
- 在最近的采样间隔内在生产和名称空间内发送的HTTP
或SOAP
传输数。如果输出已配置为包括主机标签,则单独提供每个主机发送的传输数。 -
iris_interop_http_sample_count_per_sec {id="namespace",host="host",production="production"}
- 生产和命名空间中每秒发送的HTTP
或SOAP
传输数,在最近的采样间隔内取平均值。如果输出已配置为包括主机标签,则单独提供每台主机每秒发送的传输数。
创建应用程序指标
将自定义应用程序指标添加到 /metrics
端点返回的指标:
- 创建一个继承自
%SYS.Monitor.SAM.Abstract
的新类。 - 将
PRODUCT
参数定义为应用程序的名称。这可以是除iris
之外的任何值,它是为IRIS
指标保留的。 - 实现
GetSensors()
方法来定义所需的自定义指标,如下所示:
- 该方法必须包含一个或多个对
SetSensor()
方法的调用。此方法设置应用程序指标的名称和值。这些值应该是整数或浮点数,以确保与Prometheus
和SAM
兼容。
可以选择为指标定义标签,但如果这样做,则必须始终为该特定指标定义标签。
注意:有关选择指标和标签名称的最佳实践,请参阅 Prometheus
文档中的指标和标签命名(https://prometheus.io/docs/practices/naming/)。
- 如果成功,该方法必须返回
$$$OK
。
重要提示:缓慢执行 GetSensors()
会对系统性能产生负面影响。请务必测试 GetSensors()
实现是否有效,并避免可能超时或挂起的实现。
- 编译类。一个例子如下所示:
/// 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
}
}
- 使用
SYS.Monitor.SAM.Config class
的AddApplicationClass()
方法将自定义类添加到/metrics
配置。将类的名称和它所在的名称空间作为参数传递。
例如,在终端中从 %SYS
命名空间输入以下内容:
%SYS>set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("MyMetrics.Example", "USER")
%SYS>w status
status=1
- 确保
/api/monitor Web
应用程序具有访问自定义指标所需的应用程序角色。有关如何编辑应用程序角色的详细信息,请参阅编辑应用程序:应用程序角色选项卡。
此步骤授予 /api/monitor
对自定义指标所需数据的访问权限。例如,如果自定义指标类位于 USER
数据库中(受 %DB_USER
资源保护),则授予 /api/monitor %DB_USER
角色
- 通过将浏览器指向
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
指标是一个布尔值,指示是否已生成新警报。