zoukankan      html  css  js  c++  java
  • 20. 使用Fluentd发送告警邮件

    告警是预防系统故障的一个重要工具,目前已经有许多成熟的方案通过监控系统运行指标来进行阈值预警。今天简单了解一下如何使用Fluentd实现邮件告警功能。

    Fluentd的告警是基于日志分析实现的,通过监测日志中的业务状态信息,及时识别严重错误,实时发送告警信息。
    以分析Apache的访问日志为例,了解一下Fluentd提供的邮件告警功能。

    1.安装软件
    1.1 安装td-agent
    1.2 安装插件:fluent-plugin-grepcounter

    td-agent-gem install fluent-plugin-grepcounter
    

    1.3 安装插件:fluent-plugin-mail

    td-agent-gem install fluent-plugin-mail
    
    1. 配置说明
      下边是一份完整的配置文件,可根据实际情况进行修改。
    <source>
      @type tail
      path /var/log/apache2/access.log  # Set the location of your log file
      <parse>
        @type apache2
      </parse>
      tag apache.access
    </source>
    
    <match apache.access>
      @type grepcounter
      count_interval 3  # The time window for counting errors (in secs)
      input_key code    # The field to apply the regular expression
      regexp ^5dd$    # The regular expression to be applied
      threshold 1       # The minimum number of erros to trigger an alert
      add_tag_prefix error_5xx  # Generate tags like "error_5xx.apache.access"
    </match>
    
    <match error_5xx.apache.access>
      @type copy
      <store>
        @type stdout  # Print to stdout for debugging
      </store>
      <store>
        @type mail
        host smtp.gmail.com        # Change this to your SMTP server host
        port 587                   # Normally 25/587/465 are used for submission
        user USERNAME              # Use your username to log in
        password PASSWORD          # Use your login password
        enable_starttls_auto true  # Use this option to enable STARTTLS
        from example@gmail.com     # Set the sender address
        to alert@example.com       # Set the recipient address
        subject 'HTTP SERVER ERROR'
        message Total 5xx error count: %s
    
    Please check your Apache webserver ASAP
        message_out_keys count     # Use the "count" field to replace "%s" above
      </store>
    </match>
    

    这个配置用到了邮件服务器,需要确保邮件服务器可用,且配置正确。
    这个配置文件主要包含3部分:
    2.1 <source>
    使用in_tail追踪Apache的access日志,并使用apache2来解析日志。

    2.2 <match apache.access>
    使用grepcounter对日志中的5xx状态码进行过滤和计数。
    如果在count_interval指定的时间内5xx错误数达到了threshold指定的阈值,Fluentd就会产生一条tag为error_5xx.apache.access的事件,该事件会重新进入Fluentd的事件路由中,被下一个处理。

    2.3 <match error_5xx.apache.access>
    每收到一个error_5xx.apache.access事件,这个会使用mail插件来发送一封邮件到alert@example.com。

    如此配置,Fluentd就成了一个邮件告警服务,可用来监测Apache的异常访问。

    1. 测试方法
      完成上边的配置之后,重启td-agent。
    # for init.d users
    $ sudo /etc/init.d/td-agent restart
    
    # for systemd users
    $ sudo systemctl restart td-agent
    

    如果Apache有5xx错误发生(你也可以手动向access.log追加一条5xx错误),你将会收到一封标题为"HTTP SERVER ERROR"的告警邮件。

    实际应用中你可能需要调整某些参数,比如统计间隔或阈值,还可以监测4xx错误码。
    当然除了Apache,Fluentd还可以监测nginx等其他应用系统的日志错误.

  • 相关阅读:
    leetcode 43. 字符串相乘
    leetcode 20. 有效的括号 (python)
    leetcode 125. 验证回文串(python)
    leetcode 171. Excel表列序号(python)
    leetcode 190. 颠倒二进制位(c++)
    leetcode 122. 买卖股票的最佳时机 II (python)
    leetcode 118. 杨辉三角(python)
    leetcode 141. 环形链表(C++)
    leetcode 189. 旋转数组(python)
    leetcode 217. 存在重复元素 (python)
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13921456.html
Copyright © 2011-2022 走看看