20. 使用Fluentd发送告警邮件
阅读原文时间:2023年07月08日阅读:3

告警是预防系统故障的一个重要工具,目前已经有许多成熟的方案通过监控系统运行指标来进行阈值预警。今天简单了解一下如何使用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. 配置说明

    下边是一份完整的配置文件,可根据实际情况进行修改。

    @type tail path /var/log/apache2/access.log # Set the location of your log file @type apache2 tag 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 ^5\d\d$ # 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"

    @type copy @type stdout # Print to stdout for debugging @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\n\nPlease check your Apache webserver ASAP message_out_keys count # Use the "count" field to replace "%s" above

这个配置用到了邮件服务器,需要确保邮件服务器可用,且配置正确。

这个配置文件主要包含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等其他应用系统的日志错误.