Apache SkyWalking

渣渣輝發表於2020-04-19

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提供的介面,獲取對應的資料然後進行展示。

特性

  1. 多種監控手段,語言探針和service mesh
  2. 多語言自動探針,Java, .Net Core, PHP, NodeJS, Golang, LUA
  3. 輕量高效,不需要大資料
  4. 模組化,UI、儲存、叢集管理多種機制可選
  5. 支援告警
  6. 優秀的視覺化方案

官網地址: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無法顯示請求。

 

 

 

 

 

 

 

 

 

 

 

 

相關文章