<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 繪制 Traefik 監(jiān)控面板

          共 1698字,需瀏覽 4分鐘

           ·

          2021-01-30 11:45

          前段時(shí)間在Loki2.0發(fā)布時(shí),更新了一個(gè)配套的用LogQL語法繪制Nginx監(jiān)控面板的Demo。今天小白準(zhǔn)備用同樣的手法炮制一個(gè)基于Traefik日志的監(jiān)控面板。還不清楚之前Nginx面板操作的同學(xué)可以看參考文末后的推薦閱讀。

          Traefik

          Traefik是一個(gè)用Golang實(shí)現(xiàn)的云原生輕量級(jí)HTTP反向代理工具。由于它支持配置適配多種后端服務(wù)(docker,kubernetes,Mesos,redis)來做動(dòng)態(tài)的路由配置。當(dāng)前Rancher的邊緣產(chǎn)品K3S也默認(rèn)把Traefik作為默認(rèn)的Ingress管理器,足以可見traefik也越來越受到廣大開發(fā)者的喜愛。

          那么,Traefik的可觀察性除了打開默認(rèn)的Metrics之外,我們還可以通過日志方式繪制實(shí)時(shí)監(jiān)控面板。

          配置Access Logs

          traefik默認(rèn)的access log格式如下:

          ?-??[]?"??"???""?""??""?""?ms

          雖然看起來比較直觀,不過這樣的日志存入在Loki中,我們還需要通過正則表達(dá)式解析,非常的不方便。所以我們還是將日志格式改為json,方便logql解析。

          按如下方式修改traefik.yaml

          accessLog:
          ??format:?json

          默認(rèn)traefik的日志輸出為stdout,如果你的采集端是通過讀取文件的話,則需要用filePath參數(shù)將traefik的日志重定向到文件目錄

          繪制Grafana面板

          大體的監(jiān)控面板,小白已經(jīng)繪制好并發(fā)布到Grafana Lab,我們?cè)L問頁面https://grafana.com/grafana/dashboards/13713就可以將面板下載到本地

          將下載的面板json文件導(dǎo)入到Grafana,導(dǎo)入后更換uidLoki源

          導(dǎo)入后你將獲得一個(gè)空白的面板,如下

          別急,空白的原因是logql沒有查詢到合適日志,我們需要修改每個(gè)panel的查詢語句,讓他定位到合適的日志。面板默認(rèn)的日志標(biāo)簽是{job="/var/log/traefik.log"},我們需要改成適應(yīng)自己環(huán)境的label

          最后就能得到如下面板,在這里我們可以看到經(jīng)過Treafik的HTTP請(qǐng)求狀態(tài),請(qǐng)求耗時(shí)以及路由分布等信息。

          總結(jié)

          Traefik的面板僅僅只是依葫蘆畫瓢的抄襲了官方的Nginx面板,不過在"抄襲"的過程中也能學(xué)習(xí)到幾個(gè)LogQL的重要語句的使用場(chǎng)景。

          • 樣本排序統(tǒng)計(jì)百分位

          在TP95的面板中我們使用了如下語法,主要的意思是將traefik日志中的Duration值按照時(shí)間變量$__interval進(jìn)行排序,取第95%位上的值

          quantile_over_time(0.95,{job="xxx"}?
          |=?"RequestProtocol"
          |?json?
          |?unwrap?Duration?
          |??__error__=""??[$__interval])?by?(ServiceName)
          • 統(tǒng)計(jì)請(qǐng)求異常率

          在異常請(qǐng)求率的面板中,我們不光使用了Label filters來過濾狀態(tài)中大于400的請(qǐng)求,同時(shí)還用除法/來計(jì)算整體的異常百分比。

          sum(rate({job="xxx"}?
          |~?"RequestProtocol"?
          |?json?
          |?OriginStatus?>=?400?
          |__error__=""[$__interval]))?
          /?(sum(rate({job="xxx"}?
          |~?"RequestProtocol"?
          |?json?
          |?__error__=""[$__interval]))?
          /?100)

          可以看到,LogQL v2強(qiáng)大的日志查詢分析能力讓日志的可玩性大幅提升。和Prometheus一樣,Loki作為云原生可觀測(cè)性下的日志一環(huán),其后續(xù)發(fā)展也越來越值得關(guān)注。


          CKA 認(rèn)證培訓(xùn)


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

          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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无码 | 想看中国的毛片视平 |