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.驗證是否安裝成功

Tags: