跳到主要内容

SkyWalking 配置文件详解

介绍

SkyWalking的配置文件是控制其运行时行为的核心,通过调整这些配置可以实现数据采集策略、存储方式、集群通信等关键功能的定制。本文将详细解析 config/application.ymlconfig/agent.config 两大核心配置文件的结构与常用配置项。

核心配置文件概览

SkyWalking的配置主要分为两部分:

  1. 服务端配置 (application.yml) - 控制OAP Server和WebUI的行为
  2. 客户端配置 (agent.config) - 控制探针(Agent)的数据采集和上报

服务端配置详解 (application.yml)

基础结构示例

yaml
core:
default:
restHost: 0.0.0.0
restPort: 12800
gRPCHost: 0.0.0.0
gRPCPort: 11800

storage:
selector: ${SW_STORAGE:h2}
h2:
driver: org.h2.jdbcx.JdbcDataSource
url: jdbc:h2:mem:skywalking-oap-db
user: sa
关键模块说明
  • core: 基础服务配置(网络端口、集群等)
  • storage: 数据存储配置
  • receiver-*: 各种数据接收器配置
  • query: 查询服务配置

常用配置项说明

1. 存储配置(以Elasticsearch为例)

yaml
storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
环境变量覆盖

配置支持通过环境变量动态覆盖,格式为 ${VAR_NAME:default_value}

2. 采样率控制

yaml
agent-analyzer:
default:
sampleRate: ${SW_AGENT_ANALYZER_SAMPLE_RATE:10000} # 采样率=1/10000

客户端配置详解 (agent.config)

基础配置示例

properties
# 服务名称
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

# 后端服务地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

# 采样率
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1} # -1表示不采样

关键配置项

配置项说明默认值
agent.namespace项目隔离命名空间
agent.authentication与服务端的认证token
logging.level日志级别DEBUG
注意事项

修改agent配置后需要重启应用才能生效

实际案例

案例1:多环境配置管理

yaml
# 开发环境
storage:
selector: h2

# 生产环境
storage:
selector: elasticsearch
elasticsearch:
clusterNodes: es-prod1:9200,es-prod2:9200

案例2:安全配置

properties
# 启用TLS通信
collector.backend_service=127.0.0.1:11800
agent.authentication=your-auth-token
agent.ssl_trusted_path=./ca.crt

总结

通过本文你应该掌握:

  • SkyWalking配置文件的整体结构
  • 服务端与客户端核心配置项的作用
  • 常见生产环境配置方案
  • 环境变量覆盖配置的技巧

进阶练习

  1. 尝试将存储从H2切换到Elasticsearch
  2. 配置一个低采样率(如1/1000)的环境
  3. 为不同服务设置不同的命名空间

附加资源