日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何讓你的Nginx支持分布式追蹤詳解

瀏覽:365日期:2023-03-13 15:37:20
目錄
  • Background
  • 源碼構建nginx-opentracing
    • 準備nginx-opentracing
    • 準備jaeger-client-cpp
    • 編譯gcc
    • 編譯cmake
    • 編譯jaeger-client-cpp
    • 編譯nginx
  • 配置nginx
    • 準備jaeger-client的配置
    • 在nginx中開啟opentracing
  • 總結

    Background

    NGINX 是一個通用且流行的應用程序。也是最流行的 Web 服務器,它可用于提供靜態文件內容,但也通常與其他服務一起用作分布式系統中的組件,在其中它用作反向代理、負載均衡 或 API 網關。

    分布式追蹤 distributed tracing 是一種可用于分析與監控應用程序的機制,將追蹤在從源到目的的整個過程中的單個請求,這與僅通過單個應用程序域來追蹤請求的形式不同。

    換句話說,我們可以說分布式追蹤是對跨多個系統的多個請求的拼接。拼接通常由一個或多個相關 ID 完成,并且跟蹤通常是一組記錄的、跨所有系統的結構化日志事件,存儲在一個中心位置。

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

    本文將圍繞,從0到1實現在nginx配置分布式追蹤的架構的簡單實例說明。本文實例使用的組件為

    • nginx-1.22
    • jaeger-all-in-on v1.38
    • nginx-opentracing v1.22
    • jaeger-client-cpp v0.9

    源碼構建nginx-opentracing

    準備nginx-opentracing

    準備jaeger-client-cpp

    根據 nginx-opentracing 中提到的,還需要一個 jaeger-client-cpp 的 tracer 才可以正常運行(這也是作為jaeger架構中的角色)

    來到 jaeger-client-cpp 看到Release提供的編譯好的動態庫已經很久了,而最新版都沒有提供相應編譯的版本,需要我們自己編譯

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

    我們的編譯環境使用CentOS 7 默認gcc與CMake都符合要求需要自行編譯兩個的版本。

    編譯gcc

    gcc下載地址:https://ftp.gnu.org/gnu/gcc/

    cd gcc-5.4.0./contrib/download_prerequisitesmkdir gcc-build-5.4.0cd gcc-build-5.4.0/usr/local/src/gcc-5.4.0/configure \	--enable-checking=release \	--enable-languages=c,c++ \	--disable-multilib	make && make install

    引用處理 refer 1

    cd /usr/bin/mv gcc gcc_backmv g++ g++_backln -s /usr/local/bin/gcc gccln -s /usr/local/bin/g++ g++

    編譯時遇到幾個問題

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

    gcc 編譯,libgcc動態庫有改動,恢復原狀即可

    configure: error: C++ compiler missing or inoperationalmake[2]: \*** [configure-stage1-libcpp] Error 1    make[2]: Leaving directory `/home/clay/programming/C++/gcc-4.8.1"    make[1]: \*** [stage1-bubble] Error 2    make[1]: Leaving directory `/home/clay/programming/C++/gcc-4.8.1"    make: \*** [all] Error 2

    編譯cmake

    ./configure --prefix=/path/to/appmakemake install

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

    因為這里使用了自己編譯的gcc版本,需要指定下動態庫的路徑 refer 2

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

    編譯jaeger-client-cpp

    這里根據官方提供的步驟操作即可

    cd jaeger-client-cpp-0.9.0/mkdir buildcd build# 這里建議使用下強國特色上網,編譯過程中會使用Hunter自動下載所需的依賴項ALL_PROXY=http://x.0.0.x:10811 /usr/local/cmake/bin/cmake .. make

    注:依賴項挺大的,下載時間可能很長,會hang主,只需等待結束即可

    ?編譯完成后 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 必須加上,表面允許使用動態庫,否則編譯完在啟動時會報下面的錯誤

    nginx: [emerg] module "/root/nginx/conf/ngx_http_opentracing_module.so" is not binary compatible in /root/nginx/conf/nginx.conf:1

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

    配置nginx

    準備jaeger-client的配置

    jaeger.json

    {  "service_name": "nginx", // 服務名  "sampler": {    "type": "const",    "param": 1  },  "reporter": {    "localAgentHostPort": "jaeger:6831" // jaeger agent的地址  },  "headers": { // jaeger的默認的jaeger Baggage頭設置    "jaegerDebugHeader": "jaeger-debug-id",    "jaegerBaggageHeader": "jaeger-baggage",    "traceBaggageHeaderPrefix": "uberctx-"  },  "baggage_restrictions": {    "denyBaggageOnInitializationFailure": false,    "hostPort": ""  }}

    在nginx中開啟opentracing

    # 加載 OpenTracing 動態模塊。load_module conf/ngx_http_opentracing_module.so;worker_processes  1;user root root;events {    worker_connections  1024;}http {    log_format opentracing "{"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_tracer conf/libjaegertracing.so conf/jaeger.json;    # 啟用 tracing     opentracing on;     # 設置tag,可選參數    opentracing_tag http_user_agent $http_user_agent;    include       mime.types;    default_type  application/octet-stream;    sendfileon;    keepalive_timeout  65;    server {listen       80;server_name  localhost;location / {    opentracing_operation_name $uri;	    opentracing_propagate_context;    root   html;    index  index.html index.htm;}	access_log logs/access.log opentracing;error_page   500 502 503 504  /50x.html;location = /50x.html {    root   html;}    }}

    注:這里使用的 opentracing-nginx 的動態庫為 ot16 ,linux-amd64-nginx-1.22.0-ot16-ngx_http_module.so.tgz ,另外一個版本不兼容,-t 檢查語法時會提示

    此時我們可以在jaeger上查看,可以看到 NGINX 的 span(因為這里只配置了NGINX,沒有配置更多的后端)。

    Reference

    1 CentOS7 升級 GCC 到 5.4.0 版本

    2 libstdc++.so.6: version GLIBCXX_3.4.20 not found

    3 nginx load_module

    總結

    到此這篇關于如何讓你的Nginx支持分布式追蹤的文章就介紹到這了,更多相關Nginx支持分布式追蹤內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: Nginx
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    久久高清免费| 99亚洲精品| 久久精品xxxxx| 日韩高清不卡一区二区| 亚洲精品成人一区| 日本一区中文字幕| 日韩国产在线一| 国产欧美日韩一级| 欧美片第1页综合| 国产日韩视频| 国产精品欧美在线观看| 国产精品白丝一区二区三区| 日本三级亚洲精品| 国产欧美丝祙| 老色鬼精品视频在线观看播放| 国产精品一区免费在线| 成人日韩av| 伊人久久亚洲影院| 91成人福利| 视频福利一区| 日韩黄色av| 欧洲精品一区二区三区| 亚洲激情中文| 日本va欧美va精品发布| 欧美黄色精品| 亚洲一区国产| 欧美精品1区| 图片区亚洲欧美小说区| 亚洲欧美一级| 成人看片网站| 欧美日韩xxxx| 亚洲手机视频| 里番精品3d一二三区| 一区视频在线| 国产美女高潮在线观看| 日韩一区精品| 亚洲精品小说| 欧美1区二区| 国产高清不卡| 亚洲深夜影院| 国产suv精品一区二区四区视频| 欧美日韩视频网站| 国产精品视频一区二区三区| 久久九九精品| 精品视频网站| 欧美视频一区| 视频在线在亚洲| 激情综合网站| 日韩不卡视频在线观看| 精品国产网站| 美女久久久久久| 国产调教精品| 国产伦理一区| 日本午夜精品久久久久| 中文无码日韩欧| 国产一区二区精品| 久久国产亚洲精品| 久久精品成人| 成人va天堂| 免费看av不卡| 免费av一区二区三区四区| 99久久激情| 999精品色在线播放| 久久高清精品| 午夜影院欧美| 午夜亚洲福利在线老司机| 欧美福利在线| 羞羞答答国产精品www一本| 亚洲免费网址| 日日夜夜免费精品视频| 婷婷精品久久久久久久久久不卡| 蜜臀av在线播放一区二区三区| 国产精品日韩欧美一区| 亚洲黄页一区| 一区二区三区四区日韩| 日本aⅴ亚洲精品中文乱码| 国产精品综合色区在线观看| 国产一区二区三区日韩精品 | 首页欧美精品中文字幕| 一区二区高清| 黄色欧美在线| 国产亚洲高清视频| 国产精品一区二区美女视频免费看| 精品网站999| 狠狠干综合网| 综合国产精品| 午夜性色一区二区三区免费视频| 日韩高清不卡一区| 久久久久久一区二区| 99久久激情| 欧美精品影院| 精品日韩毛片| 国产精品天天看天天狠| 久久久9色精品国产一区二区三区| 99视频精品| 国产高潮在线| 青青国产91久久久久久| 久久人人精品| 久久久精品区| 婷婷五月色综合香五月| 欧美日韩一二三四| 欧美精品中文| 中文字幕亚洲精品乱码| 亚洲伦乱视频| 久久精品欧洲| 欧美视频一区| 亚洲人成网77777色在线播放| 亚洲性色av| 精品视频免费| 国产精品分类| 国产一卡不卡| 天堂va在线高清一区| 好看的亚洲午夜视频在线| 成人日韩在线| 日韩欧美一区二区三区免费看| 欧美一区精品| 久久亚洲图片| 亚洲在线观看| 性色一区二区| 热久久久久久久| 亚洲综合国产| 六月婷婷一区| 男人的天堂久久精品| 在线亚洲激情| 99在线观看免费视频精品观看| 99视频精品全部免费在线视频| 国产欧洲在线| 国产综合视频| 国产精品普通话对白| 亚洲黄色影院| 综合亚洲自拍| 亚洲一二av| 欧美日韩亚洲三区| 国产精品白丝一区二区三区| 久久av资源| 日韩在线高清| 久久国产成人| 国产伦精品一区二区三区在线播放| 美日韩一区二区三区| 精品视频一区二区三区四区五区| 岛国av在线播放| 国产一区二区高清| 欧美日一区二区在线观看| 国内精品亚洲| 香蕉久久99| 亚洲毛片在线| 国产黄色精品| 99国产精品一区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩黄色免费网站| 欧美韩日一区| 国产农村妇女精品一二区| 国产欧美综合一区二区三区| 日本久久综合| 丝袜脚交一区二区| 老色鬼精品视频在线观看播放| 91精品国产91久久久久久黑人| 日本一区二区中文字幕| 一本大道色婷婷在线| 日本一区二区三区视频在线看| 日韩伦理一区| 天堂精品久久久久| 亚洲性色av| 国产日韩欧美| 亚洲精品国产精品粉嫩| 成人免费网站www网站高清| 日韩精选在线| 欧美特黄一区| 日本不良网站在线观看| 日本91福利区| 亚洲资源网站| 国产亚洲综合精品| 神马久久午夜| 国产欧美啪啪| 午夜性色一区二区三区免费视频| 97精品视频在线看| 91精品国产自产观看在线| 精品1区2区3区4区| 99成人超碰| 日韩欧美视频专区| 国产成人黄色| 精品国产亚洲一区二区三区大结局| 日韩一二三区在线观看| 视频一区二区中文字幕| 夜夜嗨一区二区| 欧美精品一卡| 欧美不卡视频| 尹人成人综合网| 国产精品普通话对白| 亚洲欧洲午夜| 亚洲一区免费| 图片区亚洲欧美小说区| 亚洲国产影院| av成人国产| 亚洲影院天堂中文av色| 中文字幕一区二区精品区| 亚洲精品黄色| 国产探花在线精品| 久久一区国产| 久久九九99|