怎么實(shí)現(xiàn)Skywalking支持HTTP1.1通信接口

本篇內(nèi)容介紹了“怎么實(shí)現(xiàn)Skywalking支持HTTP 1.1通信接口”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!        

澤州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

OpenResty 是什么?

OpenResty是一個(gè)基于 Nginx 與 Lua 的高性能 Web 平臺(tái),其內(nèi)部集成了大量精良的 Lua 庫(kù)、第三方模塊以及大多數(shù)的依賴項(xiàng)。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動(dòng)態(tài) Web 應(yīng)用、Web 服務(wù)和動(dòng)態(tài)網(wǎng)關(guān)。

因此,很多公司都會(huì)使用 OpenResty 開(kāi)發(fā)出適合自己業(yè)務(wù)的高性能 web Server 模塊。

那么它和 Skywalking 有什么關(guān)心呢?我們得先知道Skywalking是什么,Skywalking 是由Java 語(yǔ)言開(kāi)發(fā)的一套APM系統(tǒng),主要監(jiān)控服務(wù)與服務(wù)之間的調(diào)用鏈路以及服務(wù)應(yīng)用指標(biāo)。官方的介紹是:分布式系統(tǒng)的應(yīng)用程序性能監(jiān)視工具,專(zhuān)為微服務(wù)、云原生架構(gòu)和基于容器(Docker、K8s、Mesos)架構(gòu)而設(shè)計(jì)。

假設(shè),當(dāng)我們的使用Nginx/OpenResty 為我們的微服務(wù)做負(fù)載均衡的時(shí)候,怎樣才能將整條鏈路通過(guò)請(qǐng)求串起來(lái),以及怎樣保證整個(gè)鏈路的拓?fù)鋱D正確呢?目前的解決方案是在 Nginx 中支持鏈路信息的上報(bào),同時(shí)能夠?qū)⒄?qǐng)求鏈路關(guān)鍵信息傳遞給上游應(yīng)用。     

Skywalking 7.x 開(kāi)始支持 HTTP 1.1

Skywalking 監(jiān)控 Java、Golang、Node、.NET 語(yǔ)言的鏈路都是采用了 SDK 或者 Agent 的方式將數(shù)據(jù)上報(bào)到 Skyalking 后端。不過(guò)都是采用 gRPC 的方式和后端交互,Apache Nginx Lua考慮到 Nginx 足以勝任 10K 以上并發(fā)連接響應(yīng),并沒(méi)有采用 Nginx gRPC的方式,因此需要 Skywalking 支持 HTTP 1.1 的通信接口。 

怎么玩起來(lái)?

這里先畫(huà)一個(gè)怎么玩的邏輯圖:

怎么實(shí)現(xiàn)Skywalking支持HTTP 1.1通信接口  
skywalking_nginx_lua

  • 首先安裝 Openresty 參照官網(wǎng):https://openresty.org/cn/download.html

Macos 系統(tǒng)采用 Homebrew 安裝:

> brew install openresty/brew/openresty

==> Summary
????  /usr/local/Cellar/openresty/1.15.8.2: 303 files, 6.5MB, built in 1 minute
==> Caveats
==> openresty-openssl
openresty-openssl is keg-only, which means it was not symlinked into /usr/local,
because only for use with OpenResty.

If you need to have openresty-openssl first in your PATH run:
 echo 'export PATH="/usr/local/opt/openresty-openssl/bin:$PATH"' >> ~/.zshrc

For compilers to find openresty-openssl you may need to set:
 export LDFLAGS="-L/usr/local/opt/openresty-openssl/lib"
 export CPPFLAGS="-I/usr/local/opt/openresty-openssl/include"

==> openresty
To have launchd start openresty/brew/openresty now and restart at login:
 brew services start openresty/brew/openresty
Or, if you don't want/need a background service you can just run:
 openresty
 
  • 克隆或者下載 Apache Nginx Lua庫(kù)
git clone https://github.com/apache/skywalking-nginx-lua.git
cd skywalking-nginx-lua/examples/
 

該目錄存放了關(guān)于Nginx的樣例配置,如下是部分內(nèi)容:

  • nginx.conf:
http {
  # 這里指向剛剛克隆下來(lái)的 skywalking nginx lua項(xiàng)目
   lua_package_path "path/to/skywalking-nginx-lua/lib/skywalking/?.lua;;";
   # Buffer represents the register inform and the queue of the finished segment
   lua_shared_dict tracing_buffer 100m;
   
   init_worker_by_lua_block {
       local metadata_buffer = ngx.shared.tracing_buffer

       metadata_buffer:set('serviceName', 'User Service Name')
       -- Instance means the number of Nginx deloyment, does not mean the worker instances
       metadata_buffer:set('serviceInstanceName', 'User Service Instance Name')

       # 這里需要指定上報(bào)Skywalking 的后端地址。端口默認(rèn)是12800
       require("client"):startBackendTimer("http://127.0.0.1:12800")
   }

   server {
       listen 8080;
       location /test {
           default_type text/html;

           rewrite_by_lua_block {
               require("tracer"):start("upstream service")
           }
           # 這里則是 上圖中 nginx 上游服務(wù)的地址
           proxy_pass http://127.0.0.1:8080/upstream/test;
           body_filter_by_lua_block {
               if ngx.arg[2] then
                   require("tracer"):finish()
               end
           }
           log_by_lua_block {
               require("tracer"):prepareForReport()
           }
       }
   }
}
 
  • 直接啟動(dòng) OpenResty 即可,并指定配置文件,例如:
openresty -c /Users/tanjian/gitprojects/skywalking-nginx-lua/examples/nginx.conf

“怎么實(shí)現(xiàn)Skywalking支持HTTP 1.1通信接口”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文名稱(chēng):怎么實(shí)現(xiàn)Skywalking支持HTTP1.1通信接口
標(biāo)題鏈接:http://muchs.cn/article8/iehjop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、自適應(yīng)網(wǎng)站、網(wǎng)站制作網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化