描述
采集的数据需要存储,提供给相关人员查看系统调用链路信息,因此需要配置存储项。
一般在本地尝鲜可以使用默认的h2数据库。可以很快的部署SkyWalking服务,体验相关功能。
开发环境可以使用MySQL数据库。
测试和生产环境建议使用elasticsearch。
配置
在application.yml里面,配置storage模块。
具体配置项如下:
selector:存储选择器
elasticsearch:elasticsearch6.X以下配置项
nameSpace:命名空间,如:SkyWalking
clusterNodes:集群节点,如:localhost:9200
protocol:协议,如:HTTP
trustStorePath:SSL配置路径
trustStorePass:SSL配置,7.0.0之后可以在secretsManagementFile里面管理
user:用户名,7.0.0之后可以在secretsManagementFile里面管理
password:密码,7.0.0之后可以在secretsManagementFile里面管理
secretsManagementFile:安全管理文件
enablePackedDownsampling:如果开启,则采样索引(小时和天精度)将向下合并到分钟索引中,es7.0.0的一个增强功能,降低50%的索引数(移除了天和小时的索引需求),但是性能和之前的几乎一致。对于es6.x版本的影响只是保持小时和天的索引,用户需要手动移除他们。
dayStep:es6.x版本,分钟/小时/月粒度的指标和追踪索引被整合到天里面,ES每天创建一个新的索引。
indexShardsNumber:索引分片数
indexReplicasNumber:索引备份数
recordDataTTL:记录有效时长
otherMetricsDataTTL:其他指标有效时长(分钟/小时/天)
monthMetricsDataTTL:月度指标有效时长
bulkActions:批量操作数
flushInterval:刷盘间隔时间
concurrentRequests:并发请求数
resultWindowMaxSize:结果窗口最大值
metadataQueryMaxSize:元数据查询最大值
segmentQueryMaxSize:追踪段最大查询数
profileTaskQueryMaxSize:性能剖析最大查询数
advanced:
elasticsearch7:elasticsearch7.X以下配置项
nameSpace:命名空间
clusterNodes:集群节点
protocol:协议
trustStorePath:SSL文件路径
trustStorePass:SSL PASS项,7.0.0之后可以在secretsManagementFile里面管理
enablePackedDownsampling: 如果开启,则采样索引(小时和天精度)将向下合并到分钟索引中,es7.0.0的一个增强功能,降低50%的索引数(移除了天和小时的索引需求),但是性能和之前的几乎一致。
dayStep:
user:用户名,7.0.0之后可以在secretsManagementFile里面管理
password:密码,7.0.0之后可以在secretsManagementFile里面管理
secretsManagementFile:安全管理文件
indexShardsNumber:分片数
indexReplicasNumber:副本数
recordDataTTL:记录有效时长
otherMetricsDataTTL:其他指标有效时长(分钟/小时/天)
monthMetricsDataTTL:月度指标有效时长
bulkActions:批量操作数
flushInterval:刷盘间隔时间
concurrentRequests:并发请求数
resultWindowMaxSize:结果窗口最大值
metadataQueryMaxSize:元数据查询最大值
segmentQueryMaxSize:追踪段最大查询数
profileTaskQueryMaxSize:性能剖析最大查询数
advanced:
h2:h2把内存数据库
driver:驱动
url:数据库URL
user:用户名
metadataQueryMaxSize:查询最大值
mysql:MySQL数据库
properties:
jdbcUrl:连接URL
dataSource.user:用户名
dataSource.password:密码
dataSource.cachePrepStmts:预加载缓存
dataSource.prepStmtCacheSize:预加载缓存大小
dataSource.prepStmtCacheSqlLimit:预加载SQL限制
dataSource.useServerPrepStmts:开启服务端预加载机制
metadataQueryMaxSize:最大查询数
influxdb:
metabaseType:数据库类型(目前可选择:h2, mysql)
h2Props:
dataSourceClassName:数据库驱动
dataSource.url:数据库URL
dataSource.user:用户名
dataSource.password:密码
mysqlProps:
jdbcUrl:连接URL
dataSource.user:用户名
dataSource.password:密码
dataSource.cachePrepStmts:预加载缓存
dataSource.prepStmtCacheSize:预加载缓存大小
dataSource.prepStmtCacheSqlLimit:预加载SQL限制
dataSource.useServerPrepStmts:开启服务端预加载机制
metadataQueryMaxSize:最大查询数
url:InfluxDB连接URL
user:InfluxDB用户名
password:InfluxDB密码
database:InfluxDB数据库
actions:InfluxDB收集活动数
duration:InfluxDB等待时长
fetchTaskLogMaxSize:请求中提取任务日志的最大数量
示例
具体配置在 application.yml 的 storage 模块 。 可以看出,配置项都是可以使用运行时参数替换的,也就是说,这些配置都可以在运行时指定参数。 一般除了连接项,如IP,端口,用户名,密码这样的必须指定的配置项,其他配置建议使用默认值。
storage:
selector: ${SW_STORAGE:h2}
elasticsearch:
nameSpace: ${SW_NAMESPACE:"skywalking"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:172.18.20.107:9220}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# Those data TTL settings will override the same settings in core module.
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
advanced: ${SW_STORAGE_ES_ADVANCED:""}
elasticsearch7:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index.
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# Those data TTL settings will override the same settings in core module.
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
profileTaskQueryMaxSize: ${SW_STORAGE_ES_QUERY_PROFILE_TASK_SIZE:200}
advanced: ${SW_STORAGE_ES_ADVANCED:""}
h2:
driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
user: ${SW_STORAGE_H2_USER:sa}
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
influxdb:
# Metadata storage provider configuration
metabaseType: ${SW_STORAGE_METABASE_TYPE:H2} # There are 2 options as Metabase provider, H2 or MySQL.
h2Props:
dataSourceClassName: ${SW_STORAGE_METABASE_DRIVER:org.h2.jdbcx.JdbcDataSource}
dataSource.url: ${SW_STORAGE_METABASE_URL:jdbc:h2:mem:skywalking-oap-db}
dataSource.user: ${SW_STORAGE_METABASE_USER:sa}
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:}
mysqlProps:
jdbcUrl: ${SW_STORAGE_METABASE_URL:"jdbc:mysql://localhost:3306/swtest"}
dataSource.user: ${SW_STORAGE_METABASE_USER:root}
dataSource.password: ${SW_STORAGE_METABASE_PASSWORD:root@1234}
dataSource.cachePrepStmts: ${SW_STORAGE_METABASE_CACHE_PREP_STMTS:true}
dataSource.prepStmtCacheSize: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_SIZE:250}
dataSource.prepStmtCacheSqlLimit: ${SW_STORAGE_METABASE_PREP_STMT_CACHE_SQL_LIMIT:2048}
dataSource.useServerPrepStmts: ${SW_STORAGE_METABASE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_METABASE_QUERY_MAX_SIZE:5000}
# InfluxDB configuration
url: ${SW_STORAGE_INFLUXDB_URL:http://localhost:8086}
user: ${SW_STORAGE_INFLUXDB_USER:root}
password: ${SW_STORAGE_INFLUXDB_PASSWORD:}
database: ${SW_STORAGE_INFLUXDB_DATABASE:skywalking}
actions: ${SW_STORAGE_INFLUXDB_ACTIONS:1000} # the number of actions to collect
duration: ${SW_STORAGE_INFLUXDB_DURATION:1000} # the time to wait at most (milliseconds)
fetchTaskLogMaxSize: ${SW_STORAGE_INFLUXDB_FETCH_TASK_LOG_MAX_SIZE:5000} # the max number of fetch task log in a request