欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

微服務(wù)追蹤SQL(支持Isto管控下的gorm查詢追蹤)

效果圖

SQL的追蹤正確插入到微服務(wù)的調(diào)用鏈之間

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新樂(lè)免費(fèi)建站歡迎大家使用!

詳細(xì)記錄了SQL的執(zhí)行內(nèi)容和消耗時(shí)間

搜索SQL的類型

多線程(goroutine)下的追蹤效果

在 Kubernetes 中部署微服務(wù)后,通過(guò) Istio 管控微服務(wù)之間的流量,Istio 默認(rèn)會(huì)將微服務(wù)之間的調(diào)用關(guān)系生成追蹤,放入追蹤收集器。但他不支持更細(xì)化的SQL操作,比如執(zhí)行了哪些SQL,每條SQL消耗多長(zhǎng)時(shí)間。為此,我寫(xiě)了一個(gè)簡(jiǎn)單的支持gorm查詢并生成追蹤的插件:istio-gorm-tracing

微服務(wù)追蹤 gorm 插件

kubernetes上使用Istio管控微服務(wù)后,微服務(wù)之間的調(diào)用會(huì)自動(dòng)上傳到Jaeger的收集器。但只能追蹤到服務(wù)層,這是我不能接受的,我希望能進(jìn)一步追蹤到服務(wù)中的所有MySQL查詢,記錄每個(gè) sql 的耗時(shí),所以,我簡(jiǎn)單寫(xiě)了這個(gè)插件。

特性

支持Istio

Istio管控下的容器請(qǐng)求之間,會(huì)自動(dòng)攜帶x-b3-traceid、x-b3-parentspanid、x-b3-spanid、x-b3-sampled等請(qǐng)求頭,這些請(qǐng)求頭都是與zipkin對(duì)齊的。此插件中會(huì)根據(jù)傳遞進(jìn)來(lái)的請(qǐng)求頭信息,自動(dòng)解析出父span,并綁定上下服務(wù)之間的調(diào)用關(guān)系。

記錄SQL信息

每次查詢都會(huì)記錄下執(zhí)行的SQL語(yǔ)句以及執(zhí)行耗時(shí)等信息,作為后期微服務(wù)追蹤的依據(jù)。

使用

package main

import (
    istiogormtracing "github.com/liamhao/istio-gorm-tracing"
    "log"
    "fmt"
    "github.com/gin-gonic/gin"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

func main() {

    router := gin.Default()

    dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", "dbuser", "dbpswd", "dbhost", 3306, "dbname")
    gormDb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        log.Println("mysql連接出現(xiàn)了問(wèn)題:", err.Error())
    } else {
        log.Println("mysql連接成功:", dsn)
    }

    // 這一步很關(guān)鍵,一定要加上,為了啟用我們的插件
    gormDb.Use(istiogormtracing.NewDefault(
        // 你的微服務(wù)名稱
        "istiogormtracing-service",
        // 你的 Jaeger 收集器地址
        "http://127.0.0.1:/api/traces",
    ))

    router.GET("/", func(c *gin.Context) {

        // 這一步很關(guān)鍵,一定要加上,為了SQL能與上下游服務(wù)做關(guān)聯(lián)
        istiogormtracing.H = c.Request.Header

        list := []map[string]interface{}{}
        gormDb.Table("users").Where("name = 'xiaoming'").Find(&list)

        c.JSON(http.StatusOK, map[string]interface{}{
            "istiogormtracing": "ok",
        })
    })

    router.Run(":7000")
}

然后即可在Jaeger面板中看到我們記錄的SQL了。

網(wǎng)頁(yè)題目:微服務(wù)追蹤SQL(支持Isto管控下的gorm查詢追蹤)
當(dāng)前網(wǎng)址:http://chinadenli.net/article38/dsoicpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、靜態(tài)網(wǎng)站、軟件開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(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)

外貿(mào)網(wǎng)站建設(shè)