精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

PHP 服務實現性能剖析、跟蹤和可觀察性實踐

開發 前端
數據上報至鏈路追蹤控制臺后,鏈路追蹤組件進行實時聚合計算和持久化,形成鏈路明細、性能總覽、實時拓撲等監控數據。您可以據此進行問題排查與診斷。

簡介

鏈路追蹤Tracing Analysis為分布式應用的開發者提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲、應用依賴分析等工具,可以幫助開發者快速分析和診斷分布式應用架構下的性能瓶頸,提高微服務時代下的開發診斷效率。

官方地址:https://github.com/openzipkin/zipkin

Zipkin運行架構

圖片圖片

產品架構(鏈路追蹤)

圖片圖片

鏈路追蹤的主要工作流程

  1. 客戶側的應用程序通過集成鏈路追蹤的多語言客戶端SDK上報服務調用數據。鏈路追蹤支持多種開源社區的SDK,且支持OpenTracing標準。
  2. 數據上報至鏈路追蹤控制臺后,鏈路追蹤組件進行實時聚合計算和持久化,形成鏈路明細、性能總覽、實時拓撲等監控數據。您可以據此進行問題排查與診斷。
  3. 調用鏈數據可對接下游阿里云產品,例如LogSearch、CloudMonitor、MaxCompute等,用于離線分析、報警等場景。

業務場景

隨著業務越來越復雜,系統也隨之進行各種拆分,特別是隨著微服務架構和容器技術的興起,看似簡單的一個應用,后臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調用最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后臺服務引起的,這時就需要解決如何快速定位服務故障點,zipkin分布式跟蹤系統就能很好的解決這樣的問題。

圖片圖片

請求&響應

微服務架構下,一次請求后端會經歷多個服務調用(所有請求鏈有相同的traceId和不同的spanId),都會沿著traceText帶到每一個服務中。

數據是如何上報的?

直接上報數據

圖片圖片

不通過Agent而直接上報數據的原理(傳統框架。PHP-FPM + Nginx模式)

  • ThinkPHP6.0
  • Laravel
  • Yii2.0

通過Agent上報數據

圖片圖片

通過Agent上報數據的原理(現代化框架。命令行模式)。

  • webman
  • Swoole

安裝

通過composer安裝:

composer require openzipkin/zipkin

使用

創建Tracer

Tracer對象可以用來創建Span對象(記錄分布式操作時間)。Tracer對象還配置了上報數據的網關地址、本機IP、采樣頻率等數據,您可以通過調整采樣率來減少因上報數據產生的開銷。

function create_tracing($endpointName, $ipv4)
{
    $endpoint = Endpoint::create($endpointName, $ipv4, null, 2555);
    /* Do not copy this logger into production.
     * Read https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#log-levels
     */
    $logger = new \Monolog\Logger('log');
    $logger->pushHandler(new \Monolog\Handler\ErrorLogHandler());
    $reporter = new Zipkin\Reporters\Http(\Zipkin\Reporters\Http\CurlFactory::create());
    $sampler = BinarySampler::createAsAlwaysSample();
    $tracing = TracingBuilder::create()
        ->havingLocalEndpoint($endpoint)
        ->havingSampler($sampler)
        ->havingReporter($reporter)
        ->build();
    return $tracing;
}

記錄請求數據

$rootSpan = $tracer->newTrace();
$rootSpan->setName('encode');
$rootSpan->start();

try {
  doSomethingExpensive();
} finally {
  $rootSpan->finish();
}

以上代碼用于記錄請求的根操作,如果需要記錄請求的上一步和下一步操作,則需要傳入上下文。示例:

$span = $tracer->newChild($parentSpan->getContext());
$span->setName('encode');
$span->start();
try {
  doSomethingExpensive();
} finally {
  $span->finish();
}

總體流程

Client Span                                                Server Span
┌──────────────────┐                                       ┌──────────────────┐
│                  │                                       │                  │
│   TraceContext   │           Http Request Headers        │   TraceContext   │
│ ┌──────────────┐ │          ┌───────────────────┐        │ ┌──────────────┐ │
│ │ TraceId      │ │          │ X-B3-TraceId      │        │ │ TraceId      │ │
│ │              │ │          │                   │        │ │              │ │
│ │ ParentSpanId │ │ Inject   │ X-B3-ParentSpanId │Extract │ │ ParentSpanId │ │
│ │              ├─┼─────────>│                   ├────────┼>│              │ │
│ │ SpanId       │ │          │ X-B3-SpanId       │        │ │ SpanId       │ │
│ │              │ │          │                   │        │ │              │ │
│ │ Sampled      │ │          │ X-B3-Sampled      │        │ │ Sampled      │ │
│ └──────────────┘ │          └───────────────────┘        │ └──────────────┘ │
│                  │                                       │                  │
└──────────────────┘                                       └──────────────────┘

webman應用

1. 開通ARMS

開通ARMS地址 https://arms.console.aliyun.com/ (一般有15天試用)

2. 獲得數據上報接入點url

進入 https://tracing.console.aliyun.com/#/globalSetting/cn-hangzhou/process 按照圖示獲得接入點url地址。

圖片圖片

如果你的服務器在阿里云上可以用阿里云vpc網絡接入點,本示例用的是阿里云公網接入點。

安裝

通過composer安裝:

composer require openzipkin/zipkin

使用

1. 編寫中間件

鏈路監控中間件 app\middleware\ArmsMiddleware.php

<?php
/**
 * @desc 全鏈路監控中間件
 * @author Tinywan(ShaoBo Wan)
 * @date 2021/12/6 14:06
 */
declare(strict_types=1);

namespace app\middleware;

use Monolog\Handler\ErrorLogHandler;
use Monolog\Logger;
use support\Log;
use think\facade\Db;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
use Zipkin\Reporters\Http;
use Zipkin\TracingBuilder;
use Zipkin\Samplers\BinarySampler;
use Zipkin\Endpoint;
use Workerman\Timer;
use const Zipkin\Tags\SQL_QUERY;

class ArmsMiddleware implements MiddlewareInterface
{
    /**
     * @desc: 方法描述
     * @param Request $request
     * @param callable $next
     * @return Response
     * @author Tinywan(ShaoBo Wan)
     */
    public function process(Request $request, callable $next) : Response
    {
        static $tracing = null, $tracer = null;
        if (!$tracing) {
            $endpoint = Endpoint::create('開源技術小棧', $request->getRealIp(), null, 2555);
            $logger = new Logger('log');
            $logger->pushHandler(new ErrorLogHandler());
            $reporter = new Http(['endpoint_url' => config('security')['endpoint_url']]);
            $sampler = BinarySampler::createAsAlwaysSample();
            $tracing = TracingBuilder::create()
                ->havingLocalEndpoint($endpoint)
                ->havingSampler($sampler)
                ->havingReporter($reporter)
                ->build();
            $tracer = $tracing->getTracer();
            // 55秒上報一次,盡量將上報對業務的影響減少到最低
            Timer::add(55, function () use ($tracer) {
                $tracer->flush();
            });
            register_shutdown_function(function () use ($tracer) {
                $tracer->flush();
            });
        }

        $rootSpan = $tracer->newTrace();
        $rootSpan->setName($request->controller."::".$request->action);
        $rootSpan->start();
        $request->rootSpan = $rootSpan;
        $request->tracer = $tracer;
        $result = $next($request);

        // 統計sql(日志在內存)
        if (class_exists(Db::class)) {
            $logs = Db::getDbLog(true);
            if (!empty($logs['sql'])) {
                foreach ($logs['sql'] as $sql) {
                    $sqlSpan = $tracer->newChild($rootSpan->getContext());
                    $sqlSpan->setName(SQL_QUERY);
                    $sqlSpan->start();
                    $sqlSpan->tag('db.statement', $sql);
                    $sqlSpan->finish();
                }
            }
        }

        $rootSpan->finish();

        return $result;
    }
}

2. 配置中間件

在 config/middleware.php 中添加全局中間件如下:

return [
    '' => [
        \app\middleware\ArmsMiddleware::class,
    ],
    ...
];

3. 查看監控

訪問地址 https://tracing.console.aliyun.com/ ,效果類似如下:

圖片圖片

接口監控

圖片圖片

數據庫監控

圖片圖片

責任編輯:武曉燕 來源: 開源技術小棧
相關推薦

2024-03-27 14:43:07

.NET Core后端監控可觀測性

2021-07-12 11:24:00

流利說可觀察性平臺阿里云

2025-05-07 11:54:05

2025-05-14 18:05:05

DataStream大數據可觀察性

2021-06-06 22:39:48

網絡安全監控網絡攻擊

2022-08-12 06:26:54

微服務架構

2021-01-26 09:11:16

數字體驗DEM網絡可觀察性

2023-06-12 16:45:20

數據管理

2024-06-18 10:16:49

2021-10-26 10:26:25

云計算云計算環境云應用

2023-02-23 19:28:09

ODD測試

2023-08-24 08:00:00

開發Java可觀察性

2021-06-27 17:18:23

網絡可觀察性網絡網絡運營

2021-11-14 22:14:08

人工智能機器學習工具

2022-07-18 13:37:56

云計算云原生可觀察性

2023-02-21 08:00:00

2023-11-17 08:00:54

Tetragon執行工具

2022-12-29 10:16:12

觀察性系統監視

2025-07-18 10:00:00

云計算架構存儲

2021-09-26 09:50:21

開發技能程序
點贊
收藏

51CTO技術棧公眾號

亚洲av无码精品一区二区| 黄色网址在线视频| 少女频道在线观看免费播放电视剧| 精品在线观看视频| 欧美日韩国产999| a级大片在线观看| 久久亚洲资源中文字| 亚洲综合色噜噜狠狠| 欧美一区二区三区电影在线观看| 91在线精品入口| 一本色道久久综合亚洲精品高清 | 99久久精品费精品国产风间由美| 日韩一级免费一区| 成人3d动漫一区二区三区| 成人在线app| 国产拍欧美日韩视频二区| 成人欧美一区二区| 国产精品久久久久久久成人午夜| 在线观看不卡| 欧美成人高清视频| 日本人亚洲人jjzzjjz| 欧美电影免费网站| 日韩一区二区三区三四区视频在线观看 | 日本高清在线观看wwwww色| 成人午夜看片网址| 91老司机在线| 一区二区视频免费观看| 亚洲精品社区| 欧美激情精品久久久| 久久午夜精品视频| 最新亚洲精品| 日韩精品极品视频免费观看| 中文字幕一二三| 久久69成人| 在线观看视频一区二区| 免费无码av片在线观看| zzzwww在线看片免费| 亚洲精品欧美在线| 成年人黄色在线观看| 成人高清在线| 国产欧美一区二区精品仙草咪| 狠狠色狠狠色综合人人| 成人免费观看在线视频| 国产成人在线观看免费网站| 亚洲一区二区三区四区在线播放| 亚洲一级黄色大片| 老司机精品视频导航| 国产精品爽黄69| 最近中文字幕免费在线观看| 日韩在线观看一区二区| 国产精品成人免费电影| 久久久久久无码午夜精品直播| 性久久久久久| 欧洲精品在线视频| 日韩精品成人免费观看视频| 美女91精品| 国产成人精品久久久| 中文字幕一区二区人妻视频| 日韩av二区在线播放| 国产精品高清在线观看| 中日精品一色哟哟| 久久爱www久久做| 91在线播放国产| 午夜精品久久久久久久99热黄桃 | 国产一级久久久久毛片精品| 国内黄色精品| 色婷婷成人综合| 免费在线观看h片| 精品福利av| 热草久综合在线| 一级做a爱片性色毛片| 看片的网站亚洲| 999热视频| 五月婷婷丁香六月| 国产亚洲一区二区三区| 亚洲伊人婷婷| 久久免费电影| 色综合久久久久综合体| 尤物国产在线观看| 91成人精品在线| 亚洲日韩中文字幕| 国产免费久久久久| 亚洲精品免费观看| 国产精品色视频| www.亚洲天堂.com| 久久久久久久国产精品影院| 伊人久久婷婷色综合98网| 羞羞的网站在线观看| 亚洲成av人片| 亚洲黄色小视频在线观看| 欧美在线在线| 亚洲天堂网站在线观看视频| 开心激情五月网| 国产亚洲综合精品| 国产免费亚洲高清| 天堂网在线资源| 国产精品女主播av| 男人天堂av片| 国产美女久久| 日韩大片免费观看视频播放| 日韩av片在线免费观看| 亚洲国产免费| 91免费在线视频| 日本一本草久在线中文| 亚洲欧美偷拍另类a∨色屁股| jizzjizz国产精品喷水| 日韩毛片免费视频一级特黄| 亚洲国产精品99久久| 污软件在线观看| 日韩av一级电影| 国产在线欧美日韩| av片在线观看免费| 欧美综合在线视频| 女同性恋一区二区三区| 国产精品99久久精品| 国产精品成人一区二区三区吃奶| 可以免费观看的毛片| 国产精品色呦呦| aa在线免费观看| 红杏成人性视频免费看| 不用播放器成人网| 中文字幕在线网址| 久久免费电影网| 欧美一级欧美一级| 久久国际精品| 按摩亚洲人久久| 国产精品传媒在线观看| 久久久久久99久久久精品网站| 青青青青在线视频| 日韩一级淫片| 久久久精品视频在线观看| 欧美激情一区二区三区免费观看| 99精品视频在线观看| 日韩精品一区二区免费| 天堂va欧美ⅴa亚洲va一国产| 色妞久久福利网| 亚洲一区精品在线观看| 亚洲国产高清在线观看视频| 黑森林福利视频导航| 全球av集中精品导航福利| 久久久免费精品| 丰满熟妇乱又伦| 亚洲高清不卡在线观看| 国产精品熟妇一区二区三区四区 | 99视频在线观看免费| 国产精品国产馆在线真实露脸| www.色就是色| 清纯唯美日韩| 国产日韩欧美91| 久热国产在线| 日韩一区二区三区视频| 欧美成人精品欧美一| 国产成人免费视频一区| 日本中文字幕一级片| 日韩中文字幕无砖| 欧美激情第99页| 三级视频在线看| 欧美性猛交xxxx乱大交| 免费看黄色的视频| 美女在线一区二区| 日本三日本三级少妇三级66| 日韩欧美中文字幕在线视频| 国内精品久久久| 理论视频在线| 欧美美女直播网站| 欧美成人三级在线观看| 成+人+亚洲+综合天堂| 国模无码视频一区二区三区| 禁断一区二区三区在线| 国产欧美一区二区三区在线| 日本在线观看大片免费视频| 亚洲福利视频在线| 51国产偷自视频区视频| 国产欧美一区二区三区网站| 亚洲精品在线视频播放| 欧美精品91| 欧美久久久久久| 精品久久久网| 97在线观看免费高清| 波多野结衣在线网站| 5858s免费视频成人| 日本少妇在线观看| 中文字幕精品三区| jjzz黄色片| 日韩国产在线一| 青青视频免费在线| 视频国产一区| 91嫩草免费看| 成人日韩在线| 久久久综合av| 免费av不卡| 亚洲精品www| 中文区中文字幕免费看| 亚洲一区二区免费视频| 亚洲av熟女国产一区二区性色| 国产福利91精品一区| 能在线观看的av网站| 中文字幕亚洲精品乱码| 欧美lavv| 91精品国产自产精品男人的天堂| 国产成人精品在线| 欧美xxxx做受欧美88bbw| 亚洲性生活视频| 无码国产伦一区二区三区视频| 精品视频免费在线| 五月激情六月丁香| 亚洲精选视频免费看| 一级肉体全黄裸片| 99久久精品国产麻豆演员表| 亚洲精品综合在线观看| 美女精品网站| 精品视频在线观看一区| 中文字幕人成人乱码| 日韩av在线电影观看| 97视频免费在线| 91成人入口| 国产精品高潮粉嫩av| caoporn视频在线| 欧美成人第一页| 午夜视频在线观看网站| 亚洲欧洲激情在线| 日韩永久免费视频| 欧美一卡在线观看| 夜夜爽8888| 欧美伊人久久久久久久久影院 | 欧美xxxx×黑人性爽| 久久精品国产亚洲高清剧情介绍 | 激情伊人五月天久久综合| 亚洲爆乳无码专区| av不卡在线| 婷婷无套内射影院| 亚洲国产网站| 男的插女的下面视频| 欧美激情综合色综合啪啪| 中文字幕综合在线观看| 久久一本综合| 亚洲欧美综合一区| jlzzjlzz亚洲女人| 欧美中日韩免费视频| 国产欧美亚洲精品a| 欧美日韩在线精品一区二区三区| 亚洲第一福利专区| 欧美大陆一区二区| 性欧美lx╳lx╳| 久久av一区二区三区亚洲| 神马午夜久久| 欧美日韩亚洲免费| 国产91精品对白在线播放| 欧美大陆一区二区| 激情五月综合| 色999五月色| 欧美成人自拍| 狠狠干视频网站| 欧美视频网站| 欧美日韩精品在线一区二区| 中文久久精品| caoporn超碰97| 麻豆一区二区99久久久久| 777一区二区| 国产成人aaa| 欧美深性狂猛ⅹxxx深喉| 91视频91自| 中文字幕第24页| 中文字幕一区二| 精品国产视频一区二区三区| 玉足女爽爽91| 天堂网一区二区三区| 日韩欧美a级成人黄色| 黄色网址中文字幕| 欧美精品在线观看播放| www.国产精品视频| 日韩电影免费观看在线观看| 噜噜噜在线观看播放视频| 在线观看视频亚洲| 成人无遮挡免费网站视频在线观看| 欧美激情小视频| 波多野结衣亚洲| 91亚洲国产成人精品性色| 都市激情久久| 日日骚一区二区网站| 欧美在线高清| 欧美视频第一区| 经典一区二区三区| 91av在线免费| 综合久久国产九一剧情麻豆| 国产对白videos麻豆高潮| 91久久精品国产91性色tv | 国产一区二区美女诱惑| 精品人妻伦一二三区久| 日本一二三不卡| 黄网站免费在线| 欧美视频在线一区| 欧美视频一二区| 日韩在线观看免费全集电视剧网站| 男人天堂亚洲| 国产精品久久久久久久一区探花| 精品一区二区三区中文字幕视频| 久久超碰亚洲| 欧美一区二区三区久久精品| 色一情一乱一伦一区二区三区日本| 国产精品911| 老熟妇一区二区| 亚洲国产综合在线| 国产伦精品一区二区三区四区| 日韩成人av一区| 五月天激情在线| 国产精品一区二区电影| 欧美变态网站| 欧洲精品在线播放| 精品一区二区三区av| 久久只有这里有精品| 亚洲一二三区不卡| 91亚洲欧美激情| 国产一区二区三区在线免费观看 | 亚洲自拍偷拍精品| 亚洲美女免费视频| 中文字幕你懂的| 亚洲欧美另类自拍| 国产免费拔擦拔擦8x在线播放| 91久久国产综合久久91精品网站| 亚洲永久精品唐人导航网址| 欧美精品卡一卡二| 国产精品538一区二区在线| 五月婷婷婷婷婷| 欧美亚洲国产一卡| 日韩av免费观影| 91国内在线视频| 成人春色在线观看免费网站| 男女激烈动态图| 国内精品国产三级国产a久久| 欧美老女人性生活视频| 一本色道综合亚洲| 全色精品综合影院| 8090成年在线看片午夜| 白嫩白嫩国产精品| 成人在线播放网址| 菠萝蜜视频在线观看一区| 麻豆一区产品精品蜜桃的特点| 欧美剧在线免费观看网站| 亚洲xxxxxx| 成人a视频在线观看| 视频在线不卡免费观看| av网站在线不卡| 国产精品久久久久婷婷| 中文字幕永久免费视频| 一区二区三区视频免费在线观看 | av一区观看| 国产精品chinese| 欧美激情 亚洲| 精品美女久久久久久免费| 免费看日韩av| 91av视频在线| 国产成人调教视频在线观看 | av激情亚洲男人天堂| 五月婷婷激情网| 亚洲人成在线观看| 日韩在线短视频| 国产日本欧美在线| 国产成人精品在线看| 香蕉视频一区二区| 日韩精品久久久久久福利| a一区二区三区| 日韩精品第一页| 久久国产生活片100| avtt天堂在线| 亚洲国产欧美精品| 精精国产xxxx视频在线播放| 欧美中文娱乐网| 久久99精品久久只有精品| 青青草国产在线观看| 亚洲国模精品私拍| 亚洲精品在线影院| 国产日本欧美在线| 99视频国产精品| 一区二区乱子伦在线播放| 久久99国产精品自在自在app| 久久久久观看| 爱情岛论坛成人| 一区二区三区色| 神马久久久久| 国产日韩专区在线| 在线看片一区| 五月婷婷婷婷婷| 亚洲成人av中文字幕| 日韩毛片免费观看| 免费cad大片在线观看| 久久久久国产精品麻豆ai换脸| 91福利在线观看视频| 久久久久久久香蕉网| 色婷婷亚洲mv天堂mv在影片| 欧美性生交xxxxx| 欧美日韩一区二区三区免费看 | 91精品啪在线观看国产18| 欧美激情 亚洲| 欧美电影在线免费观看| 日韩伦理福利| 黄色片免费在线观看视频| 国产亚洲成aⅴ人片在线观看| www.黄色片| 国产精品手机播放|