skywalking8.1.0(一) 安裝與部署
skywalking部署
背景介紹
目前公司後端服務全部為微服務並執行在kubernetes叢集上,而大量的微服務的背後擁有很複雜的呼叫關係,縱使你是公司的資深開發也很難理清每一個後端服務之間的依賴關係,並且隨著公司的發展,服務數量的增加以及內部呼叫鏈的複雜化,僅憑日誌監控和基礎服務監控是很難做到“See the Whole Picture”, 這個時候skywalking的出現剛剛好可以解決我們目前的問題。
簡介
skywalking又稱應用程式效能管理(APM)工具,它和日誌管理工具都具有相同的底線目標:它們可以幫助你更深入地瞭解應用程式中正在發生的事情。儘管目標相似,但執行方式卻不同,並且每個目標都專注於應用程式中的不同方面。
APM工具提供有關應用程式效能的分析。這些分析可以包括執行程式碼中不同elements所花費的時間,完成某些事務所需的時間等等。
這些工具還使我們能夠監視生產環境,應用程式負載(事務,請求和每秒的頁面數),計算響應時間以及可能導致延遲響應的總體方向。 。
安裝服務端
本片文件使用helm安裝部署skywalking。
下載最新版chart 3.1
下載地址: https://mirror.bit.edu.cn/apache/skywalking/kubernetes/3.1.0/skywalking-3.1.0.tgz
$ tar xf skywalking-3.1.0.tgz$ cd skywalking
編輯value.yaml檔案(如果不是生產環境,可適當縮小資源)
# 注: 修改完pod資源大小,別忘了調整-Xmx和-Xms引數,大小可以給到2/3 左右
```
... elasticsearch: ... resources: requests: cpu: 4 memory: 8 limits: cpu: 4 memory: 8 ...
```
配置ES資料持久化
建立storageclass
注:不同雲廠商提供的配置引數可能不同,按需而定,以阿里云為例:
$ cat ./storage-class.yamlkind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: skywalking-disk-ssd provisioner: alicloud/disk reclaimPolicy: Retain parameters: type: cloud_ssd regionid: cn-beijing zoneid: cn-beijing-d,cn-beijing-c,cn-beijing-e fstype: "ext4" readonly: "false" allowVolumeExpansion: true
$ kubectl create -f ./storage-class.yaml
編輯value.yaml檔案
vim skywalking/values.yaml
...
elasticsearch: ...
volumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
storageClassName: skywalking-disk-ssd
resources:
requests:
storage: 500Gi
...
persistence:
enabled: true # 持久化開關
annotations: {volume.beta.kubernetes.io/storage-class: "skywalking-disk-ssd"}
...
安裝命令
$ helm install skywalking skywalking -n skywalking
安裝Java-agent
關於skywalking的agent端我們可以在http://skywalking.apache.org/downloads/ 這裡找到他們。
注:java-agent端的配置檔案我們可以在JAVA_OPTS中進行修改,也可以通過comfigmap傳入變數的方式進行修改,所以我們暫時先不動它
詳細引數可檢視skywalking官網的Agent Configuration Properties:https://github.com/apache/skywalking/blob/v8.0.1/docs/en/setup/service-agent/java-agent/README.md
配置skywalking的追蹤忽略
在實際的生產環境中由於某些請求是不需要被追蹤的,我們需要
skywalking的可選外掛:apm-trace-ignore-plugin-8.0.1.jar來幫我們過濾追蹤。
因為skywalking的功能元件都是可插拔的,所以我們只需要將optional-plugins/apm-trace-ignore-plugin-8.0.1.jar 移動到plugins/
apm-trace-ignore-plugin-8.0.1.jar
配置方法:
在JAVA_OPTS引數中加入:-Dskywalking.trace.ignore_path=/heartbeat,/api/v2/spans,/metrics ....
將agent端打入base映象
$ cat Dockerfile
... #新增skywalking外掛 ADD skywalking-agent.tar.gz /opt/ole-resources/
...
在JAVA_OPTS引數最後加入skywalking的相關配置。
JAVA_OPTS: ... -javaagent:/opt/ole-resources/skywalking-agent/skywalking-agent.jar -Dskywalking.trace.ignore_path=/heartbeat,/api/v2/spans,/metrics -Dskywalking.agent.namespace=$(POD_NAMESPACE) -Dskywalking.agent.service_name=$(POD_APP_NAME) -Dskywalking.agent.instance_name=$(POD_NAME) -Dskywalking.collector.backend_service=skywalking-oap.skywalking.svc.cluster.local:11800
注:
若想將這些變數注入到容器中$(POD_NAMESPACE),$(POD_APP_NAME),$(POD_NAME)需要修改deployment檔案,如下配置
要想講
- env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: POD_APP_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app']
到這裡skywalking的OAP、UI、以及Agent端基本部署完成,讓我們來看一下效果
後續持續更新中。。。
&n