SkyWalking 存储选择指南
简介
SkyWalking是一个开源的APM(应用性能监控)系统,用于收集、分析、聚合和可视化分布式系统的数据。后端存储是SkyWalking的核心组件之一,负责持久化监控数据。选择合适的存储方案对系统性能和可扩展性至关重要。
支持的存储类型
SkyWalking支持多种后端存储,主要包括:
- H2(嵌入式数据库):默认选项,适合开发和测试环境
- Elasticsearch:生产环境推荐选项,支持大规模数据
- MySQL:关系型数据库选项
- TiDB:兼容MySQL协议的分布式数据库
- InfluxDB:时间序列数据库
- PostgreSQL:另一种关系型数据库选项
存储选择因素
选择存储方案时,需要考虑以下关键因素:
- 数据量:预估每日/每月的监控数据量
- 查询性能:对历史数据查询的响应时间要求
- 成本:硬件和维护成本
- 扩展性:未来数据增长的需求
- 团队熟悉度:运维团队的技术栈熟悉程度
各存储方案详解
1. H2(嵌入式数据库)
适用场景:
- 本地开发环境
- 快速原型验证
- 小型测试环境
配置示例:
storage:
selector: ${SW_STORAGE:h2}
h2:
driver: org.h2.jdbcx.JdbcDataSource
url: jdbc:h2:mem:skywalking-oap-db
user: sa
注意
H2仅适用于非生产环境,数据不会持久化,重启后数据将丢失。
2. Elasticsearch
适用场景:
- 生产环境
- 大规模数据存储
- 需要高性能查询
优势:
- 优秀的水平扩展能力
- 强大的全文搜索和聚合功能
- 社区支持良好
配置示例:
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
3. MySQL
适用场景:
- 中小规模生产环境
- 已有MySQL基础设施
- 需要事务支持
配置示例:
storage:
selector: ${SW_STORAGE:mysql}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:password}