<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 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,可以直接查看官方文檔進(jìn)行安裝配置。Istio 安裝完成后,我可以創(chuàng)建一個新的命名空間來進(jìn)行測試:

          $?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
          #?鏡像默認(rèn)是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 端點(diǎn)來訪問演示應(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 倉庫配置完成后就可以直接進(jìn)行安裝了:

          #?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 命名空間中正在運(yùn)行的 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 進(jìn)行一些日志查詢。

          安裝 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)的密碼可以用下面的命令獲取:

          $?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ù)源視圖中,點(diǎn)擊添加數(shù)據(jù)源,然后選擇 Loki。

          給數(shù)據(jù)源起一個名字,然后設(shè)置一個 Grafana 實(shí)例可以訪問的 Loki URL。我們這里由于 Loki 和 Grafana 都在相同的命名空間中運(yùn)行,不需要使用任何驗(yàn)證方案,因此不需要其他配置,單擊 "保存和測試"。您應(yīng)該會看到一條確認(rèn)消息 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"},然后點(diǎn)擊 "運(yùn)行查詢",正常我們就可以看到日志返回了。

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

          我們還可以對來自日志的數(shù)據(jù)進(jìn)行一些聚合分析。比如這里面匯總過去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 還有很多高級的操作,我們可以通過官方文檔查看更多。

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

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


          訓(xùn)練營推薦





          ?點(diǎn)擊屏末?|??|?即刻學(xué)習(xí)

          瀏覽 38
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产三级黄色 | 夜夜爽天天干 | 东方成人av | 日本一级婬片A片免费看 | 国产又粗又黄 |