skywalking的介紹


Skywalking是一個分布式系統的應用程序性能監視工具,專為微服務、雲原生架構和基於容器(Docker、K8s、Mesos)架構而設計。SkyWalking 是觀察性分析平台和應用性能管理系統。提供分布式追蹤、服務網格遙測分析、度量聚合和可視化一體化解決方案。支持Java, .Net Core, PHP, NodeJS, Golang, LUA語言探針,支持Envoy + Istio構建的Service Mesh。

skywalking四個模塊

  1. skywalking agent和業務系統綁定在一起,負責收集各種監控數據
  2. skywalking oapservice是負責處理監控數據的,比如接受skywalking agent的監控數據,並存儲在數據庫中(本案例使用elasticsearch);接受skywalking webapp的前端請求,從數據庫查詢數據,並返回數據給前端。Skywalking oapservice通常以集群的形式存在。
  3. skywalking webapp,前端界面,用於展示數據。
  4. 用於存儲監控數據的數據庫,比如mysql、elasticsearch等。

模塊之間的關系

skywalking部署到k8s

es7

cat >  elasticsearch-single.yaml  << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch-single
  namespace: efk
  labels:
    k8s-app: elasticsearch-single
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: elasticsearch-single
  template:
    metadata:
      labels:
        k8s-app: elasticsearch-single
    spec:
      containers:
      - image: elasticsearch:7.12.0
        name: elasticsearch-single
        resources:
          limits:
            cpu: 2
            memory: 3Gi
          requests:
            cpu: 0.5 
            memory: 500Mi
        env:
          - name: "discovery.type"
            value: "single-node"
          - name: ES_JAVA_OPTS
            value: "-Xms512m -Xmx2g" 
        ports:
        - containerPort: 9200
          name: db
          protocol: TCP
        volumeMounts:
        - name: elasticsearch-data
          mountPath: /usr/share/elasticsearch/data
      volumes:
      - name: elasticsearch-data
        persistentVolumeClaim:
          claimName: es-pvc

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: es-pvc
  namespace: efk
spec:
#指定動態PV 名稱
  storageClassName: "elastic-nfs-client"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

---

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-single
  namespace: efk
spec:
  ports:
  - port: 9200
    protocol: TCP
    targetPort: 9200
  selector:
    k8s-app: elasticsearch-single
EOF

kubectl apply -f elasticsearch-single.yaml 

安裝 helm

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

初始化 skywalking 的 charts 配置

# clone helm 倉庫
git clone https://github.com/apache/skywalking-kubernetes
cd skywalking-kubernetes/chart

# 即使使用外部 ES 也要添加這個 repo,否則會導致依賴錯誤
helm repo add elastic https://helm.elastic.co
helm dep up skywalking

# 創建 skywalking 的 namespace
kubectl create namespace skywalking

配置 skywalking 的 vaules 配置參數

初始化完成后需要自行調整配置文件,配置 oap-server 使用外部 ES,當然你也可以使用 values 自帶的 es 的配置示例,這里不做過多介紹

cat > skywalking/values-my-es-01.yaml <<EOF
oap:
  image:
    tag: 8.4.0-es7 
  storageType: elasticsearch7

ui:
  image:
    tag: 8.4.0
  service:
    type: NodePort
    externalPort: 80
    internalPort: 8080
    nodePort: 30008
elasticsearch:
  enabled: false
  config: 
    host: elasticsearch-single.efk
    port:
      http: 9200
    #user: ""         # [optional]
    #password: "xxx"     # [optional]
EOF

5.4 helm 安裝 skywalking 8.4.0

helm install skywalking skywalking -n  skywalking  -f ./skywalking/values-my-es-01.yaml

# 卸載
helm uninstall skywalking -n skywalking

# 查看進度
kubectl get pod -n skywalking -w


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM