SkyWalking和APM介紹
今天給大家給大家介紹一下SkyWalking,那什么是SkyWalking
Skywalking 是 Apache 基金會下面的一個開源 APM 項目 ,那什么又是APM呢?
APM 全稱是 (Application Performance Monitor)應用性能監測軟件,主要是用來處理以及追蹤分布式系統中的應用程序的性能問題,從而快速找出問題的根源,進而可以讓開發者定位問題從而提升應用程序性能。
Skywalking 是一個APM系統,為微服務架構和雲原生架構系統設計,它通過客戶端探針自動收集追蹤性能所需的指標,並進行分布式追蹤。通過這些調用鏈路以及指標,Skywalking 可以感知應用間關系和服務間關系,並進行相應的指標統計及展示 。
目前主要的一些 鏈路追蹤 工具有: Cat、Zipkin、Pinpoint、SkyWalking,等等....這里主要介紹 SkyWalking 。
SkyWalking官方GitHub地址:
https://github.com/apache/skywalking
SkyWalking安裝
本次安裝是在Linux環境下進行,如需docker下安裝請查閱其他文章
Linux環境:centos7
安裝SkyWalking的環境要求
- JDK8+
- Elasticsearch 6.X (目前SkyWalking已支持 Elasticsearch 6.X版本)
首先我們先確定下是否安裝JDK1.8
#java

如顯示上圖則已安裝過jdk
然后再輸入#java -version

這里我們看到已經安裝JDK1.8
一般的Linux都是預安裝了jdk1.8的,如未安裝我們運行以下
JDK1.8下載:
yum -y install java
接下來我們安裝Elasticsearch
我這里安裝的是6.4版本的 Elasticsearch
最新版本已經更新到7.1.0版本
大家可以選擇安裝
這里以6.4.0來舉例
安裝 Elasticsearch
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
解壓 Elasticsearch 安裝包
#解壓到指定目錄
tar -zxvf ./elasticsearch-6.4.0.tar.gz -C /usr/local/
#最終結果/usr/local/elasticsearch-6.4.0
#改變權限
chown -R elk:elk /usr/local/elasticsearch-6.4.0/
然后我們進入 elasticsearch-6.4.0/config文件夾內,vim修改配置文件

定位到#http.port:9200位置,在下面增加:network.host: 0.0.0.0
:wq保存即可
然后我們創建 elasticsearch用戶
useradd elk #用戶名自定義
#切換用戶
su elk
編輯 /etc/security/limits.conf 配置文件, 在最后添加如下內容:

- elk soft nofile 65536
- elk hard nofile 65536
- soft nproc 4096
- hard nproc 4096
修改 /etc/security/limits.d/90-nproc.conf 配置文件:

- soft nproc 4096
root soft nproc unlimited
修改 /etc/sysctl.conf 配置:

#添加下面配置: vm.max_map_count=655360
#並執行命令: sysctl -p
最后開啟9200端口號訪問
/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT
然后切換到bin目錄下執行
./elasticsearch -d

出現如上則安裝成功
如果有錯誤可以去logs下面查看日志
接下來我們安裝 SkyWalking
我們用到的SkyWalking的6.1新版本,使用了全新UI....
我們可以去看下Apache官方提供的鏡像,有清華的國內鏡像還是很方便的
https://www.apache.org/dyn/closer.cgi/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz
下載skywalking
#wget http://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz
解壓skywalking
tar -xf apache-skywalking-apm-6.1.0.tar.gz
重新命名
mv apache-skywalking-apm-incubating skywalking
修改 skywalking/webapp/webapp.yml 信息,將127.0.0.1修改成本地真實ip
不修改也是可以使用的

SkyWalking的默認端口 8080.10800.11800.12800
我這里UI界面的8080端口沖突所以我修改了一下
用戶名和密碼也可以在這里修改
啟動skywalking
切換到SkyWalking的bin目錄
#啟動Collector、WebUI
./startup.sh

然后我們打開ui界面http://127.0.0.1:8090


這樣就安裝成功了
集成Asp.net core項目
我們這里是需要集成Asp.net core項目
這里我們需要用到.NET探針
那么什么是探針呢:
為了能夠讓APM的服務端正確的收集到追蹤及分析所需的指標,就需要有客戶端程序附屬到你的應用程序上進行數據的上報,那么這個附屬的程序就叫做探針(Agent)。
Skywalking 使用 Java 程序開發,默認提供了 Java 探針,那么在 .NET 系統中,就需要有 .NET 相關的探針才能夠正確的將數據上報的服務端,所以 skywalking-netcore 這個項目就是專門為 .NET 開發的探針
這個是.Net探針項目的地址:
https://github.com/SkyAPM/SkyAPM-dotnet
新的技術手冊在里面寫的也很詳細

現在的SkyWalking同時支持.netcore和.netframework以及更高的應用

在前一版本版本的 Skywalking .NET Agent 中,我們實現了對 ASP.NET Core 應用程序無入侵的集成方式,這使得你可以更加方便的開啟或者關閉探針數據的收集而不用修改任何代碼。
比如你可以在生產環境遇到性能問題時候啟動它快速的定位問題,而在問題處理完成之后再關掉,非常的方便,下面我們來說一下集成的步驟。
這個實例相對舊一點,大家僅供參考,優先選擇上面圖片的方法。
1.在Linux環境下首先要確定你的dotnet環境是否安裝
#dotnet
若無反應則需要安裝
https://dotnet.microsoft.com/download
選擇Linux進行命令安裝即可
安裝成功如下

2.然后使用dotnet的CLI命令來進行 Agent 的安裝
dotnet tool install -g SkyWalking.DotNet.CLI
// 注意需要在管理員權限下運行
dotnet skywalking install
3.我們需要在環境變量加兩個參數
Linux:
export DOTNET_ADDITIONAL_DEPS=/usr/local/share/dotnet/x64/additionalDeps/skywalking.agent.aspnetcore
export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore
4.我們給集成的應用取個名字,以下為示例
dotnet new mvc -n mvcdemo
以上命令會生成一個名為 mvcdemo 默認的 ASP.NET MVC 項目,我們需要給項目搞一個代號以便讓服務端識別,就取代號名為 mvc_sample 吧,然后把這個代號使用下面的命令也添加到環境變量里面。
Linux:
export SKYWALKING__APPLICATIONCODE=mvc_sample
5. 最后一步就是我們需要第一步的 CLI 工具生成一個配置文件,從而配置各種參數,使用以下命令生成一個配置文件:
// mvc_sample 為上面 第3 個項目的代號, localhost:12800 為 Skywalking 服務端的地址
dotnet skywalking config mvc_sample localhost:12800
上面的命令會在你的項目文件夾下生成一個名為 skywalking.json 的json文件,里面是配置信息,你可以酌情修改,如下:

然后我們進入項目 使用dotnet run進行運行

成功界面如上圖所示
參考文章
skywalking分布式鏈路追蹤監控系統部署
https://blog.51cto.com/536410/2318051?mType=Group
在 ASP.NET Core 中集成 Skywalking
https://www.cnblogs.com/savorboard/p/asp-net-core-skywalking.html
