真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

效果圖

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

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

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

搜索SQL的類(lèi)型

多線(xiàn)程(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查詢(xún)并生成追蹤的插件:istio-gorm-tracing

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

kubernetes上使用Istio管控微服務(wù)后,微服務(wù)之間的調(diào)用會(huì)自動(dòng)上傳到Jaeger的收集器。但只能追蹤到服務(wù)層,這是我不能接受的,我希望能進(jìn)一步追蹤到服務(wù)中的所有MySQL查詢(xún),記錄每個(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信息

每次查詢(xún)都會(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ù)名稱(chēng)
        "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了。


當(dāng)前題目:微服務(wù)追蹤SQL(支持Isto管控下的gorm查詢(xún)追蹤)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/dsoicpp.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部