利用Skywalking-netcore監控你的應用性能
Skywalking
SkyWalking開源項目由吳晟於2015年創建,同年10月在GitHub上作為個人項目開源。
SkyWalking項目的核心目標,是針對微服務、Cloud Native、容器化架構,提供應用性能監控(APM)和分散式調用鏈追蹤能力。
2017年11月,SkyWalking社區正式決定,尋求加入Apache基金會,希望能使項目成為更為開放、全球化和強大的APM開源產品,並加強來自社區的合作和交流。最終實現構建一款功能強大、簡單易用的開源APM產品。
2017年12月8日,Apache軟體基金會孵化器項目管理委員會 ASF IPMC宣布「SkyWalking全票通過,進入Apache孵化器」。
什麼是APM
APM = Application Performance Management,即應用性能管理,主要是針對企業級應用軟體市場,對企業系統實施即時監控,以實現對應用程序性能管理和故障管理的系統化的解決方案。
APM的覆蓋範圍包括五個層次的實現:終端用戶體驗,應用架構映射,應用事務的分析,深度應用診斷,和數據分析。
過去,企業的IT部門在收集系統性能參數時,一般重點關注為最終用戶提供服務的硬體組件的利用率,如CPU利用率、內存佔用、網路吞吐量。雖然這種方法也提供了一些寶貴的信息,但卻忽視了最重要的因素:最終用戶的響應時間。
現在,通過事務處理過程監測、模擬等手段,可以真實測量用戶響應時間,此外還可以報告誰正在使用某一應用、該應用的使用頻率以及用戶所進行的事務處理過程是否成功完成、發生錯誤時的參數與堆棧調用信息、資料庫查詢語句跟蹤等。
.Net Core
自微軟發布 .net core 2.0以來,.net開發者迎來了幸福的春天,我們的程序將不再局限於Windows平台。2.x版的.net core已趨於穩定,各廠的配套也在逐步跟上,使得整個生態在逐漸的豐富起來。
是.net core平台下的代理程序,在NCC社區的Lemon大神帶領下進行開發,並於2018年4月17日正式加入,於2018年4月19日發布v0.1.0版本。
實驗目標
布署一個基於SkyWalking的.net core應用監控系統,監控Web應用的性能。
所需第三方軟體
XShell
WinSCP
Visual Studio 2017
.net Core 2.0.3 SDK
JDK8+
Elasticsearch 5.x
網路結構
本次實驗採用三台伺服器 ,Elasticsearch 與 Collector 放在一台伺服器上,收集另外兩台Web伺服器提供的數據,實驗應用架構如下圖。
實驗架構
實驗過程
安裝系統
Server-01、Web01、Web02安裝 CentOS系統,安裝過程詳見《IT基礎設施:CentOS7安裝指南》
IP配置表
安裝 .net core 2.0 SDK
在Web01、Web02上安裝.net core 2.0 SDK,詳見《在CentOS7下安裝.Net Core 2.0.3 SDK》
安裝JDK8
因為oracle現在要同意協議才能下載,直接使用wget加鏈接下載不到,所以要加上前面的那些代碼:
也可以先用迅雷下到主機,再通過區域網下載到虛擬機
使用進行安裝
命令執行完畢即安裝完成,使用 檢查是否安裝成功
部署Elasticsearch
1、到官網下載5.x版,目前為5.6.9
下載5.x
2、使用WinSCP上傳到Server-01,解壓到/home/elasticsearch5.6.9下。
3、修改
設置 。此名稱需要和collector配置文件一致。
設置 , 節點名稱可以設置為任意名字,如為集群模式,則每個節點名稱需要不同。
增加如下配置
最終配置如下:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#!/usr/bin/env sh
PRG="$0"
PRGDIR=`dirname "$PRG"`
[ -z "$WEBAPP_HOME" ] && WEBAPP_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
WEBAPP_LOG_DIR="$/logs"
JAVA_OPTS=" -Xms256M -Xmx512M"
JAR_PATH="$/webapp"
if [ ! -d "$/logs" ]; then
mkdir -p "$"
fi
_RUNJAVA=$/bin/java
[ -z "$JAVA_HOME" ] && _RUNJAVA=java
eval exec ""$_RUNJAVA" $ -jar $/skywalking-webapp.jar
2>$/webapp.log 1> /dev/null &"
if [ $? -eq 0 ]; then
sleep 1
echo "Skywalking Web Application started successfully!"
else
echo "Skywalking Web Application started failure!"
exit 1
fi
運行啟動Elasticsearch
部署collector
下載release的版本https://github.com/OpenSkywalking/skywalking-netcore/releases
下載
將壓縮包解壓到的目錄
修改中的為的IP地址,目前為。
最終腳本如下:
修改中的所有為的IP地址,目前為。
最終配置文件如下:
運行啟動WebUI和Collector。
創建WebApplication
接下來,我們創建一個Web應用,並在其中加入Skywalking for dotnet core的代理程序。
1、打開VS2017,創建一個.Net Core MVC應用,請跟著我操作:VS中點擊菜單「文件」——「新建」——「項目」(按Ctrl+Shift+N同等效果),在彈出的對話框中從左到右進行如下操作。
.Net Core Web應用
選擇項目類型
2、等項目建好,右鍵點擊「依賴項」——「管理Nuget程序包」,打開Nuget管理器。
操作
在「瀏覽」選項卡,輸入「Skywalking.AspNetCore」搜索,並安裝
找到包
安裝前需要接受許可證,點擊「我接受」(不接受請關閉本文)
許可證
3、安裝完成後,打開,在函數中加入
完整代碼如下
打開文件,允許非本地訪問,最終代碼如下
4、發布:點擊我們的WEB應用,右鍵——發布,接下來看圖操作。
發布
發布到文件夾
選擇目標位置
發布
沒有失敗,恭喜,大吉大利,今晚吃雞
我們可以看到,發布完成後的文件,一大堆,我們把這個文件夾改名為App1
發布成功
5、接下來,我們在中把ApplicationCode改一下,按上面的步驟再發布一次。
image.png
這次發布生成的Publish3文件夾,我們改名為App2
布署Web
1、打開WinSCP,連上Web01,將App1拖到/home下。
2、打開XShell,連上Web01,執行如下命令
同樣的操作,將App2布署到Web02上。
訪問應用
我們打開兩個應用,隨機點擊一下應用頂部的鏈接。
http://192.168.10.192:5000,這是我們的app1
http://192.168.10.193:5000,這是我們的app2
查看監測
打開,查看監測情況
監測到的應用
查看被訪問的服務響應速度
服務狀態
結語
Skywalking-netcore做為.Net core社區的新生命,具有無限的潛力,據可靠消息,新版本將更深入地監測資料庫操作及狀態,HTTP請求消息以及StackTrace跟蹤,讓我們一起為它打Call加油吧。猛戮這裡,到Github給Skywalking-netcore點星星。
原文地址: https://www.jianshu.com/p/3ddd986c7581


※使用CoreRT將.NET Core發布為Native應用程序
※談談ASP.NET Core中的ResponseCaching
TAG:dotNET跨平台 |