skwalking在kubernetes中针对服务分组

avatar 2023年10月18日18:14:37 评论 612 次浏览

在kubernetes中,有很多服务都需要做链路追踪,这里选择的是skwalking,不过同一个namespaces下还好,因为服务名称都不一样,在skwalking中可以针对不同的服务名查找,如果多个namespaces下多个服务同时使用skwalking就需要针对服务所属的namespaces做分组了。举个简单例子:有一个服务wulaoer,在两个namespaces下,这种情况在kubernetes中是可以存在的,如果不分组在skwalking中就会发现只有一个服务,但是追踪的数据内容无法分清是那个namespaces下的,所以我们需要针对每个服务加一个namespces的标签,这样可以确定是那个namespaces下的服务,看一下我的操作。

 java \${JAVA_OPTS} -javaagent:/opt/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=${K8S_NAMESPACE}::${item} -Dskywalking.collector.backend_service=skywalking.skywalking:11800  -XX:+UseContainerSupport -XX:InitialRAMPercentage=50.0 -XX:MaxRAMPercentage=50.0 -XX:MinRAMPercentage=50.0 -Dlog4j2.formatMsgNoLookups=true -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -jar /apps/works/server/${item}.jar"   

这个是我的服务启动的命令,这里针对skwalking的部分只有

 -javaagent:/opt/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=${K8S_NAMESPACE}::${item} -Dskywalking.collector.backend_service=skywalking.skywalking:11800

在这里我定义了变量K8S_NAMESPACE和item,前者是k8s的namespaces后者是服务的名称。这样在启动参数中定义后,在skwalking中查看的时候就会有一个K8S_NAMESPACE变量的组,然后在K8S_NAMESPACE组下有服务。不管是相同的还是不通的,首先是namespaces不能相同,这样就可以把所有服务进行分开。在skwalking中就不会分不清那个是那个服务以及数据了。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: