1. ホーム
  2. 記事一覧
  3. インフラエンジニア入門 運用編 loggerを用いたログテスト

2023.12.22

インフラエンジニア入門 運用編 loggerを用いたログテスト

この記事の目的

この記事では、Linuxシステムにおけるloggerコマンドの使用方法とその利点、そしてrsyslogとの組み合わせによってシステムログをより効果的に管理する方法について解説します。loggerコマンドは、システムの様々なイベントや状態を記録するためのシンプルで強力なツールです。rsyslogの設定確認などで用いられます。

これらを解説していきます。

  • loggerコマンドの基本

    loggerコマンドを使用してログメッセージを生成する方法。

  • ログのカスタマイズ

    ファシリティや重要度などを指定してログメッセージをカスタマイズする方法。

  • rsyslogとの組み合わせ

    loggerで生成されたログをrsyslogでどのように処理するか。

  • 実践的な使用例

    システム管理やトラブルシューティングにおける実際のシナリオでの応用。

rsyslogの簡単な紹介

rsyslogは、Linuxシステムにおいて非常に強力で柔軟なログ処理の機能を提供するオープンソースのツールです。システムやアプリケーションから生成される様々なログメッセージを効率的に収集し、整理する役割を担います。

rsyslogの主な特徴

高度なフィルタリング

rsyslogはメッセージの重要度やファシリティに基づいてログをフィルタリングし、特定の条件にマッチするメッセージだけを特定のアクションに適用できます。

柔軟な設定

rsyslogの設定は非常に柔軟で、複数のファイルへのログの分割、リモートサーバーへのログ転送、ログのフォーマットのカスタマイズなどが可能です。

高いパフォーマンス

大量のログデータを高速に処理できる能力を備えており、大規模なシステム環境にも対応します。

rsyslogについての詳細な情報やより高度な設定方法については、当サイトの他の記事や公式ドキュメントを参照してください。この記事では、rsyslogと組み合わせて使用するloggerコマンドの基本的な使用方法に重点を置いて解説します。

https://envader.plus/article/274

loggerメッセージのrsyslogでの処理と確認方法

loggerコマンドで生成されたメッセージはrsyslogによって処理され、システムのログファイルに記録されます。これらのメッセージがどこに記録されるかは、rsyslogの設定に依存します。

rsyslogの設定

rsyslogは /etc/rsyslog.conf ファイルや /etc/rsyslog.d/ ディレクトリ内の設定ファイルを通じて構成されます。これらのファイル内で、メッセージのファシリティと重要度に基づいて、どのログファイルに記録するかが定義されます。

例えば、以下のような設定がある場合

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
local0.*                                                /var/log/local0.log

一般的な info レベルのメッセージは /var/log/messages に記録されます。 local0 ファシリティの全ての重要度のメッセージは /var/log/local0.log に記録されます。

ログの確認方法

一般的なメッセージの確認方法

logger "これはテストメッセージです" というコマンドを実行した場合、このメッセージは基本的に /var/log/messages に記録されます(rsyslogの設定に依存します)。

tail -f /var/log/messages

tail -f コマンドの使用時の注意点

ログのリアルタイム監視

tail -f はログファイルに新しいエントリが追加されると、それらをリアルタイムで表示します。これは、システムの現在の状態を監視したり、特定のイベントが発生した時の動作を確認するのに非常に役立ちます。

tail -f コマンドは、ログファイルの末尾をリアルタイムで監視するのに非常に便利です。このコマンドを実行すると、コマンドがログファイルの新しいエントリを待ち受ける状態になり、自動的に画面に表示します。そのため、以下の点に注意が必要です。

別のコンソールまたはターミナルウィンドウの使用

tail -f を実行する際は、通常、新しいコンソールまたはターミナルウィンドウを開くことをお勧めします。他の作業を行いながらログの更新を監視できます。 もしくは、既存のターミナルで作業をしている場合は、新しいタブやウィンドウを開いて tail -f を実行すると便利です。

コマンドの終了方法

tail -f は自動的に終了しないため、終了するには Ctrl + C を押す必要があります。コマンドは安全に停止し、ターミナルでの通常の操作が再開できます。

特定のファシリティのメッセージの確認

logger -p local0.notice "特定のファシリティの通知メッセージ" というコマンドを実行した場合、このメッセージは /var/log/local0.log に記録されます(上記の設定に基づく)。tail コマンドはデフォルトで末尾10行を表示します。-nオプションを使用することで表示する行数を指定することができます。

# 末尾20行を表示
tail -n 20 /var/log/local0.log

これらのコマンドを使用して、リアルタイムでログファイルの末尾を監視することができます。または、cat コマンドやテキストエディタを使用してログファイル全体を確認することも可能です。

実践的なテストシナリオ

システム管理やトラブルシューティングでは、loggerとrsyslogを用いて様々な状況をシミュレートし、ログ管理の効果をテストすることが重要です。ここでは、実際の管理シナリオにおけるloggerとrsyslogの活用方法についていくつかの例を紹介します。

1. システムイベントのログ記録

システム上で特定のイベントが発生した際に、その情報をログに記録するためにloggerを使用します。

例 データベースのバックアップ完了時のログ記録

# バックアップスクリプトの実行後
logger -p local0.info "データベースのバックアップが完了しました"

このコマンドは、バックアップが完了したことを local0.info としてログに記録します。rsyslogの設定により、このメッセージは特定のログファイルに記録されるでしょう。

補足情報

  • ログファイルのローテーションを有効にすると、ログファイルの肥大化を防ぐことができます。
  • ログファイルのローテーション方法は、rsyslogの設定ファイルで指定します。

2. トラブルシューティング時の情報収集

問題発生時に、システムの状態やエラーメッセージをリアルタイムでログに記録するためにloggerを使用します。

例 エラー発生時のログ記録

# エラー発生時
logger -p local0.err "データベース接続エラー: [詳細情報]"

この例では、エラーが発生した際にその詳細情報を local0.err としてログに記録します。

補足情報

  • ログのフィルタリング機能を活用して、必要なログメッセージだけを処理するようにしてみてください。
  • ログのフィルタリング方法は、rsyslogの設定ファイルで指定します。

3. リモートログ転送のテスト

rsyslogを使用して、特定のログメッセージをリモートのサーバーに転送する設定をテストします。

例 リモートサーバーへのエラーログ転送

# rsyslogの設定
local0.err @@remote-server-ip:514

# テストメッセージの生成
logger -p local0.err "リモートサーバーテストメッセージ"

この設定は local0.err のメッセージをリモートサーバーの指定したIPアドレス(remote-server-ip)の514ポートに送信します。

補足情報

  • リモートログ転送を行う場合、リモートサーバーにrsyslogがインストールされている必要があります。
  • リモートサーバーのファイアウォール設定で、rsyslogのポート(デフォルトは514)が許可されている必要があります。

コード例

rsyslogの設定(/etc/rsyslog.d/50-default.conf などに追記)

# local0.err メッセージをリモートサーバーに転送
local0.err @@remote-server-ip:514

この設定は local0.err のメッセージをリモートサーバーの指定したIPアドレス(remote-server-ip)の514ポートに送信します。

テスト方法

  1. リモートサーバーにrsyslogをインストールします。

  2. リモートサーバーのファイアウォール設定で、rsyslogのポート(デフォルトは514)を許可します。

  3. ローカルサーバーで、以下のコマンドを実行してテストメッセージを生成します。

    logger -p local0.err "リモートサーバーテストメッセージ"
  4. テストメッセージの確認

    リモートサーバーのログファイル(/var/log/syslog など)を確認して、テストメッセージが記録されていることを確認します。

補足情報

  • リモートログ転送を行う場合は、リモートサーバーとローカルサーバーの時刻が同期されている必要があります。
  • リモートログ転送のパフォーマンスを向上させるために、rsyslogの設定で転送方法を調整することができます。

4. 特定条件に基づくログ処理

rsyslogの高度なフィルタリング機能を使用して、特定の条件を満たすログメッセージだけを処理します。

例 特定のキーワードを含むログメッセージの処理

# rsyslogの設定
:msg, contains, "特定キーワード" /var/log/special_keyword.log

# テストメッセージの生成
logger "このメッセージには特定キーワードが含まれます"

この設定は、メッセージに「特定キーワード」が含まれる場合にそれを /var/log/special_keyword.log に記録し、その後の処理を停止します。

補足情報

  • 特定条件に基づくログ処理を行う場合は、rsyslogの設定でフィルタリング条件を指定します。
  • フィルタリング条件は、メッセージの重要度、ファシリティ、送信元ホスト、メッセージの内容など、さまざまな条件を指定することができます。

テスト方法

  1. ローカルサーバーで、以下のコマンドを実行してテストメッセージを生成します。

    logger "このメッセージには特定キーワードが含まれます"
  2. ローカルサーバーのログファイル(/var/log/messages など)を確認して、テストメッセージが記録されていることを確認します。

補足情報

  • 特定条件に基づくログ処理を行う場合は、フィルタリング条件が正しく設定されていることを確認する必要があります。

これらのテストシナリオを参考にして、自社のシステム環境に合わせてテストを行ってみてください。テストを行うことで、loggerとrsyslogの機能や設定を理解し、効果的なログ管理を実現することができます。

まとめと参考資料

この記事では、loggerとrsyslogを用いた効果的なログ管理の基本と実践的なテストシナリオについて解説しました。loggerを使用することで、システムの重要なイベントや状態を簡単にログに記録できます。また、rsyslogの強力なフィルタリングと処理機能により、これらのログを効率的に管理し、必要に応じて適切なアクションを取ることが可能です。

主なポイント

  • Loggerはシステムログにメッセージを送信するためのシンプルなコマンドラインツールです。
  • Rsyslogはこれらのメッセージを処理し、システムのログファイルに記録します。
  • リモートログ転送や特定条件に基づくログ処理など、応用的なテストシナリオを通じて、loggerとrsyslogの組み合わせの力を最大限に引き出すことができます。

希少型エンジニアを目指す方は、システムの運用やログ管理を知ることで脱量産型エンジニアへの第一歩となります。

希少型エンジニアって何?

https://note.com/takkun_desu/n/n7297b6ea03ff

参考資料

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事