ログ管理についてのメモ

ログとは

情報ソース
– (RHEL6) 第20章 ログファイルの表示と管理 – Red Hat Customer Portal
– (RHEL7) 第20章 ログファイルの表示と管理 – Red Hat Customer Portal

各種ログ管理ソフトウェア

  • syslog
  • rsyslog
  • sysklog
  • syslog-ng
  • systemd-journald: systemd の機能の 1 つで journalctl コマンドによりログの検索・表示が行える

RHEL6 系でのログ管理

rsyslog を使う

rsyslog.conf の基本的な記述

  • 基本は、フィルタとアクションを用いて設定をしていく
  • ファシリティー/優先度ベースフィルタを用いると、例えば mail 以外の info+ レベルのメッセージを /var/log/messages に吐き出したりできる
    • *.info;mail.none;authpriv.none;cron.none /var/log/messages
  • ファシリティには以下のようなものがある
    • kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0〜7
  • プライオリティには以下のようなものがある
    • emerg, alert, crit, err, warning, notice, info, debug, none
  • アクションには以下のようなものがある
    • パス: パスに書き込む
    • パイプ: メッセージをパイプ先のプログラムに読ませる
    • ホスト名: ホストへ転送する
    • *: 端末に表示
    • ユーザー名: 指定したユーザーへの端末に表示

ルール設定の一例

kern.*                                                 /dev/console
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
cron.*                                                  /var/log/cron

rsyslogd にメッセージを送る

[root@ip-10-1-11-55 ~]# logger -p user.info "hello"
[root@ip-10-1-11-55 ~]# tail -n 1 /var/log/messages
Jun  5 14:42:42 ip-10-1-11-55 ec2-user: hello

rsyslog について

  • 設定ファイル: /etc/rsyslog.conf
  • Facility.Priority

RHEL7 系でのログ管理

  • journald デーモンは全サービスの標準出力および標準エラー出力に書き込まれたメッセージに加えて、Syslog メッセージ、カーネルログメッセージ、初期 RAM ディスクおよび初期起動メッセージを取り込む
  • これらをインデックス化して、ユーザーが利用できるようにする
  • ネイティブのジャーナルファイル形式は構造化およびインデックス付きバイナリファイルで、これは検索を改善し、より速い操作を提供する
  • また、タイムスタンプやユーザー ID といったメタデータ情報も保存する

EC2 上のログ管理

CloudWatch Logs Agent

  • CloudWatch Logs Agent を利用すると EC2 のログを CloudWatch Logs に送信できる
  • fluentd などを入れるより楽ではあるので、サクッと簡単するがログ連携・バックアップはしたいみたいなときに便利そう

情報ソース: CloudWatch Logs エージェントのリファレンス – Amazon CloudWatch ログ

  1. CloudWatchAgentServerPolicy を Attach した IAM Role を作り、ログ収集対象の EC2 インスタンスにアタッチしておく
    • CloudWatch Logs が CloudWatch を操作するのに必要な権限がマネージドポリシーとして用意されている: CloudWatchAgentServerPolicy
  2. sudo yum install -y awslogs
  3. /etc/awslogs/awscli.conf をいい塩梅に変更
    • リージョンを東京に変更したりなど
    • 下記のように設定してみた
  4. sudo service awslogs start
# awscli.conf
[/var/log/httpd/access_log]
log_stream_name = {instance_id}
log_group_name = /var/log/httpd/access_log
datetime_format = %d/%b/%Y:%H:%M:%S %z
initial_position = start_of_file
file = /var/log/httpd/access_log
buffer_duration = 2000

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください