<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 告警的正確姿勢

          共 3011字,需瀏覽 7分鐘

           ·

          2020-10-15 20:56

          小白之前有通過Grafana設(shè)置Loki數(shù)據(jù)源的騷操作來做日志告警,雖然能直接在Grafana面板上配置告警,但它們還是沒辦法集中維護和管理。小白前面介紹了那么多關(guān)于Loki的文章,那么它有沒有像Prometheus一樣的rules來管理策略呢?答案是肯定的!

          根據(jù)Loki的RoadMap,Ruler組件將于Loki 1.7.0版本正式推出。那么小白今天先帶大家嘗嘗鮮,體驗下在Loki里日志告警的正確姿勢。

          Loki Ruler

          Loki1.7將包含一個名為Ruler的組件,它是從Crotex項目里面引入進來的(還記得Loki分集群的架構(gòu)嗎?)Ruler的主要功能是持續(xù)查詢rules規(guī)則,并將超過閾值的事件推送給Alert-Manager或者其他Webhook服務(wù)。結(jié)合Cortex,Loki的Ruler組件也是如上的架構(gòu)。可以看到loki和cortex的架構(gòu)主要區(qū)別只剩下Configs API了。?不過,牛逼的是借助注冊到consul的一致性hash環(huán),Loki的ruler同樣支持多實例的分布式部署,實例和實例之間會自己根據(jù)分片協(xié)調(diào)需要使用的rules。不過這是一個動態(tài)的過程,任何ruler實例的添加或刪除都會導(dǎo)致rules的重新分片

          當(dāng)前啟用Loki的ruler組件比較簡單,只要將下列的相關(guān)配置引入,并在Loki啟動的參數(shù)里面加入-target=ruler即可。

          ruler:
          # 觸發(fā)告警事件后的回調(diào)查詢地址
          # 如果用grafana的話就配置成grafana/explore
          external_url:

          # alertmanager地址
          alertmanager_url:
          enable_alertmanager_v2: true

          # 啟用loki rules API
          enable_api: true

          # 對rules分片,支持ruler多實例
          enable_sharding: true

          # ruler服務(wù)的一致性哈希環(huán)配置,用于支持多實例和分片
          ring:
          kvstore:
          consul:
          host: :8500
          store: consul

          # rules臨時規(guī)則文件存儲路徑
          rule_path: /tmp/rules

          # rules規(guī)則存儲
          # 主要支持本地存儲(local)和對象文件系統(tǒng)(azure, gcs, s3, swift)
          storage:
          type: local
          local:
          directory: /loki/rules

          # rules規(guī)則加載時間
          flush_period: 1m

          想快速體驗Ruler的同學(xué),可以用小白之前docker-compose來部署demo

          https://github.com/CloudXiaobai/loki-cluster-deploy/tree/master/demo/docker-compose

          Alert配置

          Loki的rulers規(guī)則和結(jié)構(gòu)與Prometheus完全兼容,唯一的區(qū)別在于查詢語句不同。在Loki中我們用logQL來查詢?nèi)罩局笜?biāo)。一個典型的rules配置說明如下:

          groups:
          # 組名稱
          - name:
          rules:
          # Alert名稱
          - alert:
          # logQL查詢語句
          expr:
          # 產(chǎn)生告警的持續(xù)時間
          pending.
          [ for: | default = 0s ]
          # 自定義告警事件的label
          labels:
          [ : ]
          # 告警時間的注釋
          annotations:
          [ : ]

          舉個栗子,如果小白想通過日志查到某個業(yè)務(wù)日志的錯誤率大于5%就觸發(fā)告警,那么可以配置成這樣:

          groups:
          - name: should_fire
          rules:
          - alert: HighPercentageError
          expr: |
          sum(rate({app="foo", env="production"} |= "error" [5m])) by (job)
          /
          sum(rate({app="foo", env="production"}[5m])) by (job)
          > 0.05
          for: 10m
          labels:
          severity: page
          annotations:
          summary: High request latency

          當(dāng)告警事件產(chǎn)生時,我們在alert-manager上就能收到該事件的推送。

          Ruler用途

          • 還沒用metrics做應(yīng)用監(jiān)控告警時

          對于有些業(yè)務(wù)可能沒有暴露自己程序運行時的metrics時,這個時候我們可以借助查詢?nèi)罩镜姆椒ㄈ?gòu)建相關(guān)的指標(biāo)告警是比較容易的。比如上面提到的應(yīng)用錯誤率的告警。

          • 黑匣子監(jiān)控

          對于完全不受我們控制的應(yīng)用(開源服務(wù)或者三方閉源產(chǎn)品),在他們不提供監(jiān)控指標(biāo)時,我們采用查詢?nèi)罩局笜?biāo)的方式不失為一個快速的方法。

          下面這個就是某大佬利用nginx日志和logQL做的監(jiān)控和告警大盤,簡直不要太炫酷。

          • 響應(yīng)應(yīng)用的事件

          對于有些應(yīng)用的特殊的事件,我們也可以利用Loki的ruler來做相關(guān)的通知,比如檢查日志中的base auth認證泄漏事件

          - name: credentials_leak
          rules:
          - alert: http-credentials-leaked
          annotations:
          message: "{{ $labels.job }} is leaking http basic auth credentials."
          expr: 'sum by (cluster, job, pod) (count_over_time({namespace="prod"} |~ "http(s?)://(\\w+):(\\w+)@" [5m]) > 0)'
          for: 10m
          labels:
          severity: critical
          • High-Cardinality高基告警

          看過小白之前《Loki最佳實踐》的同學(xué)知道,在Loki中high-cardinality會嚴(yán)重拖慢查詢效率。這部分查詢會在接下來的LogQL v2語法中實現(xiàn)。




          K8S進階訓(xùn)練營,點擊下方圖片了解詳情


          瀏覽 207
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国精产品一区二区三区黑人和中国 | 国产精品永久久久久久久久久 | 亚洲女人操逼视频 | 91三级在线| 一级A片在线看 |