开发者学堂课程【分布式链路追踪 Skywalking:配置覆盖】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/743/detail/13161
配置覆盖
内容介绍:
一、学前需知
二、Skywalking 支持的几种配置方式:
三、演示
一、学前需知
skywalking 的插件,了解 skywalking 的一个重要特性:配置覆盖。在之前的案例中,每次部署应用都需要复制一份agent,因为需要修改其中的服务名称,服务名称是在 agent 配置文件中指定的,故复制一份agent,覆盖服务名。这样可以区别每次的服务名都是不同的。这样非常麻烦。所以可以使用Skywalking提供的配置覆盖功能通过启动命令动态指定服务名,来进行服务名的覆盖,这样每次启动 jar 包时,指定不同的服务名,用的同一个 agent 。
二、Skywalking 支持的几种配置方式:
1、系统配置:
在使用 jar -jar 命令时我们可以通过 - D 来指定参数,参数格式为 skywalking. 再 +配置文件作为系统配置来进行覆盖。当前的服务名称的配置项: agent.service_name 。通过系统配置来进行配置的变更,则需要如此写:
-Dskywa1king.agent.service_name=skywalkirg_mysq1
2、探针配置:
针对 javaagent 它的一个 jar 包来启动时指定一个参数。标准格式
-javaagent:/path/to/skywa1king-agent.jar=[option1]=[value1],[option2]=[value2]
所以案列:
-javaagent:/path/to/skywalking-agent.jar=agent.servjce_name=skywalking_mysql
通过这种方式也可以进行配置,假设在配置项的值里面加入一些特殊字符 比如 ,或 = 。这些为分隔符,如果配置中包含分隔符,必须使用引号包裹起来。 skywalking 在加载配置时会去掉引号,并将引号内的字符串当成一个配置的值进行处理。
3、系统环境变量:
在环境变量中设置一些值,这些值的 t 指的是在配置文件指定的字符串:SW_AGENT_NAME ,可以在环境变量中设置SW_AGENT_NAME的值来指定服务名。
4、配置文件中的值:
在配置文件中有一个默认的值 Your_ApplicationName ,假设上面三种方式都不设置值,就会使用 Your_ApplicationName。
5、在 skywalking 中配置有优先级,覆盖优先级为:
探针配置>系统配置>系统环境变量>配置文件中的值
通过上面这种方式配置覆盖,可以在每次启动应用时指定不同名字
三、演示
可以使用探针配置,系统配置来进行指定,演示探针配置,探针配置就是在 .jar 后加一个项目名,同时指定最终的名称,打开虚拟机,清空,找到 jar 包,通过 springboot 来启动,命令如下:
java-javaagent:/usr/1oca1/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar=agent.service_name=config_springboot -jar skywalking_springboot.jar &
启动后,访问 springboot 接口,没有默认启动端口,通过 sayboot来访问,地址栏输入:192.168.62.141:8080/sayboot,回车,得到如下页面:
之后,找到 bin 目录,然后 cd agent 。再输入ls 查看该目录下文件,然后再输入:cd config 。再输入:car agent.config。由于优先级探针配置>配置文件中的值,所以等同探针配置覆盖掉配置文件中的值,达到了动态修改服务名的效果。
然后先停掉服务,输入:ps -ef|grep 8080 ,然后输入 config_springboot,输入:kill -9 1605//杀掉进程。
再启动时就不需要探针配置,换为系统配置。
进入 skywalking 目录,然后再输入:
java-javaagent:/usr/1oca1/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar-Dskywalking.agent.service_name=config_springboot2 -jar skywalking_springboot.jar &
启动成功,再去访问地址:如下图所示:
所以这里提供多种方式对配置进行覆盖,可以利用同一种 agent 来来启动不同应用时动态的指定不同的服务名,达到只用一份 agent 对各种应用进行覆盖的效果,配置覆盖在 skywalking 使用中应用场景非常广泛,当启动应用时需要去动态的指定一些参数值的时。都可以去使用这样的方式,推荐使用探针配置。它优先级最高,可以保证我们的配置能够覆盖掉其他的配置。