1、下载对应版本的 apm 和 agents
注意:高版本agents需要单独下载。
2、解压apm,启动服务
bin目录下有对应 start.bat start.sh启动脚本,默认使用 h2存储数据,启动后会有8080、11800、12800端口,8080是UI访问端口,11800、12800是数据收集端口,11800、12800可以在config下application.yml中修改。8080可以在webapp下webapp.yml中修改。
3、新建java项目,使用logback上传处理后日志
logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --> <configuration scan="true" scanPeriod="10 seconds"> <contextName>logback</contextName> <!-- 输出到控制台 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!-- 此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <Pattern> %black(%d{ISO8601}) [%tid] %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%blue(%t)] %yellow(%C{1.}):%msg%n%throwable </Pattern> </layout> <charset>UTF-8</charset> </encoder> </appender> <!-- 增加配置日志收集 --> <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern> </layout> </encoder> </appender> <!--输出到文件--> <!-- 时间滚动输出 level为 INFO 日志 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>./data/log/skywalking-app/log_info.log</file> <!--日志文件输出格式--> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <Pattern> %black(%d{ISO8601}) [%tid] %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable </Pattern> </layout> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天日志归档路径以及格式 --> <fileNamePattern>./data/log/skywalking-app/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天数--> <maxHistory>15</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> </appender> <!-- 时间滚动输出 level为 ERROR 日志 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>./data/log/skywalking-app/log_error.log</file> <!--日志文件输出格式--> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <Pattern> %black(%d{ISO8601}) [%tid] %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable </Pattern> </layout> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>./data/log/skywalking-app/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 日志文件保留天数【根据服务器预留,可自行调整】 --> <maxHistory>7</maxHistory> <totalSizeCap>5GB</totalSizeCap> </rollingPolicy> <!-- WARN 级别及以上 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </filter> </appender> <!-- 异步输出 --> <appender name="ASYNC_FILE_INFO" class="ch.qos.logback.classic.AsyncAppender"> <!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>8192</queueSize> <!-- neverBlock:true 会丢失日志,但业务性能不受影响 --> <neverBlock>true</neverBlock> <!--是否提取调用者数据--> <includeCallerData>false</includeCallerData> <appender-ref ref="INFO_FILE"/> </appender> <appender name="ASYNC_FILE_ERROR" class="ch.qos.logback.classic.AsyncAppender"> <!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>1024</queueSize> <!-- neverBlock:true 会丢失日志,但业务性能不受影响 --> <neverBlock>true</neverBlock> <!--是否提取调用者数据--> <includeCallerData>false</includeCallerData> <appender-ref ref="ERROR_FILE"/> </appender> <!-- 开发环境:控制台打印 --> <springProfile name="dev"> <logger name="com.nmys.view" level="debug"/> </springProfile> <root level="info"> <appender-ref ref="CONSOLE"/> <!-- 增加配置日志收集 --> <appender-ref ref="grpc-log"/> <!-- 异步日志-INFO --> <appender-ref ref="ASYNC_FILE_INFO"/> <!-- 异步日志-ERROR --> <appender-ref ref="ASYNC_FILE_ERROR"/> </root> </configuration>
4、启动项目,配置启动参数
选择 Add VM options
-javaagent:D:/skywalking-master/docs/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-app-dev
-Dskywalking.collector.backend_service=127.0.0.1:11800
4、显示查看
访问业务接口,控制台查看日志
TID:0e39ab7d6c7a46eda2d483112d880b6d.55.17446035586120001
访问apm对应UI端口,进行上报日志查看。
5、注意事项
5.1 服务器存储可以使用h2、mysql、es等,如果使用mysql时,apm对应oap-libs默认没有mysql驱动包,需要手动拷贝mysql驱动包到 apm对应的oap-libs目录下。mysql-connector-java jar包的版本需要与数据库的版本保持一致。
5.2 apm服务所在服务器时间要正确,采用上海时区,否则会引起不必要的弯路,导致在页面上以时间条件搜索日志结果与预期结果不同。