SkyWalking 与Prometheus集成
介绍
SkyWalking是一个开源的APM(应用性能监控)系统,而Prometheus是一个流行的监控和告警工具。将两者集成可以实现更全面的监控能力:SkyWalking专注于分布式追踪和应用性能指标,而Prometheus擅长基础设施和系统级监控。通过集成,我们可以将SkyWalking的指标数据导出到Prometheus,实现统一的可视化和告警。
为什么需要集成?
- 统一监控平台:避免在多个系统间切换
- 利用Prometheus强大的告警功能
- 结合两者的优势指标(应用性能+系统资源)
前置条件
在开始集成前,请确保:
- 已安装并运行SkyWalking OAP Server
- 已安装并运行Prometheus
- 了解基本的Prometheus配置
集成步骤
1. 配置SkyWalking OAP Server
修改SkyWalking OAP Server的配置文件 config/application.yml
,启用Prometheus接收器:
yaml
receiver-prometheus:
selector: ${SW_RECEIVER_PROMETHEUS:default}
default:
enabledHandlers: ${SW_RECEIVER_PROMETHEUS_HANDLER:""}
host: ${SW_RECEIVER_PROMETHEUS_HOST:0.0.0.0}
port: ${SW_RECEIVER_PROMETHEUS_PORT:1234}
重启OAP Server使配置生效。
2. 配置Prometheus抓取
在Prometheus的配置文件 prometheus.yml
中添加以下job:
yaml
scrape_configs:
- job_name: 'skywalking'
static_configs:
- targets: ['skywalking-oap-server:1234']
metrics_path: '/metrics'
honor_labels: true
3. 验证集成
重启Prometheus后,可以通过以下方式验证集成是否成功:
- 访问Prometheus的Web界面(通常为
http://localhost:9090
) - 在表达式输入框中输入
up{job="skywalking"}
- 如果返回值为1,表示集成成功
数据流示意图
实际应用案例
假设我们有一个电商应用,需要监控以下指标:
- 订单服务的响应时间(来自SkyWalking)
- 服务器的CPU使用率(来自Prometheus)
通过集成后,我们可以在Grafana中创建统一的仪表盘:
sql
# SkyWalking 指标
sum(rate(service_resp_time_sum{service="order-service"}[5m])) by (service)
# Prometheus指标
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
常见问题解决
可能遇到的问题
- 连接失败:检查SkyWalking OAP Server和Prometheus之间的网络连通性
- 无数据:确认SkyWalking Agent已正确配置并发送数据
- 指标名称冲突:使用
honor_labels: true
避免标签冲突
总结
通过将SkyWalking与Prometheus集成,我们能够:
- 集中管理应用性能和系统指标
- 利用Prometheus的告警功能监控SkyWalking数据
- 在Grafana中创建统一的监控仪表盘
扩展学习
- 尝试在Grafana中创建结合两者的仪表盘
- 探索Prometheus的告警规则,为SkyWalking指标设置告警
- 研究SkyWalking的其他导出器,如OpenTelemetry导出器
练习
- 配置一个简单的Spring Boot应用,使用SkyWalking Agent
- 将SkyWalking指标导出到Prometheus
- 在Prometheus中查询应用的响应时间指标