描述
通过采样率设置,我们可以配置采样的数据量,如80%,50%等,这样做的目的是避免采集过分多的数据。但是,这样会丢失一些信息,如果恰好我们想查看的数据丢失了,就会导致排查问题难度提升,甚至遗漏问题。
SkyWalking同时提供了数据清理机制,即我们采集的数据会保留多长时间。因为链路追踪这样的需求,大多数情况下只需要查找短时间内的数据,甚至是实时数据,那么我们就不需要长时间的保留采集到的数据。
配置
配置文件路径:path/config/application.yml
本章节仅展示与数据清理机制有关的配置,如下:
core:
selector: ${SW_CORE:default}
default:
# Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
enableDataKeeperExecutor: ${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close.
dataKeeperExecutePeriod: ${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} # How often the data keeper executor runs periodically, unit is minute
recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
enableDataKeeperExecutor:数据清理机制的开关,默认开启。
dataKeeperExecutePeriod:数据清理定时器间隔时间,默认5,单位分钟。
recordDataTTL:明细记录的有效期,默认90,单位分钟。
minuteMetricsDataTTL:分钟级指标数据有效期,默认90,单位分钟。
hourMetricsDataTTL:小时级指标数据有效期,默认36,单位小时。
dayMetricsDataTTL:天级指标数据有效期,默认45,单位天。
monthMetricsDataTTL:月级指标数据有效期,默认18,单位月。
以上是核心配置里面有效期配置,但是在使用elasticsearch6.x存储采集数据时,是使用存储配置里面的有效期覆盖核心配置的有效期(elasticsearch7没有此配置,直接使用核心配置)。如下:
storage:
selector: ${SW_STORAGE:h2}
elasticsearch:
# 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
recordDataTTL:记录明细有效期,默认7,单位天。
otherMetricsDataTTL:其他指标(分钟/小时/天)数据有效期,默认45,单位天。
monthMetricsDataTTL:月级指标数据有效期,默认18,单位月。
小结
在实际使用过程中,我们可以根据自身实际情况,对数据的有效期进行个性化的配置。如:使用elasticsearch6.x时,我们可以将明细记录有效期设置为1天。
链接: 官方连接
TTL
In SkyWalking, there are two types of observability data:
Records include traces, logs, topN sampled statements and alarm. recordDataTTL applies to record data.
Metrics include all metrics for service, instance, endpoint, and topology map. Metadata(lists of services, instances, or endpoints) also belongs to metrics. metricsDataTTL applies to Metrics data.
These are the settings for the different types:
# Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3} # Unit is day
metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7} # Unit is day
使用的k8s部署直接加上env,SW_CORE_RECORD_DATA_TTL
env:
- name: SW_CLUSTER
value: kubernetes
- name: SW_CLUSTER_K8S_NAMESPACE
value: ops
- name: SW_CLUSTER_K8S_LABEL
value: 'app=skywalking,release=skywalking,component=oap'
- name: SKYWALKING_COLLECTOR_UID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.uid
- name: SW_STORAGE
value: elasticsearch
- name: SW_STORAGE_ES_CLUSTER_NODES
value: 'elasticsearch-master:9200'
- name: SW_CORE_RECORD_DATA_TTL
value: '7'