色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

讓你的Nginx支持分布式追蹤OpenTracing

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2023-03-08 09:54 ? 次閱讀

背景

NGINX 是一個(gè)通用且流行的應(yīng)用程序。也是最流行的 Web 服務(wù)器,它可用于提供靜態(tài)文件內(nèi)容,但也通常與其他服務(wù)一起用作分布式系統(tǒng)中的組件,在其中它用作反向代理、負(fù)載均衡 或 API 網(wǎng)關(guān)。

分布式追蹤 distributed tracing 是一種可用于分析與監(jiān)控應(yīng)用程序的機(jī)制,將追蹤在從源到目的的整個(gè)過程中的單個(gè)請(qǐng)求,這與僅通過單個(gè)應(yīng)用程序域來追蹤請(qǐng)求的形式不同。

換句話說,我們可以說分布式追蹤是對(duì)跨多個(gè)系統(tǒng)的多個(gè)請(qǐng)求的拼接。拼接通常由一個(gè)或多個(gè)相關(guān) ID 完成,并且跟蹤通常是一組記錄的、跨所有系統(tǒng)的結(jié)構(gòu)化日志事件,存儲(chǔ)在一個(gè)中心位置。

在這種背景的情況下, OpenTracing 應(yīng)運(yùn)而生。OpenTracing 是一個(gè)與應(yīng)用供應(yīng)商無關(guān)的 API,它可幫助開發(fā)人員輕松地跟蹤單一請(qǐng)求的域。目前有多種開源產(chǎn)品都支持 OpenTracing(例如,Jaeger, skywalking 等),并將其作為一種檢測(cè)分布式追蹤的標(biāo)準(zhǔn)化方法。

本文將圍繞,從 0 到 1 實(shí)現(xiàn)在 nginx 配置分布式追蹤的架構(gòu)的簡單實(shí)例說明。本文實(shí)例使用的組件為

  • nginx[1] v1.22
  • jaeger-all-in-on[2] v1.38
  • nginx-opentracing[3] v1.22
  • jaeger-client-cpp[4] v0.9

源碼構(gòu)建 nginx-opentracing

準(zhǔn)備 nginx-opentracing

nginx-opentracing[5] 倉庫中可以看到,官方為每個(gè) nginx 版本都提供了一個(gè)編譯好的動(dòng)態(tài)庫(Nginx1.19.13+),我們可以直接拿來使用這個(gè)動(dòng)態(tài)庫,如果你想將這個(gè)利用 Nginx 提供的編譯參數(shù) --add-module=/path/to/module 構(gòu)建為 nginx 的內(nèi)置功能的話,可能會(huì)出現(xiàn)一些問題,例如下面的一些錯(cuò)誤:

ngx_http_opentracing_module.so/configwasfound
/root/nginx-opentracing-0.25.0/opentracing//src/ngx_http_opentracing_module.cpp
Infileincludedfrom/root/nginx-opentracing-0.25.0/opentracing//src/ngx_http_opentracing_module.cpp0:
/root/nginx-opentracing-0.25.0/opentracing//src/load_tracer.h38:fatalerror:opentracing/dynamic_load.h:Nosuchfileordirectory

根據(jù) issue[6] 中查詢得知 nginx-opentracing 需要嵌入到 nginx 中,是需要一些 opentracing-cpp[7] 因?yàn)閷?duì) c++不熟,嘗試調(diào)試很久還是上面的錯(cuò)誤,故直接使用了官方提供的動(dòng)態(tài)庫。

準(zhǔn)備 jaeger-client-cpp

根據(jù) nginx-opentracing 中提到的,還需要一個(gè) jaeger-client-cpp[8] 的 tracer 才可以正常運(yùn)行(這也是作為 jaeger 架構(gòu)中的角色)

來到 jaeger-client-cpp 看到 Release 提供的編譯好的動(dòng)態(tài)庫已經(jīng)很久了,而最新版都沒有提供相應(yīng)編譯的版本,需要我們自己編譯

說明:編譯依賴 CMake 3.3+,gcc 4.9.2+

我們的編譯環(huán)境使用 CentOS 7 默認(rèn) gcc 與 CMake 都符合要求需要自行編譯兩個(gè)的版本。

編譯 gcc

gcc 下載地址:

https://ftp.gnu.org/gnu/gcc/[9]

cdgcc-5.4.0
./contrib/download_prerequisites

mkdirgcc-build-5.4.0
cdgcc-build-5.4.0

/usr/local/src/gcc-5.4.0/configure
--enable-checking=release
--enable-languages=c,c++
--disable-multilib

make&&makeinstall

參考這篇文章:升級(jí) GCC[10]

cd/usr/bin/
mvgccgcc_back
mvg++g++_back
ln-s/usr/local/bin/gccgcc
ln-s/usr/local/bin/g++g++

編譯時(shí)遇到幾個(gè)問題

/lib64/libstdc++.so.6: version GLIBCXX_3.4.20' not found

gcc 編譯,libgcc動(dòng)態(tài)庫有改動(dòng),恢復(fù)原狀即可

configure:error:C++compilermissingorinoperational

make[2]:***[configure-stage1-libcpp]Error1
make[2]:Leavingdirectory`/home/clay/programming/C++/gcc-4.8.1'
make[1]:***[stage1-bubble]Error2
make[1]:Leavingdirectory`/home/clay/programming/C++/gcc-4.8.1'
make:***[all]Error2

編譯 cmake

./configure--prefix=/path/to/app

make
makeinstall

這里遇到一個(gè)小問題 編譯過程中遇到 [libstdc++.so.6: version GLIBCXX_3.4.20 not found

因?yàn)檫@里使用了自己編譯的 gcc 版本,需要指定下動(dòng)態(tài)庫的路徑[11]

LD_LIBRARY_PATH=/usr/local/lib64./configure--prefix=/usr/local/cmake

編譯 jaeger-client-cpp

這里根據(jù)官方提供的步驟操作即可

cdjaeger-client-cpp-0.9.0/
mkdirbuild
cdbuild
#這里建議使用下特色上網(wǎng),編譯過程中會(huì)使用Hunter自動(dòng)下載所需的依賴項(xiàng)
ALL_PROXY=http://x.0.0.x:10811/usr/local/cmake/bin/cmake..
make

注:依賴項(xiàng)挺大的,下載時(shí)間可能很長,會(huì) hang 主,只需等待結(jié)束即可

編譯完成后 libjaegertracing.so.0.9.0 則是我們需要的

編譯 nginx

./configure
--user=web_www
--group=web_www
--with-pcre
--with-compat
--with-http_ssl_module
--with-http_gzip_static_module
--prefix=/root/nginx
--with-http_stub_status_module

--with-compat 必須加上,表面允許使用動(dòng)態(tài)庫,否則編譯完在啟動(dòng)時(shí)會(huì)報(bào)下面的錯(cuò)誤

nginx:[emerg]module"/root/nginx/conf/ngx_http_opentracing_module.so"isnotbinarycompatiblein/root/nginx/conf/nginx.conf:1

遇到的問題,cc nou found,這里只需將 gcc 軟連接一份為 cc 即可

配置 nginx

準(zhǔn)備 jaeger-client 的配置

jaeger.json,參數(shù)的說明可以參考configuration[12]

{
"service_name":"nginx",//服務(wù)名
"sampler":{
"type":"const",
"param":1
},
"reporter":{
"localAgentHostPort":"jaeger:6831"//jaegeragent的地址
},
"headers":{//jaeger的默認(rèn)的jaegerBaggage頭設(shè)置
"jaegerDebugHeader":"jaeger-debug-id",
"jaegerBaggageHeader":"jaeger-baggage",
"traceBaggageHeaderPrefix":"uberctx-"
},
"baggage_restrictions":{
"denyBaggageOnInitializationFailure":false,
"hostPort":""
}
}

在 nginx 中開啟 opentracing

對(duì)于更多的 nginx-opentracing 的配置說明參數(shù)可以參考 Reference.md[13]

#加載 OpenTracing 動(dòng)態(tài)模塊。
load_moduleconf/ngx_http_opentracing_module.so;
worker_processes1;
userrootroot;

events{
worker_connections1024;
}
http{
log_formatopentracing'{"timestamp":"$time_iso8601",'
'"source":"$server_addr",'
'"hostname":"$hostname",'
'"ip":"$http_x_forwarded_for",'
'"traceID":"$opentracing_context_uber_trace_id",'
'"client":"$remote_addr",'
'"request_method":"$request_method",'
'"scheme":"$scheme",'
'"domain":"$server_name",'
'"referer":"$http_referer",'
'"request":"$request_uri",'
'"args":"$args",'
'"size":$body_bytes_sent,'
'"status":$status,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamaddr":"$upstream_addr",'
'"http_user_agent":"$http_user_agent",'
'"https":"$https"'
'}';
#加載tracer,這里使用的jaeger,需要傳遞配置文件
opentracing_load_tracerconf/libjaegertracing.soconf/jaeger.json;
#啟用tracing
opentracingon;
#設(shè)置tag,可選參數(shù)
opentracing_taghttp_user_agent$http_user_agent;
includemime.types;
default_typeapplication/octet-stream;
sendfileon;
keepalive_timeout65;
server{
listen80;
server_namelocalhost;
location/{
opentracing_operation_name$uri;
opentracing_propagate_context;
roothtml;
indexindex.htmlindex.htm;
}
access_loglogs/access.logopentracing;
error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
}
}

注:這里使用的 opentracing-nginx 的動(dòng)態(tài)庫為 ot16 ,linux-amd64-nginx-1.22.0-ot16-ngx_http_module.so.tgz ,另外一個(gè)版本不兼容,-t 檢查語法時(shí)會(huì)提示

配置說明

對(duì)于每一個(gè) location 都可以對(duì)其設(shè)置別名,這個(gè)就是 opentracing_operation_name 與 opentracing_location_operation_name 的區(qū)別

http{
...
location=/upload/animal{
opentracing_location_operation_nameupload;
...

更多的配置說明可以參考 Tutorial.md[14]

此時(shí)我們可以在 jaeger 上查看,可以看到 NGINX 的 span(因?yàn)檫@里只配置了 NGINX,沒有配置更多的后端)。

0eb18926-bd34-11ed-bfe3-dac502259ad0.png

0ee7615e-bd34-11ed-bfe3-dac502259ad0.png

審核編輯 :李倩



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9219

    瀏覽量

    85597
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    516

    瀏覽量

    25494
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    12188

原文標(biāo)題:讓你的 Nginx 支持分布式追蹤 OpenTracing

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分布式軟件系統(tǒng)

    分布式軟件系統(tǒng)分布式軟件系統(tǒng)(Distributed Software Systems)是支持分布式處理的軟件系統(tǒng),是在由通信網(wǎng)絡(luò)互聯(lián)的多處理機(jī)體系結(jié)構(gòu)上執(zhí)行任務(wù)的系統(tǒng)。它包括
    發(fā)表于 07-22 14:53

    LED分布式恒流原理

    ,智能化一定離不了灰度等級(jí)再現(xiàn)。[url=][/url] 分布式恒流技術(shù)還有一個(gè)特點(diǎn)是,AC電源部分繼續(xù)采用傳統(tǒng)開關(guān)電源,恒壓的供電模式。開關(guān)電源技術(shù)積累會(huì)給LED電源設(shè)計(jì)創(chuàng)造品質(zhì)條件,雖然加速老化
    發(fā)表于 03-09 16:47

    分布式發(fā)電技術(shù)與微型電網(wǎng)

    幾種分布式發(fā)電簡介2.分布式發(fā)電與配電網(wǎng)互聯(lián)問題3.微型電網(wǎng)技術(shù)4.分布式發(fā)電(電源)技術(shù)應(yīng)用的障礙和瓶頸5.分布式發(fā)電(電源)技術(shù)發(fā)展方向6.結(jié)語
    發(fā)表于 03-11 13:37

    我國分布式光伏發(fā)電發(fā)展現(xiàn)狀

    。  我國光伏產(chǎn)業(yè)嚴(yán)重依賴國外市場的風(fēng)險(xiǎn)在歐美“雙反”時(shí)暴露無遺。為挽救我國光伏產(chǎn)業(yè),國家今年連續(xù)出臺(tái)政策支持分布式光伏發(fā)電發(fā)展。為了響應(yīng)國家政策,國家電網(wǎng)公司發(fā)布分布式光伏發(fā)電相關(guān)管理辦法,為促進(jìn)
    發(fā)表于 04-22 14:38

    開放分布式追蹤OpenTracing)入門與 Jaeger 實(shí)現(xiàn)

    改動(dòng)。OpenTracing為了解決不同的分布式追蹤系統(tǒng) API 不兼容的問題,誕生了 OpenTracing 規(guī)范。OpenTracing
    發(fā)表于 03-07 16:27

    基于分布式調(diào)用鏈監(jiān)控技術(shù)的全息排查功能

    鏈路的分布式鏈路追蹤功能結(jié)合周邊的本地堆棧排查,性能Metrics統(tǒng)計(jì),業(yè)務(wù)全息排查三大附加功能,形成了完整的鏈路監(jiān)控解決方案。為方便用戶了解ARMS 基于分布式鏈路追蹤技術(shù)的全息排查
    發(fā)表于 08-07 17:02

    分布式系統(tǒng)的優(yōu)勢(shì)是什么?

    當(dāng)討論分布式系統(tǒng)時(shí),我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡(luò)的、并行的、并發(fā)的和分散的。分布式處理是一個(gè)相對(duì)較新的領(lǐng)域,所以還沒有‘致的定義。與順序計(jì)算相比、并行的、并發(fā)的和
    發(fā)表于 03-31 09:01

    HarmonyOS應(yīng)用開發(fā)-分布式設(shè)計(jì)

    設(shè)計(jì)理念HarmonyOS 是面向未來全場景智慧生活方式的分布式操作系統(tǒng)。對(duì)消費(fèi)者而言,HarmonyOS 將生活場景中的各類終端進(jìn)行能力整合,形成“One Super Device”,以實(shí)現(xiàn)
    發(fā)表于 09-22 17:11

    支持掉線自動(dòng)報(bào)警Profinet遠(yuǎn)程分布式IO模塊分享

    華杰智控Profinet遠(yuǎn)程分布式IO模塊不但支持IO, 同時(shí)還支持把modbus RTU的終端設(shè)備如變頻器,溫控表,電表等等轉(zhuǎn)成Profinet協(xié)議接入主PLC。 主PLC不需要處理modbus
    發(fā)表于 07-02 06:49

    各種分布式電源的電氣特性

    PS:滲透率的概念:從字面上理解,“滲透”就是由分布式電源發(fā)出的功率進(jìn)入(滲入)到配電系統(tǒng),所謂的“率”就是由分布式電源發(fā)出的電和整個(gè)系統(tǒng)所消耗的電(或者說總發(fā)電量)的一個(gè)比值。各種分布式電源的電氣
    發(fā)表于 07-12 07:54

    如何高效完成HarmonyOS分布式應(yīng)用測(cè)試?

    于解決HarmonyOS分布式應(yīng)用UI自動(dòng)化測(cè)試及測(cè)試效率問題。主要包含以下特性:① 提供30+測(cè)試API,覆蓋控件查找、控件操作、按鍵注入等,并支持基礎(chǔ)的分布式UI自動(dòng)化測(cè)試,如:findComponent
    發(fā)表于 12-13 18:07

    【學(xué)習(xí)打卡】OpenHarmony的分布式任務(wù)調(diào)度

    了,除了串行作業(yè)之外,分布式調(diào)度系統(tǒng)也支持并行作業(yè)。分布式系統(tǒng)的架構(gòu)有以下幾種:1.集中式:通過中央節(jié)點(diǎn)將任務(wù)分配給工作節(jié)點(diǎn)或執(zhí)行節(jié)點(diǎn),并在這些執(zhí)行節(jié)點(diǎn)之間編排任務(wù)。2.去中心化:有多個(gè)中心節(jié)點(diǎn),每個(gè)
    發(fā)表于 07-18 17:06

    HarmonyOS應(yīng)用開發(fā)-分布式語音攝像頭體驗(yàn)

    一、組件說明使用HarmonyOS分布式文件系統(tǒng)和AI語音識(shí)別功能開發(fā)了一個(gè)分布式語音攝像頭。使用此相機(jī)應(yīng)用程序,同一分布式網(wǎng)絡(luò)下的不同設(shè)備可以實(shí)時(shí)看到主設(shè)備拍攝的照片。這有效解決了對(duì)方拍照時(shí)需要
    發(fā)表于 08-24 15:06

    常見的分布式供電技術(shù)有哪些?

      分布式供電技術(shù)是指將發(fā)電設(shè)備建設(shè)在用戶或供電系統(tǒng)端,將發(fā)電與負(fù)荷直接相連,通過局部供電的方式滿足用戶的電力需求。其主要特點(diǎn)是將傳統(tǒng)的集中式供電方式改為分散供電方式,不僅既有大型電站向小型分布式
    發(fā)表于 04-10 16:28

    OpenHarmony技術(shù)論壇:分布式相機(jī)和分布式圖庫功能

    API開放相機(jī)能力、新增了相機(jī)權(quán)限校驗(yàn)控制、分布式相機(jī)能力、支持變焦及閃光燈控制。 媒體庫特性新增了分布式媒體庫能力,支持跨設(shè)備的媒體文件查看。 ? ? 來源:OpenHarmony
    的頭像 發(fā)表于 04-25 15:06 ?1843次閱讀
    OpenHarmony技術(shù)論壇:<b class='flag-5'>分布式</b>相機(jī)和<b class='flag-5'>分布式</b>圖庫功能
    主站蜘蛛池模板: 国产在线精彩亚洲久久| 免费人妻AV无码专区五月| 国产av在线看的| 国产成人h在线视频| 国产精品色吧国产精品| 国产在线综合色视频| 久久re6热在线视频| 老师好爽你下面水好多视频| 农民下乡在线观看3| 色即是空 BT| 亚洲国产女人aaa毛片在线| 一边摸一边桶一边脱免费| 97超碰射射射| 国产99久久久国产精品成人| 国精产品一区一区三区M| 久久日本片精品AAAAA国产| 欧美多毛的大隂道| 天堂草原天黑黑| 亚洲一级特黄| 99热这里只有的精品| 国产精品嫩草影院| 久久精品国产亚洲AV蜜臀| 欧美日韩另类在线专区| 无人区日本电影在线观看| 一日本道伊人久久综合影| caoporm国产精品视频免费| 国产精品成人久久久久A伋| 久久草福利自拍视频在线观看| 欧美z000z猪| 亚洲 欧美 国产 综合不卡| 最新老头恋老OLDMAN| 嘟嘟嘟WWW免费高清在线中文| 国产中文在线观看| 欧美xxxx印度| 亚洲精品蜜桃AV久久久| 99久久精品久久久| 国产午夜免费视频片夜色| 免费99精品国产自在现线| 无码专区久久综合久综合字幕| 中文字幕人成乱码中国| 国产成人ae在线观看网站站|