摘要:通過(guò)跟蹤請(qǐng)求的處理過(guò)程,來(lái)對(duì)應(yīng)用系統(tǒng)在前后端處理服務(wù)端調(diào)用的性能消耗進(jìn)行跟蹤,關(guān)于的介紹可以看這個(gè)鏈接,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)作者刀把五鏈接來(lái)源知乎著作權(quán)歸作者所有。
手把手教你搭A(yù)PM之Skywalking 前言
什么是APM?全稱:Application Performance Management
可以參考這里:
現(xiàn)代APM體系,基本都是參考Google的Dapper(大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng))的體系來(lái)做的。通過(guò)跟蹤請(qǐng)求的處理過(guò)程,來(lái)對(duì)應(yīng)用系統(tǒng)在前后端處理、服務(wù)端調(diào)用的性能消耗進(jìn)行跟蹤,關(guān)于Dapper的介紹可以看這個(gè)鏈接:Dapper,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng) by bigbully 作者:刀把五 鏈接:https://www.zhihu.com/question/27994350/answer/118821214 來(lái)源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
最早使用APM還是在攜程里面搬磚的時(shí)候,當(dāng)時(shí)使用的是大宗點(diǎn)評(píng)網(wǎng)開(kāi)源的dianping/cat框架.
后來(lái)到了新公司,因?yàn)闅v史包袱有點(diǎn)多,追蹤性能問(wèn)題太麻煩,用過(guò)收費(fèi)的New Relic | Real-time insights for modern software ,newrelic按照CPU核數(shù)和內(nèi)存來(lái)收費(fèi),實(shí)在太貴了我們就放棄了.
再后來(lái)我們調(diào)研一下市面的其他方案,看到了這個(gè)知乎討論給了不少的東西.
有什么知名的開(kāi)源apm(Application Performance Management)工具嗎?
當(dāng)時(shí)看到naver/pinpoint 和apache/incubator-skywalking 都很不錯(cuò).
一個(gè)是韓國(guó)搜索團(tuán)隊(duì)開(kāi)源的,一個(gè)是國(guó)內(nèi)個(gè)人用戶開(kāi)源,已經(jīng)到了apache孵化器了.
于是兩個(gè)都試用了一下, 最后由于那時(shí)候馬上考慮上分表分庫(kù)組件 sharding-jdbc-dangdang, skywalking也要對(duì)應(yīng)的支持,所以決定用skywalking試試.
再后來(lái)又跑路了,不好意思給那邊留下坑就沒(méi)繼續(xù)搭建看. 到了新公司PHP/Python/Java什么都寫,開(kāi)始兩三個(gè)月也沒(méi)管這個(gè).
最近不是太忙了,新公司這邊服務(wù)端API暫時(shí)被我?guī)С闪薲otnet core技術(shù)棧,233...
同時(shí)發(fā)現(xiàn)當(dāng)前用的EF框架偶爾會(huì)因?yàn)椴恍⌒木蛯懗隽诵阅芎懿畹腟QL,測(cè)試環(huán)境基本看不出來(lái),到了生產(chǎn)可能就炸.
前陣子看到dalao 傾竹 把dotnet core agent寫出來(lái)了, 于是爽歪歪就開(kāi)始gang了.
開(kāi)始搭建skywalkinggithub:incubator-skywalking
當(dāng)前release版本為5.0RC2,最新版本6.X正在開(kāi)發(fā)中.
所以當(dāng)前我這里是基于5.0 RC2來(lái)搭建的.
官方向?qū)Х桨冈谶@里:incubator-skywalking/blob/5.x/docs/README.md
中文文檔在這里:incubator-skywalking/blob/5.x/docs/README_ZH.md
我這里今天還是全程docker部署.
以下操作來(lái)自JaredTan95/skywalking-docker dalao準(zhǔn)備的docker部署.
預(yù)備條件:
docker
elasticsearch
啟動(dòng)Elasticsearch# Elasticsearch版本要求5.x docker run -p 9200:9200 -p 9300:9300 -e cluster.name=elasticsearch -e xpack.security.enabled=false --name=elasticsearch --restart=always -d wutang/elasticsearch-shanghai-zone
啟動(dòng)好了訪問(wèn)一下 http://localhost:9200 看看,看到一下的內(nèi)容說(shuō)明ES已經(jīng)正常啟動(dòng)了.
{ "name": "_PNUyiW", "cluster_name": "elasticsearch", "cluster_uuid": "", "version": { "number": "5.6.10", "build_hash": "b727a60", "build_date": "2018-06-06T15:48:34.860Z", "build_snapshot": false, "lucene_version": "6.6.1" }, "tagline": "You Know, for Search" }
接著使用 docker inspect elasticsearch |grep IPAddress 查看一下 elasticsearch 當(dāng)前IP.
? ? docker inspect elasticsearch |grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "172.27.0.2",啟動(dòng) Skywalking UI + Skywalking collector
dalao wutang的wutang/skywalking-docker已經(jīng)把UI和collector打包到一個(gè)鏡像里面了,完全可以獨(dú)立安裝.
所以我這里采用的也是這個(gè)方案.
docker run -p 8080:8080 -p 10800:10800 -p 11800:11800 -p 12800:12800 -e ES_CLUSTER_NAME=elasticsearch -e ES_ADDRESSES=上一步拿到的elasticsearchIP:9300 -d wutang/skywalking-docker:5.x
啟動(dòng)好了之后打開(kāi) localhost:8080,如果UI頁(yè)面沒(méi)有500/404錯(cuò)誤,說(shuō)明整個(gè)系統(tǒng)已經(jīng)正常啟動(dòng)了.
PS:默認(rèn)賬號(hào)密碼是:admin admin,可以在docker run指定 UI_ADMIN_PASSWORD環(huán)境變量自定義密碼.
如果有錯(cuò)誤的話,大概率是ES沒(méi)有連上,檢查一下ES是不是還活著,再不行就進(jìn)到容器里面看日志.日志默認(rèn)路徑:/apache-skywalking-apm-incubating/logs
Agent接入當(dāng)前已經(jīng)有Java/C#(dotnet core)/Node.js的Agent了.
對(duì)應(yīng)的話Java支持是最多的,其他兩個(gè)我看下來(lái)基本就是主流比較多的一些框架都基本有了.
對(duì)應(yīng)agent框架鏈接:
dotnet core: OpenSkywalking/skywalking-netcore
node.js:OpenSkywalking/skywalking-nodejs
理論上應(yīng)該遵循h(huán)ttp://opentracing.io/ API標(biāo)準(zhǔn)的.
Java agent 主倉(cāng)庫(kù)就有,直接去看release即可.
今天我們肯定是用dotnet core 啦.
dotnet core當(dāng)前支持的庫(kù)和中間件有下面這些:
ASP.NET Core
.NET Core BCL types (HttpClient and SqlClient)
EntityFrameworkCore
Npgsql.EntityFrameworkCore.PostgreSQL
Pomelo.EntityFrameworkCore.MySql
CAP
嗯,該有的都有了.
先引入一下SkyWalking.AspNetCore的Package.
dotnet add package SkyWalking.AspNetCore --version 0.3.0
酌情新增 SkyWalking.Diagnostics.EntityFrameworkCore, SkyWalking.Diagnostics.HttpClient, SkyWalking.Diagnostics.EntityFrameworkCore.Npgsql,SkyWalking.Diagnostics.EntityFrameworkCore.Pomelo.MySql 等等...
或者直接在xxx.csproj 新增下面這些包.
然后在 Startup.cs的ConfigureServices 方法中添加引用
// using SkyWalking.AspNetCore; // using SkyWalking.Diagnostics.EntityFrameworkCore; // using SkyWalking.Diagnostics.HttpClient; // using SkyWalking.Diagnostics.SqlClient; services.AddSkyWalking(option => { option.ApplicationCode = "my-first-api"; option.DirectServers = "127.0.0.1:11800"; // 每三秒采樣的Trace數(shù)量,-1 為全部采集 option.SamplePer3Secs = -1; }).AddEntityFrameworkCore(c => { c.AddPomeloMysql(); }) .AddHttpClient();
接著啟動(dòng)應(yīng)用.
看到有類似的日志輸入,說(shuō)明已經(jīng)應(yīng)用已經(jīng)正常連接到SkyWalking了.
info: SkyWalking.Remote.GrpcApplicationService[0] Register application instance success. [applicationInstanceId] = 31 SkyWalking.Remote.GrpcApplicationService:Information: Register application instance success. [applicationInstanceId] = 31 info: SkyWalking.Remote.GrpcApplicationService[0] Register application instance success. [applicationInstanceId] = 31
這時(shí)候我們打開(kāi)http://localhost:8080/#/monitor/dashboard
可以看到APP已經(jīng)有數(shù)量了.
接著我們?cè)L問(wèn)一下已有的API/Web頁(yè)面,就能看到對(duì)應(yīng)的信息了.
點(diǎn)一下對(duì)應(yīng)的URL.
http client請(qǐng)求(其實(shí)是查詢ES):
Topology Map
其他的一些功能就看自己玩了.
本期結(jié)束...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77232.html
摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...
摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...
摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 3094·2021-11-24 09:38
閱讀 1345·2021-09-22 15:27
閱讀 2980·2021-09-10 10:51
閱讀 1518·2021-09-09 09:33
閱讀 931·2021-08-09 13:47
閱讀 2095·2019-08-30 13:05
閱讀 902·2019-08-29 15:15
閱讀 2439·2019-08-29 12:21