ARMS控制台全面拥抱开源,针对高定制需求场景(例如自定义可观测大盘),本文提供了一份基于Grafana + Prometheus的解决方案案例,以及如何自定义查询语句用于获取数据的示例。
背景信息
阿里云可观测监控 Prometheus 版默认集成了ARMS应用监控数据源,您可以直接在可观测监控 Prometheus 版下获取应用监控相关数据、查看应用监控预置大盘,并根据需求进行二次开发。
前提条件
ARMS应用监控服务会根据地域自动创建免费的阿里云Prometheus实例,如下图所示应用监控杭州对应的所有数据指标都会存入Prometheus监控杭州地域下的arms_metrics_cn-hangzhou_cloud_hangzhou实例中。
使用场景
需要基于ARMS应用监控的数据指标重新绘制数据大盘。
在日常运维工作中,通过将ARMS应用监控的数据指标与其他数据源特定组件的数据指标相结合,绘制专属数据大盘。
在网站流量峰值来临前期,通过将ARMS应用监控的数据指标与其他数据源的上下游组件的指标相结合,绘制特定场景下数据大盘。
在自建Grafana上展示通过Prometheus监控获取的ARMS应用监控数据。
对Prometheus监控中获取的ARMS应用监控数据进行二次开发。
前提条件
自定义可视化大盘
步骤一:在Grafana中添加应用监控数据源
由于阿里云可观测监控 Prometheus 版默认集成了应用监控数据源,此处只需在Grafana中添加可观测监控 Prometheus 版下应用监控对应实例的数据源。
在自建Grafana中添加数据源
获取Prometheus HTTP API。
在ARMS控制台的 页面顶部菜单栏选择应用接入的地域。
实例类型为Prometheus for 应用监控的实例即为默认集成的应用监控实例。
单击应用监控实例名称,然后单击左侧导航栏的设置,查看HTTP API地址。
(可选)如果您需要提高Grafana数据读取的安全性,可以单击生成token,获取Prometheus实例的鉴权Token。
重要生成Token后,在Grafana中添加数据源时必须配置Token,否则无法读取Prometheus的监控数据。
在Grafana中添加Prometheus数据源。
此处以10.x版本Grafana为例,其他版本Grafana添加数据源的操作请参见Grafana官方文档。
以管理员账号登录自建Grafana。
单击页面左上角的图标,然后选择
。单击+ Add new data source,然后选择数据源类型为Prometheus。
在Settings页签的Name字段中输入自定义的名称,在Prometheus server URL字段中粘贴上一步获取的HTTP API地址。
(可选)在Custom HTTP Headers区域单击+Add header,设置Header为Authorization,设置Value为上一步获取的鉴权Token。
单击页签底部的Save & Test。
在可观测可视化 Grafana 版中集成数据源
阿里云可观测可视化 Grafana 版支持一键集成ARMS应用监控数据源和大盘。
在ARMS控制台的 页面单击工作区ID。
在工作区信息页面的云服务集成区域单击ARMS应用监控服务,然后在对应地域的实例右侧单击集成。
在弹出的对话框中单击确认。
同步完成后,单击右侧的文件夹。
在Grafana的Dashboards页签单击大盘名称可以查看应用监控预置的默认大盘。
单击页面左上角的图标,然后选择
,可以查看已添加的应用监控数据源。
步骤二:配置自定义大盘
在Grafana中单击页面左上角的图标,然后单击仪表板。
在仪表板页面选择
,在New dashboard页面单击添加可视化创建面板。在弹出的Select data source对话框中选择应用监控数据源,数据源名称默认为arms_metrics_{regionid}_cloud。
重要请确认当前数据源中已有数据。
在折叠面板A下设置查询指标。
通过PromQL查询语句设置
Code模式下在Metrics browser右侧直接输入PromQL查询语句。
在ARMS控制台应用监控的监控详情页面单击图标可以查看指标对应的PromQL语句。更多信息,请参见查询语句。
更多PromQL查询语句的使用方法,请参见Prometheus官方文档。
通过应用监控指标设置
Builder模式下在Metric下拉框中选择具体的指标,例如
arms_jvm_threads_count
,查询JVM线程数。应用监控支持的指标详情,请参见应用监控指标说明。在Label filters区域选择具体维度的标签和标签值。
在右侧区域设置面板Title,并选择展示的图表类型。
说明同一数据指标,选择不同的图表类型,可以获得不同颗粒度的数据图表。
设置完成后,单击右上角的Apply。
自定义查询语句
根据ARMS控制台获取到的Prometheus HTTP API和PromQL语句,您可以通过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
查询到的数据示例:
常见问题
查询是否免费?
免费
PromQL查询是否有限流
有限流防护,但不是根据入口的QPS做的限制,不同的查询消耗不一样。建议尽量避免耗时高的查询(例如查询全部接口或者查询30天以上范围时间数据),入口查询控制在50 QPS以内。如果有不可避免的持续高消耗的查询,可以提前提交工单申请扩容。