商城网站怎么做的,洛阳网络公司排名,宁波外贸公司招聘信息,运城做网站要多少钱rabbitmq整合skywalking
首先先下载准备好skywalking 的服务端和ui控制台#xff0c;java-agent
https://skywalking.apache.org/downloads/ 整合skywalking
我的流程是在生产者和消费者服务中去引入一个mq的sdk#xff0c;具体SDK的内容可以查看这篇文章
在sdk的pom文件…rabbitmq整合skywalking
首先先下载准备好skywalking 的服务端和ui控制台java-agent
https://skywalking.apache.org/downloads/ 整合skywalking
我的流程是在生产者和消费者服务中去引入一个mq的sdk具体SDK的内容可以查看这篇文章
在sdk的pom文件中引入了skywalking依赖
!-- skywalking --
dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-logback-1.x/artifactIdversion9.3.0/version
/dependency
dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-trace/artifactIdversion9.3.0/version
/dependency引入之后进行logback的配置也可能你们是使用log4j这些配置自行百度就行
生产者logback.xml配置
?xml version1.0 encodingUTF-8?
configurationconversionRule conversionWordtid converterClassorg.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter/!-- 日志存放路径 --property namelog.path valuelogs/sms-platform /!-- 日志输出格式 --property namelog.pattern value%d{HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n /!-- 控制台输出 --appender nameconsole classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutPattern${log.pattern}/Pattern/layout/encoder/appender!-- 系统日志输出 --appender namefile_info classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-info.log/file!-- 循环政策基于时间创建日志文件 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志文件名格式 --fileNamePattern${log.path}/sys-info.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern${log.pattern}/Pattern/layout/encoderfilter classch.qos.logback.classic.filter.LevelFilter!-- 过滤的级别 --levelINFO/level!-- 匹配时的操作接收记录 --onMatchACCEPT/onMatch!-- 不匹配时的操作拒绝不记录 --onMismatchDENY/onMismatch/filter/appenderappender namefile_error classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-error.log/file!-- 循环政策基于时间创建日志文件 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志文件名格式 --fileNamePattern${log.path}/sys-error.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern${log.pattern}/Pattern/layout/encoderfilter classch.qos.logback.classic.filter.LevelFilter!-- 过滤的级别 --levelERROR/level!-- 匹配时的操作接收记录 --onMatchACCEPT/onMatch!-- 不匹配时的操作拒绝不记录 --onMismatchDENY/onMismatch/filter/appender!-- 用户访问日志输出 --appender namesys-user classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-user.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 按天回滚 daily --fileNamePattern${log.path}/sys-user.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern${log.pattern}/Pattern/layout/encoder/appenderappender namegrpc classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder/appender!-- 系统模块日志级别控制 --logger namecom.aasee levelinfo /!-- Spring日志级别控制 --logger nameorg.springframework levelwarn /root levelinfoappender-ref refconsole /appender-ref refgrpc//root!--系统操作日志--root levelinfoappender-ref reffile_info /appender-ref reffile_error //root!--系统用户操作日志--logger namesys-user levelinfoappender-ref refsys-user//logger
/configuration 消费者logback.xml配置
?xml version1.0 encodingUTF-8?
configurationconversionRule conversionWordtid converterClassorg.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter/!-- 日志存放路径 --property namelog.path valuelogs/sms-consumer /!-- 日志输出格式 --property namelog.pattern value%d{HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n /!-- 控制台输出 --appender nameconsole classch.qos.logback.core.ConsoleAppenderencoderpattern${log.pattern}/pattern/encoder/appenderappender namegrpc classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder/appender!-- 系统日志输出 --appender namefile_info classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-info.log/file!-- 循环政策基于时间创建日志文件 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志文件名格式 --fileNamePattern${log.path}/sys-info.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoderpattern${log.pattern}/pattern/encoderfilter classch.qos.logback.classic.filter.LevelFilter!-- 过滤的级别 --levelINFO/level!-- 匹配时的操作接收记录 --onMatchACCEPT/onMatch!-- 不匹配时的操作拒绝不记录 --onMismatchDENY/onMismatch/filter/appenderappender namefile_error classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-error.log/file!-- 循环政策基于时间创建日志文件 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志文件名格式 --fileNamePattern${log.path}/sys-error.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoderpattern${log.pattern}/pattern/encoderfilter classch.qos.logback.classic.filter.LevelFilter!-- 过滤的级别 --levelERROR/level!-- 匹配时的操作接收记录 --onMatchACCEPT/onMatch!-- 不匹配时的操作拒绝不记录 --onMismatchDENY/onMismatch/filter/appender!-- 用户访问日志输出 --appender namesys-user classch.qos.logback.core.rolling.RollingFileAppenderfile${log.path}/sys-user.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 按天回滚 daily --fileNamePattern${log.path}/sys-user.%d{yyyy-MM-dd}.log/fileNamePattern!-- 日志最大的历史 60天 --maxHistory60/maxHistory/rollingPolicyencoderpattern${log.pattern}/pattern/encoder/appender!-- 系统模块日志级别控制 --logger namecom.aasee levelinfo /!-- Spring日志级别控制 --logger nameorg.springframework levelwarn /root levelinfoappender-ref refconsole /appender-ref refgrpc//root!--系统操作日志--root levelinfoappender-ref reffile_info /appender-ref reffile_error //root!--系统用户操作日志--logger namesys-user levelinfoappender-ref refsys-user//logger
/configuration 发现问题
在完成了上述配置之后启动项目我发现消费者一直无法打印tid始终为n/a经过一番查询后发现原来skywalking官方提供的消费插件不适合我们其只针对官方原生Client实现扩展但我们一般都是使用Spring Rabbitmq stater所以我们无法实现链路追踪。RabbitListener的工作原理可以看这篇文章https://blog.csdn.net/m0_72397750/article/details/140558744
总的来说就是我们一般使用注解来实现监听的那么手动埋点就应该埋在开始处理消息的executeListener()方法这 将消息头复制回来 详细的代码我放在了https://github.com/Aas-ee/skywalking-apm-sniffer 注释很详细 里面还有skywalking-rabbitmq的官方插件代码可以用来对照学习可以拉取后直接打成jar包放到skywalking-agent/plugin目录下使用觉得有用的话麻烦点点star这对我很重要同时对于callback的打印也做了增强但是不一定适用大家主要用于学习思想和原理。