自定义可观测页面

更新时间:
复制 MD 格式

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 应用监控的实例即为默认集成的应用监控实例。

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

      HTTP API地址(Grafana 读取地址) 区域,可获取公网和内网两个访问地址,并可单击 生成token 提升数据读取安全性。

    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地址。

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

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

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

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

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

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

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

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

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

    默认大盘包括 DB应用接口机器四个仪表盘。

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

    在数据源列表中,可以看到名称以 arms_metrics_cn-hangzhou_cloud 开头、类型为 Prometheus 的应用监控数据源,其 URL 指向 ARMS Prometheus 接口地址。

步骤二:配置自定义大盘

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

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

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

    重要

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

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

    通过PromQL查询语句设置

    Code模式下在Metrics browser右侧直接输入PromQL查询语句。查询编辑器输入框下方提供Legend(图例格式)、Format(返回数据格式,如Time series)和Type(查询类型,如RangeInstant)等配置项。

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

    例如,在应用概览页面的请求数指标卡片中,单击图标可查看对应的 PromQL 查询表达式,如 sum by (callType)(sum_over_time(arms_app_requests_count{pid="..."}[1m])),Legend 设置为 {{label_name}},Format 选择 Time series,查询类型选中 range

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

    通过应用监控指标设置

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

    Label filters区域选择具体维度的标签和标签值。在 Label filters 区域可按标签进一步过滤,例如设置 host 条件筛选特定主机的指标数据。

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

    说明

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

    将可视化类型设置为 Time series,并在 Panel options 区域将 Title 设置为 JVM Threads Count,然后单击 Apply 完成配置。

  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

查询到的数据示例:

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"callType":"http"},"values":[[1728719399,"1575"],[1728719459,"1599"],[1728719519,"1593"],[1728719579,"1584"],[1728719639,"1578"],[1728719699,"1568"],[1728719759,"1561"],[1728719819,"1555"],[1728719879,"1547"],[1728719939,"1540"],[1728719999,"1533"],[1728720059,"1524"],[1728720119,"1518"],[1728720179,"1512"],[1728720239,"1503"],[1728720299,"1497"],[1728720359,"1491"],[1728720419,"1482"],[1728720479,"1476"],[1728720539,"1467"],[1728720599,"1464"],[1728720659,"1453"],[1728720719,"1448"],[1728720779,"1443"],[1728720839,"1434"],[1728720899,"1428"],[1728720959,"1419"],[1728721019,"1416"],[1728721079,"1407"],[1728721139,"1401"],[1728721199,"1395"],[1728721259,"1389"],[1728721319,"1383"],[1728721379,"1374"],[1728721439,"1366"],[1728721499,"1367"],[1728721559,"1350"],[1728721619,"1350"],[1728721679,"1344"],[1728721739,"1335"],[1728721799,"1331"],[1728721859,"1324"],[1728721919,"1320"],[1728721979,"1314"],[1728722039,"1305"],[1728722099,"1302"],[1728722159,"1296"],[1728722219,"1287"],[1728722279,"1284"],[1728722339,"1273"],[1728722399,"1272"],[1728722459,"1155"],[1728722519,"1116"],[1728722579,"1110"],[1728722639,"1107"],[1728722699,"1098"],[1728722759,"1095"],[1728722819,"1086"],[1728722879,"1083"],[1728722939,"1077"],[1728722999,"1184"]]}]}}

常见问题

查询是否免费?

免费

PromQL查询是否有限流

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