0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Fluentd/td-agent】エラーログ通知メールを送信する

Last updated at Posted at 2024-12-18

はじめに

環境

EC2:AmazonLinux2023
Fluentdバージョン:LTS5
メールソフト:postfix

目的

サービスにエラーが起きた際、ログの内容をメールで通知する。
サービスとfluentdは別インスタンスにする。

Fluentd用インスタンスの設定

Fluentdをインストール

EC2
[root@ip-xx-xx-xx-xx etc]# curl -fsSL https://toolbelt.treasuredata.com/sh/install-amazon2023-fluent-package5-lts.sh | sh

起動と有効化

EC2
[root@ip-xx-xx-xx-xx etc]# systemctl start fluentd.service
[root@ip-xx-xx-xx-xx etc]# systemctl enable fluentd.service
Created symlink /etc/systemd/system/td-agent.service → /usr/lib/systemd/system/fluentd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/fluentd.service → /usr/lib/systemd/system/fluentd.service.
[root@ip-xx-xx-xx-xx etc]# systemctl status fluentd.service

必要なプラグインをインストール

fluent-plugin-grepcounter

EC2
[root@ip-xx-xx-xx-xx etc]# fluent-gem install fluent-plugin-grepcounter

fluent-plugin-mail

EC2
[root@ip-xx-xx-xx-xx etc]# fluent-gem install fluent-plugin-mail

postfix

EC2
[root@ip-xx-xx-xx-xx etc]# dnf install postfix
[root@ip-xx-xx-xx-xx etc]# systemctl start postfix
[root@ip-xx-xx-xx-xx etc]# systemctl enable postfix

confファイルの設定

監視先インスタンスのエラーログが
/var/log/fluent/example.log
に転送されるものと仮定した記述になります。

/etc/fluent/fluentd.conf

/etc/fluent/fluentd.conf
<match example>
  @type copy
  <store>
    @type file
    path /var/log/fluent/example.log
  </store>
  <store>
    @type grepcounter
    count_interval 100
    input_key message
    regexp ERROR
    threshold 1
    add_tag_prefix mailerror
  </store>
    <store>
    @type grepcounter
    count_interval 100
    input_key message
    regexp WARNING
    threshold 1
    add_tag_prefix mailwarning
  </store>
</match>

<match mailerror.example>
  @type copy
  <store>
    @type mail
    host localhost
    port 25
    from "error@example.com" 
    to "a@example.com, b@example.com" 
    subject "ERRORメールの件名" 
    message Log :%s
    message_out_keys message
  </store>
</match>
<match mailwarning.example>
  @type copy
  <store>
    @type mail
    host localhost
    port 25
    from "error@example.com" 
    to "a@example.com, b@example.com"
    subject "WARNINGメールの件名" 
    message Log!:%s
    message_out_keys message
  </store>
</match>

Fluentdを再起動

EC2
[root@ip-xx-xx-xx-xx etc]# systemctl restart fluentd
[root@ip-xx-xx-xx-xx etc]# systemctl status fluentd

サービス用インスタンスの設定

Fluentdをインストール

EC2
[root@ip-xx-xx-xx-xx etc]# curl -fsSL https://toolbelt.treasuredata.com/sh/install-amazon2023-fluent-package5-lts.sh | sh

起動と有効化

EC2
[root@ip-xx-xx-xx-xx etc]# systemctl start fluentd.service
[root@ip-xx-xx-xx-xx etc]# systemctl enable fluentd.service
Created symlink /etc/systemd/system/td-agent.service → /usr/lib/systemd/system/fluentd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/fluentd.service → /usr/lib/systemd/system/fluentd.service.
[root@ip-xx-xx-xx-xx etc]# systemctl status fluentd.service

監視先インスタンスの /etc/fluent/fluentd.conf

EC2
<source>
  @type tail
  path 監視・転送したいログファイルのPATHを記述
  tag example
  pos_file /var/log/fluent/example.pos
  format none
</source>

<match example>
  @type forward
  time_as_integer true
  flush_interval 60s
  <server>
    host xx.xx.xx.xx (fluentdのインスタンスのIP)
    port 24224
  </server>
</match>

Fluentdを再起動

EC2
[root@ip-xx-xx-xx-xx etc]# systemctl restart fluentd
[root@ip-xx-xx-xx-xx etc]# systemctl status fluentd

PORTの設定

Fluentd用・サービス用それぞれのインスタンスのセキュリティグループに24224の疎通を追加する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?