美文网首页
Loki告警的正确姿势

Loki告警的正确姿势

作者: 魔哈Moha | 来源:发表于2020-10-13 16:32 被阅读0次
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语法中实现

关于云原生小白

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

相关文章

  • Loki告警的正确姿势

    小白之前有通过Grafana设置Loki数据源的骚操作来做日志告警,虽然能直接在Grafana面板上配置告警,当它...

  • 新系统的告警的正确设定姿势

    一大早运维小白就老曾办公室垂头丧气的走出来,他的师傅运维老鸟一问,原来小白又被老曾批评了,昨天有一个重要告警竟然是...

  • 年轻人,不讲武德?Loki告警日志内容的骚方法

    很多小伙伴在用Loki的Ruler配置日志告警规则时都会有一个大胆的想法: “ 要是能把日志内容告出来该多好 ” ...

  • Pycharm绿色波浪线Typo: In word 'xxx'告

    Pycharm中Typo: In word 'xxx'告警是Pycharm工具对单词正确性的检测告警,虽不影响程序...

  • 利用Grafna给你的Loki添加日志告警

    正文共: 2085字预计阅读时间: 6分钟 做过运维的同学都知道,服务的可观测性是一个非常重要的渠道,能够让我们掌...

  • 2021-05-26

    数据大盘 推敲数据的有效性、正确性,确定数据的意义和价值 监控 1、线上程序错误告警、运行时告警、接口超时告警、服...

  • 姿势不正确,怎么奋斗?

    文/风言锋语 体育锻炼讲求姿势正确,模特表演也要求姿势正确,普通人奋斗也需要正确姿势?答案是肯定的。姿势不正确,奋...

  • 流放之路 正确姿势

    辛迪加正确姿势 辛迪加正确姿势.png 安全屋奖励.png 辛迪加掉落.png 猎魔正确姿势 重要猎魔配方.png

  • 用 Swift 架构 iOS 应用的正确姿势

    用 Swift 架构 iOS 应用的正确姿势 用 Swift 架构 iOS 应用的正确姿势

  • 从教2个月以来的一点心得

    一年级的学生,主抓好习惯。 正确的坐姿 正确的读书姿势 正确的写字姿势 正确的捏笔姿势 每天记录作业的好习惯 先观...

网友评论

      本文标题:Loki告警的正确姿势

      本文链接:https://www.haomeiwen.com/subject/amwvpktx.html