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

简介: 第七十一章 使用 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",hostttype="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):从 HTTP或 SOAP 请求开始到相应响应的第一个字符之间的平均时间长度,以秒为单位。如果输出已配置为包括主机标签,则单独提供每个主机的 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 指标是一个布尔值,指示是否已生成新警报。

相关文章
|
2月前
|
Prometheus 监控 Java
深入探索:自制Agent监控API接口耗时实践
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控接口耗时,我们可以识别性能瓶颈,优化服务响应速度。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种实用的技术解决方案。
62 3
|
2月前
|
监控 数据可视化 Java
深入探索:自制Agent监控API接口耗时
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控这些指标,我们可以识别瓶颈,优化系统性能。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种有效的监控解决方案。
48 2
|
2月前
|
缓存 API 网络架构
掌握现代API开发:GraphQL vs REST
【10月更文挑战第24天】本文深入探讨了现代API开发中两种主流技术——GraphQL和REST的设计理念、技术特点及实际开发中的对比分析。GraphQL通过声明式数据请求和强类型系统提供更高的灵活性和性能,而REST则以其无状态特性和成熟的生态系统见长。文章还讨论了两者在客户端-服务器交互、安全性和工具支持方面的优劣,帮助开发者根据项目需求做出明智选择。
|
4月前
|
JSON 中间件 API
开发REST API3-11
开发REST API3-11
|
4月前
|
JSON JavaScript API
编写REST API
编写REST API
75 2
|
3月前
|
Java API Maven
使用 Smart-doc 记录 Spring REST API
使用 Smart-doc 记录 Spring REST API
65 0
|
5月前
|
存储 JSON API
【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
|
5月前
|
XML 安全 API
REST 和 SOAP API 有什么区别?
【8月更文挑战第31天】
292 0
|
5月前
|
JSON API 数据安全/隐私保护
哇塞!Django REST framework 太逆天啦!构建 API 服务从未如此轻松,你还不来试试?
【8月更文挑战第31天】Django REST framework(DRF)是基于Django框架的高效Web API开发工具,提供序列化、视图集、路由等功能,简化API构建流程。使用DRF可轻松实现数据的序列化与反序列化,并支持权限管理和认证机制以保障API安全。安装DRF只需通过`pip install djangorestframework`命令。要创建基本项目,先安装Django并创建新应用,定义模型、序列化器及视图集,最后配置路由。测试API时,可通过Postman发送HTTP请求验证功能。无论项目大小,DRF均能提供强大支持。
53 0
|
5月前
|
中间件 API 网络架构
Django后端架构开发:从匿名用户API节流到REST自定义认证
Django后端架构开发:从匿名用户API节流到REST自定义认证
53 0