1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        使用 Loki 采集微服務(wù)日志

        共 6485字,需瀏覽 13分鐘

         ·

        2020-11-19 19:04

        前面我們介紹了 Grafana Labs 推出了 Loki V2 版本,新版本提供了不少新的特性,這里我們就來介紹下如何在 Kubernetes 上使用新版本的 Loki 吧。

        在配置 Loki 之前,我們先安裝一些微服務(wù)來產(chǎn)生一些日志和事件,然后通過 Loki 來采集這些日志數(shù)據(jù),這里我們會使用 FluentBit 將日志轉(zhuǎn)發(fā)給 Loki,然后使用 Grafana 上的 Loki 數(shù)據(jù)源來分析日志。

        示例應(yīng)用

        這里我們在 Kubernetes 集群上使用啟用了 Istio 的命名空間來安裝示例應(yīng)用 microservices-demo,如果你沒有安裝 Istio,可以直接查看官方文檔進行安裝配置。Istio 安裝完成后,我可以創(chuàng)建一個新的命名空間來進行測試:

        $?kubectl?create?ns?demo
        #?Enable?istio?sidecar?injection
        $?kubectl?label?namespace?demo?istio-injection=enabled?

        然后安裝 microservices-demo 這個應(yīng)用:

        #?Clone?the?repo?with?all?microservices?to?be?deployed
        $?git?clone?https://github.com/GoogleCloudPlatform/microservices-demo
        $?cd?microservices-demo
        #?Install?the?services
        #?鏡像默認是gcr的,需要自行替換可訪問的鏡像地址
        $?kubectl?apply?-n?demo??-f?./release/kubernetes-manifests.yaml
        ......
        #?Setup?istio?gateway?and?virtual?services?for?routing
        $?kubectl?apply?-n?demo??-f?./release/istio-manifests.yaml
        gateway.networking.istio.io/frontend-gateway?created
        virtualservice.networking.istio.io/frontend-ingress?created
        virtualservice.networking.istio.io/frontend?created
        serviceentry.networking.istio.io/whitelist-egress-googleapis?created
        serviceentry.networking.istio.io/whitelist-egress-google-metadata?created

        安裝完成后,可以使用 kubectl -n demo get pods 來查看是否正常。

        $?kubectl?get?pods?-n?demo
        NAME?????????????????????????????????????READY???STATUS????RESTARTS???AGE
        adservice-66949bd448-4thj4???????????????2/2?????Running???0??????????29m
        cartservice-9d88457-27qnk????????????????2/2?????Running???2??????????29m
        checkoutservice-5cb565d6cd-fsqdv?????????2/2?????Running???0??????????29m
        currencyservice-69746f5bfb-6m7dj?????????2/2?????Running???0??????????29m
        emailservice-f4b7dddd4-vw4gn?????????????2/2?????Running???0??????????29m
        frontend-644d768794-glmfj????????????????2/2?????Running???0??????????29m
        loadgenerator-7895d4cdb6-jbb68???????????2/2?????Running???7??????????29m
        paymentservice-7bcf59648-d2zks???????????2/2?????Running???0??????????29m
        productcatalogservice-797f6494f8-fgl2b???2/2?????Running???0??????????29m
        recommendationservice-7c5c6b8d56-5q99s???2/2?????Running???0??????????29m
        redis-cart-74594bd569-mt9np??????????????2/2?????Running???0??????????29m
        shippingservice-658875bd74-gmpgn?????????2/2?????Running???0??????????29m

        接著我們可以通過 Istio gateway 端點來訪問演示應(yīng)用程序。

        這個微服務(wù)演示應(yīng)用是一個由多個不同語言編寫的服務(wù)組成的在線商店,該應(yīng)用程序可以用來添加商品到購物車、更改交易貨幣和結(jié)賬,所有這些操作都由不同的服務(wù)來完成。

        安裝 Loki 和 FluentBit

        示例應(yīng)用程序安裝完成后,我們就可以開始安裝 Loki 了,這里我們使用 Helm 來快速安裝,首先添加 Chart 倉庫:

        #?Add?the?loki?helm?chart
        $?helm?repo?add?loki?https://grafana.github.io/loki/charts
        $?helm?repo?update

        Chart 倉庫配置完成后就可以直接進行安裝了:

        #?Create?the?namespace?to?install?loki
        $?kubectl?create?ns?loki
        #?Apply?the?loki?helm?chart
        $?helm?upgrade?--install?loki?--namespace=loki?loki/loki??--set?fluent-bit.enabled=true,promtail.enabled=false,grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=true,prometheus.server.persistentVolume.enabled=true
        Release?"loki"?does?not?exist.?Installing?it?now.
        NAME:?loki
        LAST?DEPLOYED:?Thu?Nov?19?11:48:00?2020
        NAMESPACE:?loki
        STATUS:?deployed
        REVISION:?1
        TEST?SUITE:?None
        NOTES:
        Verify?the?application?is?working?by?running?these?commands:
        ??kubectl?--namespace?loki?port-forward?service/loki?3100
        ??curl?http://127.0.0.1:3100/api/prom/label

        安裝的時候要注意設(shè)置 fluent-bit.enabled=true,這樣就可以使用 FluentBit 作為日志轉(zhuǎn)發(fā)器了,接下來,安裝 FluentBit:

        $?helm?upgrade?--install?fluent-bit?--namespace=loki?loki/fluent-bit?--set?loki.serviceName=loki.loki.svc.cluster.local
        Release?"fluent-bit"?does?not?exist.?Installing?it?now.
        NAME:?fluent-bit
        LAST?DEPLOYED:?Thu?Nov?19?11:51:12?2020
        NAMESPACE:?loki
        STATUS:?deployed
        REVISION:?1
        TEST?SUITE:?None
        NOTES:
        Verify?the?application?is?working?by?running?these?commands:
        ??kubectl?--namespace?loki?port-forward?daemonset/fluent-bit-fluent-bit-loki?2020
        ??curl?http://127.0.0.1:2020/api/v1/metrics/prometheus

        安裝完成后我們可以使用用 kubectl -n loki get pods 命令查看 loki 命名空間中正在運行的 pod。

        $?kubectl?get?pods?-n?loki
        NAME???????????????????????????????READY???STATUS??????????????RESTARTS???AGE
        fluent-bit-fluent-bit-loki-2jrd8???1/1?????Running?????????????5??????????4m20s
        fluent-bit-fluent-bit-loki-knbjj???1/1?????Running?????????????0??????????20m
        fluent-bit-fluent-bit-loki-wsbwl???1/1?????Running?????????????0??????????69s
        grafana-5d45cc9674-wb8fn???????????1/1?????Running?????????????0??????????12m
        loki-0?????????????????????????????1/1?????Running?????????????0??????????23m

        接下來我們通過安裝 Grafana 來使用 Loki 進行一些日志查詢。

        安裝 Grafana

        同樣首先添加 Grafana Chart 倉庫:

        $?helm?repo?add?grafana?https://grafana.github.io/helm-charts
        $?helm?repo?update

        這里我們將 Grafana 也安裝在 loki 這個命名空間中:

        $?helm?upgrade?--install?grafana?--namespace=loki?grafana/grafana

        安裝完成后查看 Pod 的狀態(tài):

        $?kubectl?get?pods?-n?loki
        NAME???????????????????????????????READY???STATUS????RESTARTS???AGE
        fluent-bit-fluent-bit-loki-4g7nh???1/1?????Running???0??????????6m20s
        fluent-bit-fluent-bit-loki-dt8bj???1/1?????Running???0??????????6m
        fluent-bit-fluent-bit-loki-wsbwl???1/1?????Running???0??????????12m
        grafana-5d45cc9674-wb8fn???????????1/1?????Running???0??????????24m
        loki-0?????????????????????????????1/1?????Running???0??????????34m

        配置 Loki

        這里我們直接使用 port-forward 來訪問 Grafana 服務(wù):

        $?kubectl?-n?loki?port-forward?svc/grafana?8080:80
        #?Navigate?to?http://localhost:8080?in?the?browser

        在在瀏覽器中打開網(wǎng)址 http://localhost:8080 即可訪問,初次登錄需要輸入用戶名和密碼,用戶名為 admin,對應(yīng)的密碼可以用下面的命令獲?。?/p>

        $?kubectl?get?secret?--namespace?loki?grafana?-o?jsonpath="{.data.admin-password}"?|?base64?--decode?;?echo
        #?The?password?for?the?admin?user

        登錄完成后,我們就可以添加 Loki 作為數(shù)據(jù)源了,從左側(cè)面板,選擇配置 -> 數(shù)據(jù)源:

        在數(shù)據(jù)源視圖中,點擊添加數(shù)據(jù)源,然后選擇 Loki。

        給數(shù)據(jù)源起一個名字,然后設(shè)置一個 Grafana 實例可以訪問的 Loki URL。我們這里由于 Loki 和 Grafana 都在相同的命名空間中運行,不需要使用任何驗證方案,因此不需要其他配置,單擊 "保存和測試"。您應(yīng)該會看到一條確認消息 Data source connected and labels found.。

        日志查詢

        現(xiàn)在 Grafana 已經(jīng)連接到 Loki 了,接下來我們可以查詢部署到 demo 命名空間的示例應(yīng)用的日志,我們可以查找錯誤,通過 trace id 查找事務(wù)等等。

        在 Grafana 頁面中,從側(cè)面板中選擇 "探索",選擇上一步中添加的 Loki數(shù)據(jù)源,在查詢框中,輸入 {namespace="demo"},然后點擊 "運行查詢",正常我們就可以看到日志返回了。

        此外我們還可以添加更多的過濾器和標簽,來縮小我們想要查詢的日志范圍。要查看來自 demo 命名空間的 istio-sidecars 的日志,可以使用語句 {container="istio-proxy", namespace="demo"} 進行查詢,我們也可以查找那些非正常的狀態(tài)碼的 http 請求 {namespace="demo"} |= "http.resp.status"!= "200"。

        我們還可以對來自日志的數(shù)據(jù)進行一些聚合分析。比如這里面匯總過去5分鐘內(nèi) demo 命名空間的 http 狀態(tài)碼,查詢語句為:sum(count_over_time({namespace="demo"} |= "http.resp.status" | json [5m])) by (http_resp_status)

        上面的綠線代表 302 狀態(tài)碼,黃線代表 200 狀態(tài)碼,過去5分鐘內(nèi)沒有其他狀態(tài)碼。關(guān)于 Loki 的查詢語言 LogQL 還有很多高級的操作,我們可以通過官方文檔查看更多。

        此外查詢歷史記錄還會被保存下來,這樣我們就可以在將來重新訪問一個查詢歷史了,查詢檢查器還可以報告有關(guān)查詢執(zhí)行的指標。

        參考鏈接:https://medium.com/swlh/getting-up-and-running-with-grafana-loki-e8d841c7182f


        訓(xùn)練營推薦





        ?點擊屏末?|??|?即刻學習

        瀏覽 38
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操逼黑人| 国产精品电影 | 操美女91| av日韩在线播放 77777亚洲熟妇 | 无码区免费真人爱爱动态视频 | 99久久久国精产品 | 想看一级毛片 | 做爱网址视频免费观看 | 草逼视频网 | 圆房撕开肚兜揉捏娇乳 |