Apache SkyWalking
什麼是 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!
通過瀏覽器訪問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無法顯示請求。