Loki告警的正确姿势

image.png

小白之前有通过Grafana设置Loki数据源的骚操作来做日志告警,虽然能直接在Grafana面板上配置告警,当它们还是没办法集中维护和管理。小白前面介绍了那么多关于Loki的文章,那么它有没有像Promethues一样的rules来管理策略呢?答案是肯定的!

根据Loki的RoadMap,Ruler组件将于Loki 1.7.0版本正式推出。那么小白今天先带大家尝尝鲜,体验下在Loki里日志告警的正确姿势。

Loki Ruler

Loki1.7将包含一个名为Ruler的组件,它是从Crotex项目里面引入进来的(还记得Loki分集群的架构吗?)Ruler的主要功能是持续查询rules规则,并将超过阈值的事件推送给Alert-Manager或者其他Webhook服务。


image.png

结合Cortex,Loki的Ruler组件也是如上的架构。可以看到loki和cortex的架构主要区别只剩下Configs API了。😂不过,牛逼的是借助注册到consul的一致性hash环,Loki的ruler同样支持多实例的分布式部署,实例和实例之间会自己根据分片协调需要使用的rules。不过这是一个动态的过程,任何ruler实例的添加或删除都会导致rules的重新分片

当前启用Loki的ruler组件比较简单,只要将下列的相关配置引入,并在Loki启动的参数里面加入-target=ruler即可。

ruler:
    # 触发告警事件后的回调查询地址
    # 如果用grafana的话就配置成grafana/explore
    external_url:
  
    # alertmanager地址 
    alertmanager_url: <alertmanager_endpoint>
    enable_alertmanager_v2: true
  
    # 启用loki rules API
    enable_api: true
    
    # 对rules分片,支持ruler多实例
    enable_sharding: true
  
    # ruler服务的一致性哈希环配置,用于支持多实例和分片
    ring:
        kvstore:
            consul:
                host: <consul-endpoint>:8500
            store: consul
  
    # rules临时规则文件存储路径
    rule_path: /tmp/rules
   
    # rules规则存储
    # 主要支持本地存储(local)和对象文件系统(azure, gcs, s3, swift)
    storage:
      type: local
      local:
        directory: /loki/rules
      
    # rules规则加载时间    
    flush_period: 1m

想快速体验Ruler的同学,可以用小白之前docker-compose启动的loki-cluster-deploy来部署demo

Alert配置

Loki的rulers规则和结构与Prometheus完全兼容,唯一的区别在于查询语句不同。在Loki中我们用logQL来查询日志指标。一个典型的rules配置说明如下:

groups:
  # 组名称
  - name: <string>
    rules:
      # Alert名称
      - alert: <string>
        # logQL查询语句
        expr: <string>
        # 产生告警的持续时间
        pending.
        [ for: <duration> | default = 0s ]
        # 自定义告警事件的label
        labels:
        [ <labelname>: <tmpl_string> ]
        # 告警时间的注释
        annotations:
        [ <labelname>: <tmpl_string> ]

举个栗子,如果小白想通过日志查到某个业务日志的错误率大于5%就处罚告警,那么可以配置成这样:

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

当告警事件产生时,我们在alert-manager上就能收到该事件的推送。


image.png

Ruler用途

  • 还没用metrics做应用监控告警时

对于有些业务可能没有暴露自己程序运行时的metrics时,这个时候我们可以借助查询日志的方法去构建相关的指标告警是比较容易的。比如上面提到的应用错误率的告警。

  • 黑匣子监控

对于完全不受我们控制的应用(开源服务或者三方闭源产品),在他们不提供监控指标时,我们采用查询日志指标的方式不失为一个快速的方法。

下面这个就是某大佬利用nginx日志和logQL做的监控和告警大盘,简直不要太炫酷。


image.png
image.png
  • 响应应用的事件

对于有些应用的特殊的事件,我们也可以利用Loki的ruler来做相关的通知,比如检查日志中的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最佳实践》的同学知道,在Loki中high-cardinality会严重拖慢查询效率。这部分查询会在接下来的LogQL v2语法中实现

关于云原生小白

云原生小白的创号目的是将平日里离大家较远云原生应用以实用的角度展现出来,站在小白的角度来看待和使用云原生,并以每篇文章解决一个实际问题的出发点带领大家走进云原生。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容