配置覆盖 | 学习笔记

简介: 快速学习配置覆盖

开发者学堂课程【分布式链路追踪 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,回车,得到如下页面:

image.png

之后,找到 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 &

启动成功,再去访问地址:如下图所示:

image.png

所以这里提供多种方式对配置进行覆盖,可以利用同一种 agent 来来启动不同应用时动态的指定不同的服务名,达到只用一份 agent 对各种应用进行覆盖的效果,配置覆盖在 skywalking 使用中应用场景非常广泛,当启动应用时需要去动态的指定一些参数值的时。都可以去使用这样的方式,推荐使用探针配置。它优先级最高,可以保证我们的配置能够覆盖掉其他的配置。

相关文章
|
JSON Java 数据格式
有关Java调用第三方接口【Content-type为form-data】的示例代码
有关Java调用第三方接口【Content-type为form-data】的示例代码
888 0
|
JSON Java fastjson
简单实现_实体类与Json字符串互相转换
简单实现_实体类与Json字符串互相转换
390 1
|
Java
java springboot 8080端口号冲突时 修改当前项目端口号
java springboot 8080端口号冲突时 修改当前项目端口号
650 0
|
消息中间件 RocketMQ 索引
RocketMQ消费者如何实现重平衡
RocketMQ消费者如何实现重平衡
772 0
|
消息中间件 Kafka RocketMQ
Kafka重平衡机制
当集群中有新成员加入,或者某些主题增加了分区之后,消费者是怎么进行重新分配分区再进行消费的?这里就涉及到重平衡(Rebalance)的概念,下面我就给大家讲解一下什么是 Kafka 重平衡机制,我尽量做到图文并茂通俗易懂。
1904 0
Kafka重平衡机制
|
SQL 算法 Java
分库分表(4)——ShardingJDBC原理和源码分析
分库分表(4)——ShardingJDBC原理和源码分析
1098 1
分库分表(4)——ShardingJDBC原理和源码分析
|
监控 Java Spring
spring通过监听事件记录系统日志
spring通过监听事件记录系统日志
html如何携带参数自动跳转页面
最近有一个项目,跳转页面的时候,不能让用户点击跳转,只能是页面A 自动跳转到页面B,并需要把页面A 的 用户Id :userId ,传递给页面 B。然后在页面B 内 根据传递过来的 用户Id userId 来进行操作:比如页面的刷新之类的。
569 1
html如何携带参数自动跳转页面
|
缓存 负载均衡 算法
Nginx实现负载均衡(整合SpringBoot小demo)
Nginx实现负载均衡(整合SpringBoot小demo)
602 4
Nginx实现负载均衡(整合SpringBoot小demo)
|
消息中间件 存储 监控
【Kafka从入门到成神系列 一】Kafka基本概述和架构
【Kafka从入门到成神系列 一】Kafka基本概述和架构
【Kafka从入门到成神系列 一】Kafka基本概述和架构