k8s 微服务接入 skywalking

参考官网:https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/containerization/#docker

SkyWalking 的数据采集主要是通过业务探针(Agent)来实现的,针对不同的编程语言 SkyWalking 提供了对应的 Agent 实现。

Java微服务接入SkyWalking的方式

需要Java微服务在部署启动的过程中需要获取 SkyWalking Java Agent 探针包,并在启动参数中通过 --javaagent:xxx 进行参数指定。而具体的集成方式大致有以下三种:

  • 使用官方提供的基础镜像;
  • 将agent包构建到已存在的基础镜像中;
  • 通过 sidecar 模式挂载agent;

sidecar 模式进行接入

这种方式Dockerfile不需要做任何修改

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qz-music-song-java
spec:
    spec:
      initContainers:
        - name: agent-container
          image: apache/skywalking-java-agent:9.3.0-alpine
          volumeMounts:
            - name: skywalking-agent
              mountPath: /agent
          command: ["/bin/sh"]
          args: ["-c", "cp -R /skywalking/agent /agent/"]

      containers:
        - name: qz-music-song-java
          image: springio/qz-music-song-java:latest
          env:
            - name: JAVA_TOOL_OPTIONS
              value: "-javaagent:/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=qz-music-song-java -Dskywalking.collector.backend_service=skywalking-oap:11800"
          volumeMounts:
            - name: skywalking-agent
              mountPath: /skywalking

      volumes:
        - name: skywalking-agent
          emptyDir: {}
  • emptyDir volume:用于挂载 SkyWalking agent。
  • initContainers:用于在启动应用容器之前将 SkyWalking agent 从 sidecar 容器拷贝到 emptyDir volume 中。
  • JAVA_TOOL_OPTIONS:在主容器中设置 SkyWalking agent 的配置,指定 agent 路径、服务名称和 OAP 服务地址。

配置完,服务启动就接入成功啦

image.png

接入成功后,es会有如下索引

sw_browser_error_log:前端应用的浏览器错误日志。
sw_log:后端应用的业务日志。
sw_management:服务管理元数据。
sw_metrics-all:服务性能指标数据。
sw_segment:分布式追踪片段数据。
sw_zipkin_span:通过 Zipkin 上报的分布式追踪数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容