Linux下安裝 SkyWalking 分佈式追蹤系統
Linux下安裝 SkyWalking 分佈式追蹤系統
1、SkyWalking簡介
1.1 SkyWalking介紹
SkyWalking項目是由華為大牛吳晟開源的個人項目,目前已經加入Apache孵化器。
SkyWalking項目的核心目標是針對微服務、Cloud Native、容器化架構提供應用性能監控和分佈式調用鏈追蹤功能,目前鏈路追蹤和監控應用支持的組件包括主流框架和容器,如dubbo、motan、spring boot、spring cloud等。
Skywalking分佈式系統的應用程序性能監視工具,專為微服務、雲原生架構和基於容器(Docker、K8s、Mesos)架構而設計,它是一款優秀的APM(Application Performance Management)工具,包括了分佈式追蹤,性能指標分析和服務依賴分析等。
1.2 Skywalking架構
整個架構,分成上、下、左、右四部分:
- 上部分 Agent :負責從應用中,收集鏈路信息,發送給 SkyWalking OAP 服務器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 數據信息。而我們目前採用的是,SkyWalking Agent 收集 SkyWalking Tracing 數據,傳遞給服務器。
- 下部分 SkyWalking OAP :負責接收 Agent 發送的 Tracing 數據信息,然後進行分析(Analysis Core) ,存儲到外部存儲器( Storage ),最終提供查詢( Query )功能。
- 右部分 Storage :Tracing 數據存儲。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多種存儲器。而我們目前採用的是 ES ,主要考慮是 SkyWalking 開發團隊自己的生產環境採用 ES 為主。
- 左部分 SkyWalking UI :負責提供控台,查看鏈路等等。
1.3 SkyWalking主要功能
- 多種監控手段。可以通過語言探針和 service mesh 獲得監控是數據。
- 多個語言自動探針。包括 Java,.NET Core 和 Node.JS。
- 輕量高效。無需大數據平台,和大量的服務器資源。
- 模塊化。UI、存儲、集群管理都有多種機制可選。
- 支持告警。
- 優秀的可視化解決方案。
1.4 環境搭建
- Skywalking agent和業務端綁定在一起,負責收集各種監控數據
- Skywalking oapservice是負責處理監控數據,接受agent的數據並存儲在數據庫中,接受來自UI的請求,查詢監控數據。
- Skywalking UI提供給用戶,展現各種監控數據和告警。
2、部署SkyWalking
2.1 部署前準備工作
1.關閉selinux
[root@skywalking ~]#sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@skywalking ~]#sed -i 's/SELINUXTYPE=targeted/#&/' /etc/selinux/config
[root@skywalking ~]#setenforce 0
2.安裝需要用的工具
[root@skywalking ~]#yum -y install vim wget java
3.在線下載SkyWalking和elasticsearch
[root@skywalking /usr/local/src]#cd
[root@skywalking ~]#cd /usr/local/src/
[root@skywalking /usr/local/src]#wget //archive.apache.org/dist/skywalking/6.4.0/apache-skywalking-apm-6.4.0.tar.gz
[root@skywalking /usr/local/src]#wget //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
[root@skywalking /usr/local/src]#ls
apache-skywalking-apm-6.4.0.tar.gz elasticsearch-6.6.2.tar.gz
4.關閉防火牆
[root@skywalking ~]#systemctl stop firewalld
[root@skywalking ~]#systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2022-11-16 15:09:01 CST; 8s ago
Docs: man:firewalld(1)
Process: 939 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 939 (code=exited, status=0/SUCCESS)
2.2 部署elasticsearch
1.解壓
[root@skywalking /usr/local/src]#tar -zxf elasticsearch-6.6.2.tar.gz
2.修改配置文件
[root@skywalking ~]#vim /usr/local/src/elasticsearch/config/elasticsearch.yml
...
network.host: 0.0.0.0
3.創建用戶
# es不能用root用戶啟動
[root@skywalking ~]#useradd es -p es
[root@skywalking ~]#chown -R es:es /usr/local/src/elasticsearch
4.修改limit數量
[root@skywalking ~]#vim /etc/security/limits.conf
## 每個進程最大打開文件數
* soft nofile 65536
* hard nofile 131072
## 每個進程最大進程個數
* soft nproc 4096
* hard nproc 4096
[root@skywalking ~]#vim /etc/sysctl.conf
...
vm.max_map_count=655360
#執行該命令使配置生效
[root@skywalking ~]#sysctl -p
5.啟動
[root@skywalking ~]#su - es
上一次登錄:三 11月 16 15:22:33 CST 2022pts/0 上
[es@skywalking ~]$cd /usr/local/src/elasticsearch/bin/
[es@skywalking /usr/local/src/elasticsearch/bin]$./elasticsearch -d
6.測試是否安裝成功
2.3 部署skywarking
1.解壓
[root@skywalking /usr/local/src]#tar -xzf apache-skywalking-apm-6.4.0.tar.gz
2.修改配置文件
# 將h2內容注釋掉,啟用elasticsearch存儲方案
[root@skywalking /usr/local/src]#vim /usr/local/src/skywalking/config/application.yml
...
storage:
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
# trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
# trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
# user: ${SW_ES_USER:""}
# password: ${SW_ES_PASSWORD:""}
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# # Those data TTL settings will override the same settings in core module.
# recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
# otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
# monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
# # Batch process setting, refer to //www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
# user: ${SW_STORAGE_H2_USER:sa}
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
...
3.啟動
[root@skywalking /usr/local/src]#cd skywalking/bin/
[root@skywalking /usr/local/src/skywalking/bin]#./startup.sh
4.驗證是否安裝成功