自定义可观测页面

ARMS控制台全面拥抱开源,针对高定制需求场景(例如自定义可观测大盘),本文提供了一份基于Grafana + Prometheus的解决方案案例,以及如何自定义查询语句用于获取数据的示例。

背景信息

阿里云可观测监控 Prometheus 版默认集成了ARMS应用监控数据源,您可以直接在可观测监控 Prometheus 版下获取应用监控相关数据、查看应用监控预置大盘,并根据需求进行二次开发。

前提条件

ARMS应用监控服务会根据地域自动创建免费的阿里云Prometheus实例,如下图所示应用监控杭州对应的所有数据指标都会存入Prometheus监控杭州地域下的arms_metrics_cn-hangzhou_cloud_hangzhou实例中。

image

使用场景

  • 需要基于ARMS应用监控的数据指标重新绘制数据大盘。

  • 在日常运维工作中,通过将ARMS应用监控的数据指标与其他数据源特定组件的数据指标相结合,绘制专属数据大盘。

  • 在网站流量峰值来临前期,通过将ARMS应用监控的数据指标与其他数据源的上下游组件的指标相结合,绘制特定场景下数据大盘。

  • 在自建Grafana上展示通过Prometheus监控获取的ARMS应用监控数据。

  • Prometheus监控中获取的ARMS应用监控数据进行二次开发。

前提条件

  • 已为应用安装探针,具体操作,请参见应用监控接入概述

  • 已在本地成功安装Grafana软件或者已创建阿里云可观测可视化 Grafana 版工作区

自定义可视化大盘

步骤一:在Grafana中添加应用监控数据源

由于阿里云可观测监控 Prometheus 版默认集成了应用监控数据源,此处只需在Grafana中添加可观测监控 Prometheus 版下应用监控对应实例的数据源。

在自建Grafana中添加数据源

  1. 获取Prometheus HTTP API。

    1. ARMS控制台Prometheus监控 > 实例列表页面顶部菜单栏选择应用接入的地域。

      实例类型为Prometheus for 应用监控的实例即为默认集成的应用监控实例。

      2024-10-29_11-56-55

    2. 单击应用监控实例名称,然后单击左侧导航栏的设置,查看HTTP API地址。

      2024-10-29_11-59-24

    3. (可选)如果您需要提高Grafana数据读取的安全性,可以单击生成token,获取Prometheus实例的鉴权Token。

      重要

      生成Token后,在Grafana中添加数据源时必须配置Token,否则无法读取Prometheus的监控数据。

  2. Grafana中添加Prometheus数据源。

    此处以10.x版本Grafana为例,其他版本Grafana添加数据源的操作请参见Grafana官方文档

    1. 以管理员账号登录自建Grafana。

    2. 单击页面左上角的image图标,然后选择管理 > 数据源

    3. 单击+ Add new data source,然后选择数据源类型为Prometheus

    4. Settings页签的Name字段中输入自定义的名称,在Prometheus server URL字段中粘贴上一步获取的HTTP API地址。

      image

    5. (可选)在Custom HTTP Headers区域单击+Add header,设置HeaderAuthorization,设置Value为上一步获取的鉴权Token。

      image

    6. 单击页签底部的Save & Test

在可观测可视化 Grafana 版中集成数据源

阿里云可观测可视化 Grafana 版支持一键集成ARMS应用监控数据源和大盘。

  1. ARMS控制台Grafana服务 > 工作区管理页面单击工作区ID。

  2. 工作区信息页面的云服务集成区域单击ARMS应用监控服务,然后在对应地域的实例右侧单击集成

  3. 在弹出的对话框中单击确认

  4. 同步完成后,单击右侧的文件夹

  5. GrafanaDashboards页签单击大盘名称可以查看应用监控预置的默认大盘。

    应用监控大盘

  6. 单击页面左上角的image图标,然后选择管理 > 数据源,可以查看已添加的应用监控数据源。

    2024-10-29_17-35-10

步骤二:配置自定义大盘

  1. Grafana中单击页面左上角的image图标,然后单击仪表板

  2. 仪表板页面选择新建 > 新建仪表板,在New dashboard页面单击添加可视化创建面板。

  3. 在弹出的Select data source对话框中选择应用监控数据源,数据源名称默认为arms_metrics_{regionid}_cloud

    重要

    请确认当前数据源中已有数据。

  4. 在折叠面板A下设置查询指标。

    通过PromQL查询语句设置

    Code模式下在Metrics browser右侧直接输入PromQL查询语句。

    image.png

    ARMS控制台应用监控的监控详情页面单击image图标可以查看指标对应的PromQL语句。更多信息,请参见查询语句

    image

    更多PromQL查询语句的使用方法,请参见Prometheus官方文档

    通过应用监控指标设置

    Builder模式下在Metric下拉框中选择具体的指标,例如arms_jvm_threads_count,查询JVM线程数。应用监控支持的指标详情,请参见应用监控指标说明

    Label filters区域选择具体维度的标签和标签值。Use query

  5. 在右侧区域设置面板Title,并选择展示的图表类型。

    说明

    同一数据指标,选择不同的图表类型,可以获得不同颗粒度的数据图表。

    image.png

  6. 设置完成后,单击右上角的Apply

自定义查询语句

根据ARMS控制台获取到的Prometheus HTTP APIPromQL语句,您可以通过Shell脚本或Java编码进行HTTP请求,对获取到结果数据做进一步定制处理。

例如,Prometheus HTTP API地址为https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou,与PromQL按以下格式进行组合:

{{Prometheus HTTP API}}/api/v1/query_range?query={{PromQL}}&start={{startTime}}&end={{endTime}}&step={{step}}

得到如下查询语句:

https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou/api/v1/query_range?query=sum by (callType,)(sum_over_time_lorc(arms_app_requests_count_ign_destid_endpoint_ppid_prpc{pid="ckv8e2vzfj@7e393063f3fd6ad",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm", }[1m]))&start=1728719399&end=1728722999&step=60s

查询到的数据示例:

image

常见问题

查询是否免费?

免费

PromQL查询是否有限流

有限流防护,但不是根据入口的QPS做的限制,不同的查询消耗不一样。建议尽量避免耗时高的查询(例如查询全部接口或者查询30天以上范围时间数据),入口查询控制在50 QPS以内。如果有不可避免的持续高消耗的查询,可以提前提交工单申请扩容。