<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>

          K8s之Pod日志收集新貴Loki初體驗(yàn)

          共 3122字,需瀏覽 7分鐘

           ·

          2022-05-16 08:57

          多數(shù)的伙伴已經(jīng)熟悉了EFKFilebeat的使用,實(shí)際上無論是Filebeat還是Fluentd,都是將數(shù)據(jù)存儲(chǔ)在Elasticsearch集群,之后用Kibana進(jìn)行查詢,所以為了查看日志,我們不得不去搭建一個(gè)Elasticsearch集群,Elasticsearch集群本身的維護(hù)很麻煩,也比較消耗資源,如果不想大費(fèi)周章地去維護(hù)ELK技術(shù)棧,那么Loki將是一個(gè)很好的選擇。本文我們在Kubernetes集群中搭建一個(gè)Loki?Stack,用于收集集群內(nèi)Pod的日志。

          、安裝Loki?Stack

          Loki提供了Helm的安裝方式,可以直接下載包進(jìn)行安裝,首先添加并更新LokiHelm倉庫:

          # helm repo add grafana https://grafana.github.io/helm-charts"grafana" has been added to your repositories# helm repo updateHang tight while we grab the latest from your chart repositories.........Successfully got an update from the "grafana" chart repository

          創(chuàng)建Loki?Namespace

          # kubectl create ns lokinamespace/loki created

          創(chuàng)建Loki?Stack

          # helm upgrade --install loki grafana/loki-stack  --set grafana.enabled=true --set grafana.service.type=NodePort -n lokiNAME: lokiNAMESPACE: lokiSTATUS: deployedREVISION: 1NOTES:The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
          See http://docs.grafana.org/features/datasources/loki/ for more detail.

          上述安裝攜帶了Grafana,如果公司已經(jīng)有Grafana,可以不用安裝,添加一個(gè)Loki的源即可。安裝時(shí),沒有開啟Loki的數(shù)據(jù)持久化,如果需要保留數(shù)據(jù),需要配置動(dòng)態(tài)存儲(chǔ),然后配置StorageClass即可,另外Loki只部署了一個(gè)副本,真正使用時(shí)需要3個(gè)以上的實(shí)例。



          查看Pod的狀態(tài):

          # kubectl get po -n lokiNAME                                READY   STATUS    RESTARTS     AGEloki-0                               1/1     Running   0            4m23sloki-grafana-5b57955f9d-48z6l   1/1     Running   0            4m23sloki-promtail-2n24m               1/1     Running   0            4m23sloki-promtail-59slx               1/1     Running   0            4m23sloki-promtail-6flzq               1/1     Running   0            4m23sloki-promtail-gq2hk               1/1     Running   0            4m23sloki-promtail-sqwtv               1/1     Running   0            4m23s

          查看GrafanaService暴露的端口號:

          # kubectl get svc -n lokiNAME               TYPE        CLUSTER-IP         EXTERNAL-IP   PORT(S)         AGEloki              ClusterIP   192.168.67.18      <none>        3100/TCP        7m54sloki-grafana    NodePort     192.168.103.121   <none>        80:31053/TCP   7m54sloki-headless???ClusterIP????None????????????????<none>????????3100/TCP????????7m54s

          之后通過任意一個(gè)安裝了kube-proxy節(jié)點(diǎn)的IP加上31053即可訪問Grafana,如圖1所示。

          1 訪問Grafana

          查看Grafana密碼(賬號為admin):

          # kubectl get secret --namespace loki loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echoeD47DAbzhyPLgDeSM8C0LvBi3DksU73vZND8t4h0

          登錄后,按圖2所示單擊即可查看Loki語法指南。

          2?訪問Explore

          其他安裝配置可以參考:https://grafana.com/docs/loki/latest/installation/helm/。

          Loki語法入門

          Loki是參考Prometheus設(shè)計(jì)的,所以查詢語法和PromQL類似,比如查詢命名空間為kube-system下的所有Pod的日志,只需要在Log?browser中輸入{namespace="kube-system"},然后單擊Run?query即可,如圖3所示。

          3?查詢?nèi)罩?/span>

          最下方為日志詳情,如圖4所示。

          4 日志詳情

          可以看到每條日志都被添加了很多標(biāo)簽,之后可以通過標(biāo)簽過濾日志,比如查看命名空間為kube-systemPod名稱包含calico的日志(下面的語法將不再提供截圖,讀者可以自行測試):

          {namespace="kube-system", pod=~"calico.*"}

          相當(dāng)于=~,類似的語法還有:

          l?=~:正則模糊匹配。

          l?=:完全匹配。

          l?!=:不等于。

          l?!~:正則模糊不等于。

          Loki語法同時(shí)支持Pipeline,比如需要過濾日志包含avg字段的日志:

          {namespace="kube-system", pod=~"calico.*"} |~ "avg"

          查詢到的日志如圖5所示。

          5 ?AVG過濾后的日志

          還可以使用logfmt對日志進(jìn)行格式化,然后進(jìn)行值的判斷,比如找到包含avg字段并且longest的值大于16ms的日志:

          {namespace="kube-system", pod=~"calico.*"} |~ "avg" | logfmt | longest > 16ms

          得到的日志如圖6所示,和上一個(gè)結(jié)果相比,只有longest大于16ms的日志,其他的均已被過濾掉。

          6?longest過濾后的日志



          瀏覽 269
          點(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>
                  找个免费的a片 | 日本黄色视频官网 | 国产精品无码久久久久久 | 亚洲性爱中文字幕 | 男人天堂最新地址 |