Grafana+graphql+skywalking贯通

接上一篇,我们的项目主要目标整合skywalking(简称SW)提供的各种自定义监控项,用OAL加SW,对历史数据指标统计多有不便,所以选直接通过graphql获得数据,再和grafana整合

gafana需要新增fifemon-graphql-datasource/插件才能支持graphql,参考官方文档https://grafana.com/grafana/plugins/fifemon-graphql-datasource/,上文已经提过,不再赘述

完成安装后,配置graphql数据源,其本质是把SW当初graphql的Server端,所以需要获取IP:Port/graphql的入口,并获得Server端的graphql schema,配置如下(这里localhost:8090是SW OAP的端口,不是默认,请根据自己需要配置)
在这里插入图片描述
然后点击,最下边的explore按钮,进入测试页面
在这里插入图片描述
参考下文https://zhuanlan.zhihu.com/p/416315346 提供的测试查询
query queryData {
readMetricsValues(

) {
label values{ values{ id value }}
}
}
然后把相关应用参数改成本地的SW参数
点击右上角测试成功

然后尝试添加一个简单的dashboard
选择 service_cpm指标,熟悉SW的小伙伴们应该知道,查询指定服务每分钟请求数,对应的grapgql语句如下
query {queryData:
readMetricsValues(
duration: {start: “2023-07-26 1340”,end: “2023-07-26 1350”, step: MINUTE},
condition: {
name: “service_cpm”,
entity: {
scope: Service,
serviceName: “demo2”
normal: true
}
}
) {
label values{ values{ id value }}
}
}
在grafana新增dashboard,然后新增panel,进入以下页面
在这里插入图片描述
在下方query框里新增上述语句,然后dataPath选择queryData,在靠近右上角chart(图标)选择BarChart(也可以选择表格),再点击右上角Query,成功显示。

至此完成贯通

### Prometheus + GrafanaSkyWalking 的对比分析 #### 数据采集方式 Prometheus 使用拉取模型 (Pull Model),通过 HTTP 协议定期从目标服务获取指标数据[^2]。而 SkyWalking 则采用推模式 (Push Model),依赖于探针或代理将数据发送到后端存储[^1]。 #### 可观测性范围 SkyWalking 不仅提供性能监控功能,还涵盖了分布式追踪、服务拓扑图和服务依赖关系等功能[^1]。相比之下,Prometheus 主要专注于时序数据库和告警机制,在微服务治理方面的覆盖较少。 #### 集成能力 两者都可以很好地与 Grafana 结合使用以创建仪表板来进行可视化展示[^3]。不过,SkyWalking 自带了较为完善的前端界面,无需额外配置即可查看大部分所需信息;而对于Prometheus来说,则更多依靠Grafana这样的第三方工具完成复杂的数据呈现工作。 #### 社区支持和技术成熟度 Prometheus作为CNCF毕业项目之一,拥有庞大的社区基础和支持网络,并且已经被广泛应用于各种生产环境中多年之久[^2]。与此同时,Apaceh SkyWalking同样具备强大的生态系统以及活跃开发者群体贡献代码改进产品特性[^1]。 综上所述,Prometheus 更适合那些只需要基本的时间序列数据分析的企业;如果您的需求涉及到全面的APM(Application Performance Management),那么Apache SkyWalking可能是更好的选择因为它提供了更丰富的特性和视角来看待整个系统的运行状况. ```python # 示例 Python 脚本用于安装 prometheus-client 库以便集成至Python应用中报告自定义指标给Prometheus服务器。 pip install prometheus_client from prometheus_client import start_http_server, Gauge import random import time if __name__ == '__main__': g = Gauge('random_number', 'Random number generated by the application') start_http_server(8000) while True: rand_value = random.uniform(-1, 1) g.set(rand_value) time.sleep(1) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhyuli

您的鼓励是对我付出努力一种赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值