SpringBoot 项目使用 Skywalking 覆盖配置
在上面的示例中,部署应用是将 agent
复制到部署机器上,但是如果我们在一台机器上部署多个应用,就可以共用一个 agent
文件,那我们可以使用配置覆盖的形式来避免对配置文件的修改。
一. 系统属性
使用 skywalking.
+ 配置文件中的配置名 作为系统属性的配置名来覆盖配置文件中的值。
- 为什么需要这个前缀?因为 agent 系统属性是和目标应用共享的,加前缀是为了避免冲突。
- 例子,通过下面的系统属性覆盖
agent.application_code
。
-Dskywalking.agent.service_name=user-dl
二. agent 选项
在 JVM 参数的 agent 路径后面添加选项。
-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
- 例子,通过下面的配置覆盖
agent.application_code
logging.level
。
-javaagent:/path/to/skywalking-agent.jar=agent.application_code=31200,logging.level=debug
- 特殊字符,如果在选项或选项值中有分隔符(
,
或者=
),应该用引号包起来。
-javaagent:/path/to/skywalking-agent.jar=agent.ignore_suffix='.jpg,.jpeg'
三. 系统环境变量
- 例子,通过下面的配置覆盖
agent.application_code
和logging.level
。
# The service name in UI agent.service_name=${SW_AGENT_NAME:Your_ApplicationName} # Logging level logging.level=${SW_LOGGING_LEVEL:INFO}
如果 SW_AGENT_NAME
环境变量在你的操作系统中已存在,并且,它的值为 skywalking-agent-demo
,那么这里的 agent.service_name
的值将会被覆写为 skywalking-agent-demo
, 否则, 它将会被设置成 Your_ApplicationName
。
另外,占位符嵌套也是支持的,比如 ${SW_AGENT_NAME:${ANOTHER_AGENT_NAME:Your_ApplicationName}}
。 在这种情况下,如果 SW_AGENT_NAME
环境变量不存在,但是 ANOTHER_AGENT_NAME
环境变量存在,并且它的值为 skywalking-agent-demo
, 那么这里的 agent.service_name
的值将会被覆写为 skywalking-agent-demo
, 否则, 它将会被设置成 Your_ApplicationName
。
四. 覆盖优先级
agent 选项 > 系统属性(-D) > 系统环境变量 > 配置文件
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: SpringBoot 项目使用 Skywalking
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论