您的位置:

SkyWalkingK8s:分布式跟踪系统的理想之选

分布式系统跟踪是一个重要的领域,它允许我们快速找到系统性能问题的根源。根据贷方咨询公司Gartner的研究报告指出,在全球90%的企业中至少存在一个分布式应用程序,而跨应用跟踪技术可以节省不必要的时间,增强问题排查效率,并在开发、测试和生产上实现更快速的跨系统转换。

一、什么是SkyWalkingK8s?

SkyWalkingK8s是一个分布式跟踪系统,可以在分布式应用程序中进行追踪,并将所有组件和服务的指标聚合在一起,从而提供全面的跟踪和分析功能。 SkyWalkingK8s最初是Apache Incubator项目SkyWalking的一个扩展,经过一段时间的发展和迭代,已成为独立的项目。

二、SkyWalkingK8s的特点

SkyWalkingK8s是一个高度可扩展的系统,它提供了以下特性:

1. 完整的跟踪和监控能力

通过SkyWalkingK8s,您可以追踪应用程序中的每个请求,以及应用程序的每个组件的性能。该系统提供了多个监控图表,以让您深入了解整个应用程序的健康状况和性能。

2. 清晰的架构

SkyWalkingK8s的构架易于理解和使用。它采用插件化设计,您可以根据自己的需要选择启用或禁用某些插件。此外,该系统还提供了大量的API,方便您自定义使用。

3. 高度可扩展

SkyWalkingK8s可以与大范围的框架、组件和应用程序集成。因此,无论您使用什么编程语言和应用框架,都可以很容易地将其纳入到您的分布式跟踪系统中。

4. 友好的用户界面

SkyWalkingK8s提供了一个易于使用、直观明了的用户界面,可以查询和分析所有跟踪数据。为了适应不同的用户,该系统提供了基于菜单与图表的分析指标,这可以帮助您更好地监控所有配套信息。

三、SkyWalkingK8s示例代码

1. 安装SkyWalkingK8s服务器端


apiVersion: apps/v1
kind: Deployment
metadata:
  name: skywalking-oap
  namespace: skywalking
  labels:
    app.kubernetes.io/name: skywalking-oap
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: skywalking-oap
  template:
    metadata:
      labels:
        app.kubernetes.io/name: skywalking-oap
    spec:
      containers:
        - name: skywalking
          image: apache/skywalking-oap-server:latest
          readinessProbe:
            tcpSocket:
              port: 12800
            initialDelaySeconds: 20
            periodSeconds: 5
          ports:
            - containerPort: 12800
              protocol: TCP
            - containerPort: 11800
              protocol: UDP
          volumeMounts:
            - name: configs
              mountPath: /opt/skywalking/config
          livenessProbe:
            httpGet:
              path: /status
              port: 12800
            initialDelaySeconds: 20
            periodSeconds: 5
          resources:
            limits:
              cpu: 1000m
              memory: 512Mi
            requests:
              cpu: 100m
              memory: 256Mi
  volumeClaimTemplates:
    - metadata:
        name: storage
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 100Gi

2. 创建SkyWalkingK8s的UI


apiVersion: apps/v1
kind: Deployment
metadata:
  name: skywalking-ui
  labels:
    app.kubernetes.io/name: skywalking-ui
  namespace: skywalking
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: skywalking-ui
  template:
    metadata:
      labels:
        app.kubernetes.io/name: skywalking-ui
    spec:
      containers:
        - name: skywalking-ui
          image: apache/skywalking-ui
          resources:
            limits:
              cpu: "1000m"
              memory: "1Gi"
            requests:
              cpu: "500m"
              memory: "256Mi"
          env:
            - name: SW_OAP_ADDRESS
              value: skywalking-oap-skywalking:12800
          ports:
            - containerPort: 80
              name: http
---
apiVersion: v1
kind: Service
metadata:
  name: skywalking-ui
  labels:
    app.kubernetes.io/name: skywalking-ui
  namespace: skywalking
spec:
  selector:
    app.kubernetes.io/name: skywalking-ui
  ports:
    - name: http
      port: 80
      protocol: TCP

四、结语

SkyWalkingK8s可以为您提供一个完整的、可扩展的分布式跟踪系统,帮助您管理大规模应用程序的性能。该系统拥有清晰的架构,易于使用、友好的用户界面,使其成为理想的选择。