什么是 SkyWalking?
- SkyWalking 是觀察性分析平台和應用性能管理系統。
- 提供分布式追蹤、服務網格遙測分析、度量聚合和可視化一體化解決方案.
- 支持Java, .Net Core, PHP, NodeJS, Golang, LUA語言探針
- 支持Envoy + Istio構建的Service Mesh
架構圖:
整體架構包含如下三個組成部分:
1. 探針(agent)負責進行數據的收集,包含了Tracing和Metrics的數據,agent會被安裝到服務所在的服務器上,以方便數據的獲取。
2. 可觀測性分析平台OAP(Observability Analysis Platform),接收探針發送的數據,並在內存中使用分析引擎(Analysis Core)進行數據的整合運算,然后將數據存儲到對應的存儲介質上,比如Elasticsearch、MySQL數據庫、H2數據庫等。同時OAP還使用查詢引擎(Query Core)提供HTTP查詢接口。
3. Skywalking提供單獨的UI進行數據的查看,此時UI會調用OAP提供的接口,獲取對應的數據然后進行展示。
特性
- 多種監控手段,語言探針和service mesh
- 多語言自動探針,Java, .Net Core, PHP, NodeJS, Golang, LUA
- 輕量高效,不需要大數據
- 模塊化,UI、存儲、集群管理多種機制可選
- 支持告警
- 優秀的可視化方案
官網地址:https://skywalking.apache.org/
環境搭建
軟件版本:
apache-skywalking-apm-6.5.0.tar.gz
apache-tomcat-8.5.47.tar.gz
elasticsearch-6.4.0.tar.gz
1、設置時間同步並創建安裝目錄
yum install -y ntp */2 * * * * /usr/sbin/ntpdate 182.92.12.11;/sbin/hwclock -w > /dev/null #2>&1 mkdir -p /usr/local/skywalking
2、創建elasticsearch用戶及設置系統文件句柄數
#添加es用戶 useradd es passwd es #設置文件打開句柄數 vim /etc/security/.conf es soft nofile 65536 es hard nofile 65536 es soft nproc 4096 es hard nproc 4096 #增大虛擬內存 vim /etc/sysctl.conf vm.max_map_count=262144 #運用生效 system -p
3、部署elasticsearch,注意事項:https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-backend-in-standalone-mode-CN.md#%E9%83%A8%E7%BD%B2elasticsearch
#安裝java環境 yum install -y java #解壓 tar -xf elasticsearch-6.4.0.tar.gz #授權 chown -R es.es elasticsearch-6.4.0 #切換到es用戶 su - es #后台啟動es服務 cd /usr/local/skywalking/elasticsearch-6.4.0/bin/ ./elasticsearch -d
curl請求返回正常:
4、安裝skywalking
tar -xf apache-skywalking-apm-6.5.0.tar.gz cd apache-skywalking-apm-bin/ #修改數據源 vim config/application.yml #打開elasticseatch注解 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 ##注釋h2數據源 # 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} #后台啟動服務 /usr/local/skywalking/apache-skywalking-apm-bin/bin ./startup.sh -d SkyWalking OAP started successfully! SkyWalking Web Application started successfully!
默認端口:
端口號 |
說明 |
8080 |
web端口 |
11800 |
gRPC追蹤信息收集器端口 |
12800 |
rest追蹤信息收集器端口 |
通過瀏覽器訪問Skywalking的可視化頁面了,訪問地址:http://虛擬機IP地址:8080,如果出現下面的圖,就代表安裝成功了。

5、基於tomcat部署skywalking agent
#解壓tomcat tar -xf apache-tomcat-8.5.47.tar.gz #在tomcat的啟動參數添加skywalking-agent.jar /usr/local/skywalking/apache-tomcat-8.5.47/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar";export CATALINA_OPTS #啟動tomcat服務 ./startup.sh
6、首先要訪問tomcat服務,這時我們打開一個新的無痕窗口(fuck。。。因為緩存的問題我整整花了一天時間卡在上面,當前服務一直不顯示。)看到skywalking UI。
后記:
1、系統時間同步,不然也會導致UI無法顯示請求。