Contents
skywalking使用
阅读官方文档
https://skywalking.apache.org/docs/
因为目前技术栈主要是java, 所以关注其中 [SkyWalking Servers](https://skywalking.apache.org/docs/#SkyWalking Servers)和Java Agent这两块的文档
虽然是英文文档, 但是并不是那种晦涩的英文, 可以简单看下, 然后结合网上别人的教程或博客就可以上手使用起来.
最好手头有成型的项目,试着将skywalking的agent和log依赖加进去实践一下.
参阅一些博客与相关知识
参考: Java agent超详细知识梳理 注意: 由于skywalking的agent和IDE的debug都是基于agent的技术, 如果在IDE中以debug模式启动的带skywalking-agent的项目,可能出现agent启动失败的报错. 需要在IDE中run模式启动项目.
参考: SkyWalking 极简入门
下载skywalking的java-agent
下载
参考: https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/readme/
参考: https://skywalking.apache.org/downloads/
默认下载当前最新版
注意: 看了下 skywalking-server的版本说明,jdk要求最低17好像是.(反正java8已经不兼容了)
注意: 看了下skywalking-java-agent的版本说明, 最低要求java8.
注意: 默认使用h2内存数据库, 可以按需调整为mysql, elasticsearch等.
默认端口: 11800用于grpc通信(agent一般用这个), 12800用于restful接口通信(支持rest方式上报数据,但是用的少), 8080端口用于UI管理界面.
调整UI管理界面默认端口: 找到apache-skywalking-apm-bin\webapp\application.yml
,
调整
#serverPort: ${SW_SERVER_PORT:-8080}
serverPort: ${SW_SERVER_PORT:-9885}
或者 修改startup.bat或者startup.sh
set SW_SERVER_PORT=9885
配置
参考: https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/setup/service-agent/java-agent/Setting-override.html
对于在ide中运行的情况, 比如idea中运行
可以添加 vm选项
-Dskywalking.agent.service_name=vivachekcloud_10440 -Dskywalking.collector.backend_service=127.0.0.1:11800 -javaagent:C:/standalone/skywalking/skywalking-agent/skywalking-agent.jar

项目中增加skywalking的日志上报依赖
参考: https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/#grpc-reporter
依赖:
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-log4j-2.x</artifactId>
<version>{project.release.version}</version>
</dependency>
我手头的项目是log4j2作为日志实现
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<!-- 定义日志存放目录 -->
<properties>
<!-- ... -->
</properties>
<!--先定义所有的appender(输出器) -->
<Appenders>
<!-- ... -->
<!-- skywalking 日志上报 -->
<GRPCLogClientAppender name="grpc-log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</GRPCLogClientAppender>
</Appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
<Loggers>
<!--建立一个默认的Root的logger,记录大于level高于warn的信息,如果这里的level高于Appenders中的,则Appenders中也是以此等级为起点,比如,这里level="fatal",则Appenders中只出现fatal信息 -->
<!-- 生产环境level>=warn -->
<!-- level日志级别: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF -->
<!-- root的作用,首先会匹配root的级别,只有到root的级别,才会继续去配置的appender里去查找,理解的话,就是root是最外层的过滤器-->
<!-- logj42会先匹配是否符合Logger/Root的level,如果符合的话,再一一匹配Logger/Root下的AppenderRef的level是否匹配。-->
<Root level="DEBUG">
<appender-ref ref="grpc-log"/>
</Root>
<!--项目日志级别DEBUG-->
<logger name="com.vivachek.cloud" level="DEBUG"/>
<!-- ... -->
</Loggers>
</Configuration>
发表回复