skywalking分散式鏈路追蹤監控系統部署
SkyWalking 是針對分散式系統的 APM 系統,也被稱為分散式追蹤系統
全自動探針監控,不需要修改應用程式程式碼。檢視支援的中介軟體和元件庫列表:https://github.com/apache/incubator-skywalking
支援手動探針監控, 提供了支援 OpenTracing 標準的SDK。覆蓋範圍擴大到 OpenTracing-Java 支援的元件。檢視OpenTracing元件支援列表:https://github.com/opentracing-contrib/meta
自動監控和手動監控可以同時使用,使用手動監控彌補自動監控不支援的元件,甚至私有化元件。
純 Java 後端分析程式,提供 RESTful 服務,可為其他語言探針提供分析能力。
高效能純流式分析
下載JDK1.8
wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz #wget命令可能下載不了,自行想辦法下載 |
解壓JDK1.8
#解壓到指定目錄 tar -zxvf ./jdk-8u144-linux-x64.tar.gz -C /usr/local/ #最終結果/usr/local/jdk1.8.0_144 |
配置環境變數
#vim /etc/profile |
JAVA_HOME=/usr/local/jdk1.8.0_144 JRE_HOME=/usr/local/jdk1.8.0_144/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH |
安裝Elasticsearch5.5.2
#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz |
解壓安裝包
#解壓到指定目錄 tar -zxvf ./elasticsearch-5.5.2.tar.gz -C /usr/local/ #最終結果/usr/local/elasticsearch-5.5.2 #改變許可權 chown -R elk:elk /usr/local/elasticsearch-5.5.2/ |
編輯limits.conf配置檔案, 新增類似如下內容:
vi /etc/security/limits.conf #新增如下內容: * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 |
修改90-nproc.conf配置檔案
vi /etc/security/limits.d/90-nproc.conf #修改如下內容: * soft nproc 1024 #修改為 * soft nproc 2048 |
修改配置sysctl.conf
vi /etc/sysctl.conf #新增下面配置: vm.max_map_count=655360 #並執行命令: sysctl -p |
直接執行elasticsearch
#建立elasticsearch使用者 useradd elk #切換使用者 |
下載skywalking
#wget http://www-eu.apache.org/dist/incubator/skywalking/5.0.0-beta2/apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz |
解壓skywalking
tar -xf apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz mv apache-skywalking-apm-incubating skywalking |
修改配置檔案,將以下Localhost修改成本機IP地址,如果elasticsearch是分開安裝,修改成elasticsearch本機ip
vim /root/skywalking/config/application.yml naming: jetty: #OS real network IP(binding required), for agent to find collector cluster host: localhost port: 10800 contextPath: / cache: # guava: caffeine: remote: gRPC: # OS real network IP(binding required), for collector nodes communicate with each other in cluster. collectorN --(gRPC) --> collectorM host:localhost port: 11800 agent_gRPC: gRPC: #OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector. agent--(gRPC)--> collector host: localhost port: 11800 # Set these two setting to open ssl #sslCertChainFile: $path #sslPrivateKeyFile: $path # Set your own token to active auth #authentication: xxxxxx agent_jetty: jetty: # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector # SkyWalking native Java/.Net/node.js agents don't use this. # Open this for other implementor. host: localhost port: 12800 contextPath: / analysis_register: default: analysis_jvm: default: analysis_segment_parser: default: bufferFilePath: ../buffer/ bufferOffsetMaxFileSize: 10M bufferSegmentMaxFileSize: 500M bufferFileCleanWhenRestart: true ui: jetty: # Stay in `localhost` if UI starts up in default mode. # Change it to OS real network IP(binding required), if deploy collector in different machine. host:localhost port: 12800 contextPath: / storage: elasticsearch: clusterName: CollectorDBCluster clusterTransportSniffer: true clusterNodes:localhost:9300 indexShardsNumber: 2 indexReplicasNumber: 0 highPerformanceMode: true |
修改web控制資訊,將127.0.0.1修改成本地真實ip
vim skywalking/webapp/webapp.yml server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 listOfServers:127.0.0.1:10800 security: user: admin: password: admin |
啟動skywalking
cd skywalking/bin #啟動Collector、WebUI ./startup.sh |
SkyWalking監控介面URL: http://127.0.0.1:8080/#/monitor/dashboard
部署探針
拷貝skywalking-agent目錄到需要監控的節點伺服器上,探針包含整個目錄,請不要改變目錄結構
+-- skywalking-agent +-- activations apm-toolkit-log4j-1.x-activation.jar apm-toolkit-log4j-2.x-activation.jar apm-toolkit-logback-1.x-activation.jar ... +-- config agent.config +-- plugins apm-dubbo-plugin.jar apm-feign-default-http-9.x.jar apm-httpClient-4.x-plugin.jar ..... skywalking-agent.jar |
修改agent配置檔案,將127.0.0.1修改成skywalking伺服器ip地址
vim /usr/local/agent/config/agent.config # 當前的應用編碼,最終會顯示在webui上。 # 建議一個應用的多個例項,使用有相同的application_code。請使用英文 agent.application_code=Your_ApplicationName # 每三秒取樣的Trace數量 # 預設為負數,代表在保證不超過記憶體Buffer區的前提下,採集所有的Trace # agent.sample_n_per_3_secs=-1 # 設定需要忽略的請求地址 # 預設配置如下 # agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg # 探針除錯開關,如果設定為true,探針會將所有操作位元組碼的類輸出到/debugging目錄下 # skywalking團隊可能在除錯,需要此檔案 # agent.is_open_debugging_class = true # 對應Collector的config/application.yml配置檔案中 agent_server/jetty/port 配置內容 # 例如: # 單節點配置:SERVERS="127.0.0.1:8080" # 叢集配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600" collector.servers=127.0.0.1:10800 # 日誌檔名稱字首 logging.file_name=skywalking-agent.log # 日誌檔案最大大小 # 如果超過此大小,則會生成新檔案。 # 預設為300M logging.max_file_size=314572800 # 日誌級別,預設為DEBUG。 logging.level=DEBUG |
如果是容器用到tomcat話,新增catalina.sh如下配置
# vim /root/test/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test" ; export CATALINA_OPTS |
如果一臺伺服器上跑多個tomcat例項, 只需修改-Dskywalking.agent.application_code=test(將這個值修改成應用名)
如果是jar包啟動,新增 以下資訊到啟動指令碼中
java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test
如果沒有啟動指令碼,直接在命令列中啟動
java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dserver.port=8084 -Dskywalking.agent.application_code=test -jar test.jar &
-Dserver.port 應用埠
-Dskywalking.agent.application_code 監控時顯示的應用名稱,如有多個應用,根據自行應用程式修改
test.jar jar包名稱
監控畫面