Skywalking Learning

Skywalking Learning

下载安装:

TIP:

  • JDK版本在JDK 8 - JDK 12之间
    • 注意:如使用 ElasticSearch7 的版本,那么需要 JDK 11+
  • 确保如下端口可用:
    • 11800:和Skywalking通信的gRPC端口
    • 12800:和Skywalking通信的HTTP端口
    • 8080:UI所占用的端口

一、集群安装

1、下载安装包

最新版本下载地址:http://skywalking.apache.org/downloads/

历史版本下载地址:https://archive.apache.org/dist/skywalking/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yYCDZKuS-1604998823736)(/Users/mbw/Library/Application Support/typora-user-images/image-20201109182223112.png)]

2、上传并解压文件:
# 切换到对应安装目录,并执行解压操作
# 对解压文件进行重命名,此操作非必要
tar -zxvf apache-skywalking-apm-6.6.0.tar.gz
mv apache-skywalking-apm-bin skywalking-6.6.0

3、安装ES集群

配置Es集群:详见ES集群配置资料

demo:在服务器172.16.203.77 172.16.203.78 172.16.203.79分别安装es,并配置为集群架构

172.16.203.77:9200,172.16.203.78:9200,172.16.203.79:9200

4、修改SkyWalking配置文件:

application.yml配置修改

vim ...../skywalking/config/application.yml


1、其中 gRPCHost改成本机服务器IP
core:
  selector: ${SW_CORE:default}
  default:
    gRPCHost: ${SW_CORE_GRPC_HOST:172.16.203.77} # 指定本机IP
    
2、其中存储为es
storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    nameSpace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:172.16.203.77:9200,172.16.203.78:9200,172.16.203.79:9200} # 执行ES集群地址,TIP:可以为单节点

collector 集群

# 在不同机器上启动Collector
demo:172.16.203.76 172.16.203.77 172.16.203.78
TIP:将上述解压配置文件分配到三台服务器对应目录,并将上述application.yml文件中gRPCHost: ${SW_CORE_GRPC_HOST:172.16.203.77}进行相应修改
# 分别在三台服务器中执行启动命令:
cd /usr/local/skywalking/bin/sh oapService.sh

dashboard配置及启动

  • 配置文件修改:…/skywalking/webapp/webapp.yml
vim ...../skywalking/webapp/webapp.yml

server:
  port: 18080 #web端口

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 172.16.203.76:12800,172.16.203.77:12800,172.16.203.78:12800 # 配置collector地址
  • 启动dashboard
cd ..../skywalking/bin/
./webappService.sh 
  • **停止skywalking web **
ps -ef|grep skywalking-webapp
    kill -9 pid
5、访问web:

http://IP:18080/,出现如下界面,表示安装配置成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJPRgCsw-1604998823737)(/Users/mbw/Library/Application Support/typora-user-images/image-20201109183616669.png)]

二、单机安装:

1、下载安装包

最新版本下载地址:http://skywalking.apache.org/downloads/

历史版本下载地址:https://archive.apache.org/dist/skywalking/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GjV9Oxd-1604998823739)(/Users/mbw/Library/Application Support/typora-user-images/image-20201109182223112.png)]

2、上传并解压文件:
# 切换到对应安装目录,并执行解压操作
# 对解压文件进行重命名,此操作非必要
tar -zxvf apache-skywalking-apm-6.6.0.tar.gz
mv apache-skywalking-apm-bin skywalking-6.6.0

3、安装ES集群

配置Es集群:详见ES集群配置资料

demo:在服务器172.16.203.77 172.16.203.78 172.16.203.79分别安装es,并配置为集群架构

172.16.203.77:9200,172.16.203.78:9200,172.16.203.79:9200

4、修改SkyWalking配置文件:

application.yml配置修改

vim ...../skywalking/config/application.yml


1、其中 gRPCHost改成本机服务器IP
core:
  selector: ${SW_CORE:default}
  default:
    gRPCHost: ${SW_CORE_GRPC_HOST:172.16.203.77} # 指定本机IP
    
2、其中存储为es
storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    nameSpace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:172.16.203.77:9200,172.16.203.78:9200,172.16.203.79:9200} # 执行ES集群地址,TIP:可以为单节点
5、dashboard配置及启动*
  • 配置文件修改:…/skywalking/webapp/webapp.yml
vim ...../skywalking/webapp/webapp.yml

server:
  port: 18080 #web端口

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 172.16.203.77:12800 # 配置collector地址

启动

cd apache-skywalking-apm-bin/bin
sh startup.sh

Skywalking使用

配置 java agent

  • 找到SkyWalking包中的 agent 目录,agent目录结构如下

    +-- agent
        +-- activations
             apm-toolkit-log4j-1.x-activation.jar
             apm-toolkit-log4j-2.x-activation.jar
             apm-toolkit-logback-1.x-activation.jar
             ...
        +-- config
             agent.config  
        +-- plugins
             apm-dubbo-plugin.jar
             apm-feign-default-http-9.x.jar
             apm-httpClient-4.x-plugin.jar
             .....
        skywalking-agent.jar
    
  • agent 目录拷贝到任意位置

  • 配置 config/agent.config

    • agent.service_name 修改成你的微服务名称;
    • 如果Skywalking和微服务部署在不同的服务器,还需修改 collector.backend_service 的值,该配置用来指定微服务和Skywalking通信的地址,默认是 127.0.0.1:11800 ,按需修改即可。当然 agent.config 文件里面有很多的配置,本文下面的表格有详细讲解。

配置属性

属性名描述默认值
agent.namespace命名空间,用于隔离跨进程传播的header。如果进行了配置,header将为HeaderName:Namespace.未设置
agent.service_name在SkyWalking UI中展示的服务名。5.x版本对应Application,6.x版本对应Service。 建议:为每个服务设置个唯一的名字,服务的多个服务实例为同样的服务名Your_ApplicationName
agent.sample_n_per_3_secs负数或0表示不采样,默认不采样。SAMPLE_N_PER_3_SECS表示每3秒采样N条。未设置
agent.authentication鉴权是否开启取决于后端的配置,可查看application.yml的详细描述。对于大多数的场景,需要后端对鉴权进行扩展。目前仅实现了基本的鉴权功能。未设置
agent.span_limit_per_segment单个segment中的span的最大个数。通过这个配置项,Skywalking可评估应用程序内存使用量。300
agent.ignore_suffix如果这个集合中包含了第一个span的操作名,这个segment将会被忽略掉。未设置
agent.is_open_debugging_class如果为true,skywalking会将所有经Instrument转换过的类文件保存到/debugging文件夹下。Skywalking团队会要求你提供这些类文件以解决兼容性问题。未设置
agent.active_v2_header是否默认使用v2版本的header。true
agent.instance_uuid实例id。skywalking会将实例id相同的看做一个实例。如果为空,skywalking agent会生成一个32位的uuid。""
agent.instance_properties[key]=value添加服务实例的定制属性。未设置
agent.cause_exception_depthagent记录的异常时,代理进入的深度5
agent.active_v1_header是否默认使用v1版本的header。false
agent.cool_down_threshold收到reset命令后,代理应等待多久(以分钟为单位)才能重新注册到OAP服务器。10
agent.force_reconnection_period根据grpc_channel_check_interval强制重新连接grpc。1
agent.operation_name_thresholdoperationName最大长度,不建议将此值设置为> 500。500
collector.grpc_channel_check_interval检查grpc的channel状态的时间间隔。30
collector.app_and_service_register_check_interval检查应用和服务的注册状态的时间间隔。3
collector.backend_service接收skywalking trace数据的后端地址127.0.0.1:11800
collector.grpc_upstream_timeoutgrpc客户端向上游发送数据时的超时时间,单位秒。30
logging.level日志级别。默认为debug。DEBUG
logging.file_name日志文件名skywalking-api.log
logging.output日志输出,默认FILE。CONSOLE表示输出到stdout。FILE
logging.dir日志目录。默认为空串,表示使用”system.out”输出日志。""
logging.pattern日志记录格式。所有转换说明符: * %level 表示日志级别。 * %timestamp 表示现在的时间,格式yyyy-MM-dd HH:mm:ss:SSS。 * %thread 表示当前线程的名称。 * %msg 表示消息。 * %class 表示TargetClass的SimpleName。 * %throwable 表示异常。 * %agent_name 表示agent.service_name%level %timestamp %thread %class : %msg %throwable
logging.max_file_size日志文件的最大大小。当日志文件大小超过这个数,归档当前的日志文件,将日志写入到新文件。300 * 1024 * 1024
logging.max_history_files最大历史记录日志文件。发生翻转时,如果日志文件超过此值,则最早的文件将被删除。默认情况下,负数或零表示关闭。-1
jvm.buffer_size收集JVM信息的buffer的大小。60 * 10
buffer.channel_sizebuffer的channel大小。5
buffer.buffer_sizebuffer的大小300
dictionary.service_code_buffer_sizeThe buffer size of application codes and peer10 * 10000
dictionary.endpoint_name_buffer_sizeThe buffer size of endpoint names and peer1000 * 10000
plugin.peer_max_lengthPeer最大描述限制200
plugin.mongodb.trace_param如果为true,记录所有访问MongoDB的参数信息。默认为false,表示仅记录操作名,不记录参数信息。false
plugin.mongodb.filter_length_limit如果设为正数,WriteRequest.params 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。256
plugin.elasticsearch.trace_dsl如果为true,记录所有访问ElasticSearch的DSL信息。默认为false。false
plugin.springmvc.use_qualified_name_as_endpoint_name如果为true,endpoint的name为方法的全限定名,而不是请求的URL。默认为false。false
plugin.toolit.use_qualified_name_as_operation_name如果为true,operation的name为方法的全限定名,而不是给定的operation name。默认为false。false
plugin.mysql.trace_sql_parameters如果设置为true,则将收集sql的参数(通常为java.sql.PreparedStatement)。false
plugin.mysql.sql_parameters_max_length如果设置为正数,db.sql.parameters 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。512
plugin.postgresql.trace_sql_parameters如果设置为true,则将收集sql的参数(通常为java.sql.PreparedStatement)。false
plugin.postgresql.sql_parameters_max_length如果设置为正数,db.sql.parameters 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。512
plugin.solrj.trace_statement如果为true,则在Solr查询请求中跟踪所有查询参数(包括deleteByIds和deleteByQuery)false
plugin.solrj.trace_ops_params如果为true,则跟踪Solr请求中的所有操作参数false
plugin.light4j.trace_handler_chain如果为true,请跟踪Light4J的请求的所有中间件/业务handler。false
plugin.opgroup.*支持操作名称自定义不同插件中的组的规则。详见 支持组规则的插件未设置
plugin.springtransaction.simplify_transaction_definition_name设为true,则简化事务定义名称。false
plugin.jdkthreading.threading_class_prefixes将对名称与任意一个 THREADING_CLASS_PREFIXES (多个使用 , 分隔)匹配的线程化类( java.lang.Runnablejava.util.concurrent.Callable )及其子类进行 Instrument,请确保仅将窄前缀指定为您希望Instrument的前缀(安全考虑, java.javax. 将被忽略)未设置

Java Agent配置方式

agent配置有多种姿势,上面修改 agent.config 文件中的值,只是其中一种。下面专门探讨agent支持的配置方式。

系统属性(-D)

使用 -Dskywalking. + agent.config配置文件中的key 即可。例如:

agent.config 文件中有一个属性名为 agent.service_name ,那么如果使用系统属性的方式,则可以写成

java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=你想设置的值 -jar somr-spring-boot.jar
代理选项

在JVM参数中的代理路径之后添加属性即可。格式:

-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]

例如:

java -javaagent:/opt/agent/skywalking-agent.jar=agent.service_name=你想设置的值 -jar somr-spring-boot.jar
系统环境变量

agent.config 文件中默认的大写值,都可以作为环境变量引用。例如,agent.config 中有如下内容

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

这说明Skywalking会读取名为 SW_AGENT_NAME 的环境变量。

优先级
代理选项` > `系统属性(-D)` > `系统环境变量` > `配置文件

启动应用

java -jar 启动的应用
  • 执行如下命令启动
# 注意-javaagent得在-jar之前哦
java -javaagent:/opt/agent/skywalking-agent.jar -jar somr-spring-boot.jar
  • idea

img

Java Agent插件

Java Agent是插件化、可插拔的。Skywalking的插件分为三种:

  • 引导插件:在agent的 bootstrap-plugins 目录下
  • 内置插件:在agent的 plugins 目录下
  • 可选插件:在agent的 optional-plugins 目录下

Java Agent只会启用 plugins 目录下的所有插件,bootstrap-plugins 目录以及 optional-plugins 目录下的插件不会启用。如需启用引导插件或可选插件,只需将JAR包移到 plugins 目录下,如需禁用某款插件,只需从 plugins 目录中移除即可。

插件生态
引导插件

目前只有两款引导插件:

  • apm-jdk-http-plugin 用来是监测HttpURLConnection;
  • apm-jdk-threading-plugin 用来监测Callable以及Runnable;

有关引导插件的功能描述,可详见: https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md#bootstrap-class-plugins

内置插件

内置插件主要用来为业界主流的技术与框架提供支持。所支持的技术&框架,详见 https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/Supported-list.md

可选插件

关于可选插件的功能描述,可详见 https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md

插件扩展

Skywalking生态还有一些插件扩展,例如Oracle、Resin插件等。这部分插件主要是由于许可证不兼容/限制,Skywalking无法将这部分插件直接打包到Skywalking安装包内,于是托管在这个地址: https://github.com/SkyAPM/java-plugin-extensions ,使用方式:

  • 前往 https://github.com/SkyAPM/java-plugin-extensions/releases ,下载插件JAR包
  • 将JAR包挪到 plugins 目录即可启用。

参考资料

https://blog.csdn.net/qq_27384769/article/details/107944637

周立的博客:http://www.itmuch.com/skywalking/skywalking-install/

调用链路选型:

https://www.jianshu.com/p/0fbbf99a236e

https://blog.csdn.net/zhuyu19911016520/article/details/106782827

https://www.jianshu.com/p/4fa81b661f55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值