您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何部署并安裝全鏈路分布式跟蹤系統(tǒng)Apache SkyWalking,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
確保有一套運(yùn)行正常的 Kubernetes 集群,文章默認(rèn)為使用 Elasticsearch7 作為后端存儲(chǔ);如果想把 ES 放到 Kubernetes 集群里那么還得確保集群配置了正確的存儲(chǔ),譬如默認(rèn)的 StorageClass 可用等。為了方便起見(其實(shí)就是窮)采用外部 ES 存儲(chǔ)且使用 docker-compose 單節(jié)點(diǎn)部署,所以不需要集群的分布式存儲(chǔ);最后確保你本地的 kubectl
能夠正常運(yùn)行。
Skywalking 在大體上(不準(zhǔn)確)分為四大部分:
oap-server: 無(wú)狀態(tài)服務(wù)后端,主要負(fù)責(zé)處理核心邏輯,可以簡(jiǎn)單理解為一個(gè)標(biāo)準(zhǔn) java web 項(xiàng)目。
skywalking-ui: UI 前端,通過 graphql 連接 oap-server 提供用戶查詢等 UI 展示。
agent: 各種語(yǔ)言實(shí)現(xiàn)的 agent 負(fù)責(zé)抓取應(yīng)用運(yùn)行數(shù)據(jù)并上報(bào)給 oap-server,核心的指標(biāo)上報(bào)來(lái)源。
DB: 各種數(shù)據(jù)庫(kù),負(fù)責(zé)存儲(chǔ) Skywalking 的指標(biāo)數(shù)據(jù),生產(chǎn)環(huán)境推薦 ES、TiDB、MySQL。
Elasticsearch 當(dāng)前使用 7.9.2 版本,由于只是初次嘗試還處于測(cè)試階段所以直接 docker-compose 啟動(dòng)一個(gè)單點(diǎn):
# 如果有需要可以進(jìn)入 es 容器使用以下命令設(shè)置密碼# elasticsearch-setup-passwords interactiveversion: '3.8'services: elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2 restart: always network_mode: "host" volumes: - data:/data/elasticsearch environment: - http.host=172.16.11.43 - http.port=9200 - transport.tcp.port=172.16.11.43 - transport.tcp.port=9300 - cluster.name=skyes - node.name=skyes - discovery.type=single-node - xpack.security.enabled=true - xpack.monitoring.enabled=true - "ES_JAVA_OPTS=-Xms4096m -Xmx7168m"volumes: data:
由于 Skywalking 官方給出的 Kubernetes 安裝方式為 Helm 安裝,所以需要本地先安裝 Helm;Helm 安裝方式非常簡(jiǎn)單,根據(jù)官方文檔在網(wǎng)絡(luò)沒問題的情況下直接執(zhí)行以下命令即可:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
如果網(wǎng)絡(luò)不是那么 OK 的情況下請(qǐng)參考官方文檔的包管理器方式安裝或直接下載二進(jìn)制文件安裝。
Helm 部署之前按照官方文檔提示需要先初始化 Helm 倉(cāng)庫(kù):
# clone helm 倉(cāng)庫(kù)git clone https://github.com/apache/skywalking-kubernetescd skywalking-kubernetes/chart# 即使使用外部 ES 也要添加這個(gè) repo,否則會(huì)導(dǎo)致依賴錯(cuò)誤helm repo add elastic https://helm.elastic.co helm dep up skywalking# change the release name according to your scenarioexport SKYWALKING_RELEASE_NAME=skywalking# 如果修改了 NAMESPACE,后續(xù)部署則需要先通過 kuebctl 創(chuàng)建該 NAMESPACE# change the namespace according to your scenarioexport SKYWALKING_RELEASE_NAMESPACE=default
Helm 初始化完成后需要自行調(diào)整配置文件,配置 oap-server 使用外部 ES
values-my-es.yaml
oap: image: tag: 8.1.-es7 # Set the right tag according to the existing Elasticsearch version storageType: elasticsearch7ui: image: tag: 8.1.elasticsearch: enabled: false config: # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false host: 172.16.11.43 port: http: 9200 user: "elastic" password: "elastic"
調(diào)整好配置后只需要使用 Helm 安裝即可:
helm install "${SKYWALKING_RELEASE_NAME}" skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}" \ -f ./skywalking/values-my-es.yaml --set oap.image.tag=8.2.-es7 --set ui.image.tag=8.2.
如果安裝出錯(cuò)或者其他問題可以使用以下命令進(jìn)行卸載:
helm uninstall "${SKYWALKING_RELEASE_NAME}" skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}"
安裝成功后應(yīng)該在 ${SKYWALKING_RELEASE_NAMESPACE}
下看到相關(guān) Pod:
k8s21 ? ~ kubectl get pod -o wide -n skywalking NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES skywalking-es-init-xw6tx /1 Completed 32h 10.30.0.62 k8s21 <none> <none> skywalking-oap-64c65cc6bb-lnq82 1/1 Running 32h 10.30.0.61 k8s21 <none> <none> skywalking-oap-64c65cc6bb-q7zj8 1/1 Running 32h 10.30.32.103 k8s22 <none> <none> skywalking-ui-695ff9d69d-wqcm8 1/1 Running 32h 10.30.161.42 k8s25 <none> <none>
在確認(rèn) Pod 都運(yùn)行正常后可以通過 kubectl port-forward
命令來(lái)查看 UI 界面:
# 執(zhí)行以下命令,訪問 127.0.0.1:8080 即可訪問到 skywalking-uikubectl port-forward -n ${SKYWALKING_RELEASE_NAMESPACE} service/skywalking-ui 8080:80
在生產(chǎn)環(huán)境可能需要配置正確的 Ingress 或者 NodePort 等方式暴露 skywalking-ui 服務(wù),具體取決于生產(chǎn)集群服務(wù)暴露方式,請(qǐng)自行調(diào)整。
由于目前僅在 Java 項(xiàng)目上測(cè)試,所以以下 Agent 配置僅僅對(duì) Java 項(xiàng)目有效。
Skywalking 在簡(jiǎn)單使用時(shí)不需要侵入代碼,對(duì)于 jar 包啟動(dòng)的項(xiàng)目只需要在啟動(dòng)時(shí)增加 -javaagent
選項(xiàng)即可。
javaagent
可以通過下載對(duì)應(yīng)的 skywalking release 安裝包獲取,將此 agent
目錄解壓到任意位置,稍后將添加到 java 啟動(dòng)參數(shù)。
Agent 主配置文件存放在 config/agent.config
配置文件中,配置文件內(nèi)支持環(huán)境變量讀取,可以自行添加其他配置和引用其他變量;通常這個(gè)配置文件在容器化時(shí)有兩種選擇,一種是創(chuàng)建 ConfigMap,然后通過 ConfigMap 掛載到容器里進(jìn)行覆蓋;另一種是在默認(rèn)配置里引用各種變量,在容器啟動(dòng)時(shí)通過環(huán)境變量注入。這里暫時(shí)使用環(huán)境變量注入的方式:
agent.config
deployment.yml
調(diào)整完成后,應(yīng)用運(yùn)行一段時(shí)間后應(yīng)該能在 UI 中看到數(shù)據(jù)
默認(rèn)情況下 Helm 相關(guān)命令執(zhí)行緩慢,可能需要設(shè)置 http(s)_proxy
...( _ _)ノ|壁
(自行體會(huì)這個(gè)表情)
Skywalking 鏡像一般比較大,下載緩慢,推薦預(yù)先拉取好然后 load 到每個(gè)節(jié)點(diǎn)
ES 如果設(shè)置了密碼,不要忘記在 Helm 安裝時(shí)調(diào)整好密碼配置
jar 包啟動(dòng)時(shí) -javaagent
不能放在 -jar
選項(xiàng)之后,否則可能不生效
集群內(nèi)連接 oap-server 推薦通過 skywalking-oap.skywalking.svc.cluster.local
域名服務(wù)發(fā)現(xiàn)方式尋址
關(guān)于如何部署并安裝全鏈路分布式跟蹤系統(tǒng)Apache SkyWalking就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。