Graylog2によるログ収集システムの構築(後編)

Graylog2によるログ収集システムの構築(後編)

はじめに

前編では、Graylog2サーバーのセットアップ方法について解説しました。後編では、ログ収集を行う方法および、Graylog2クライアントのセットアップ方法について解説します。

サーバーセットアップ

サーバーをセットアップしただけでは、ログを収集することができませんので、サーバーに対して収集するログ(入力ソース)の登録を行います。
今回は、SYSLOGを入力ソースとして登録します。

  1. 管理画面へのログイン

    管理画面にログインし、画面上部のSystemタブを選択すると、システムの運用状況が表示されます。

    http://192.168.0.50:9000/
    
    4021-01 4021-02 4021-03
  2. 入力ソースの表示

    右に配置されたメニューから、[Inputs]を選択すると、graylog2クラスターへの入力ソースの登録画面が表示されますので、[Syslog TCP]を選択した後、[Launch New Input]をクリックします。

    4021-04 4021-05
  3. 入力ソースの設定

    入力ソース設定画面が表示されたら、[Title]を入力し、[Store full message]をチェックした後、[Launch]をクリックすると、入力ソースが登録されます。

    4021-06 4021-07
  4. 待ち受けポートの確認

    入力ソースが登録できたら、待ち受けポートを確認します。

    $ netstat -an | grep -i tcp | grep ::514
    
    4021-08
  5. 以上で、入力ソースの登録は終了です。

クライアントセットアップ

クライアントでは、SYSLOGをGraylog2サーバーに転送し、Apacheのアクセスログおよび、エラーログをSYSLOGに転送します。

  1. SYSLOG設定

    UDP/TCPのログを全てGraylog2サーバーに転送します。

    $ sudo vi /etc/rsyslog.conf
    
    $WorkDirectory /var/lib/rsyslog # where to place spool files
    $ActionQueueFileName fwdRule1 # unique name prefix for spool files
    $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
    $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
    $ActionQueueType LinkedList   # run asynchronously
    $ActionResumeRetryCount -1    # infinite retries if host is down
    *.* @192.168.0.50:514         # UDPログの転送
    *.* @@192.168.0.50:514        # TCPログの転送
    
    4021-10
  2. SYSLOG再起動

    設定が終了したら、rsyslogを再起動します。

    $ sudo service rsyslog restart
    
    4021-11
  3. Apache設定

    httpd.confを修正して、アクセスログおよび、エラーログをSYSLOGに転送します。
    これにより、該当のログが一旦ローカルのSYSLOGに転送された後、Graylog2サーバーに転送できます。

    $ sudo vi /etc/httpd/conf/httpd.conf
    
    ErrorLog syslog:local6
    CustomLog "|/usr/bin/logger -t httpd -p local6.info" combined
    
    4021-12 4021-13
  4. 設定のリロード

    設定が終了したら、設定をリロードします。

    $ sudo service httpd reload
    
    4021-14
  5. 以上で、クライアントセットアップは終了です。

動作確認

ここまでの作業で、システムのセットアップが終了しましたので、動作確認を行います。

  1. SYSLOGへのログ出力

    loggerコマンドを使用して、テスト用のログを出力します。

    $ logger -p kern.info "TEST 1"
    $ logger -p kern.info "TEST 2"
    $ logger -p kern.info "TEST 3"
    $ logger -p kern.info "TEST 4"
    $ logger -p kern.info "TEST 5"
    $ logger -p kern.info "TEST 6"
    
    4021-15

    ログ出力を6回行っているのは、前編のgraylog2-server設定において設定したelasticsearch_max_docs_per_indexの値が5に設定されているためで、Graylog2では、この値を越えた段階でバッファリングされているログをクラスターに書き込みます。

    4021-16
  2. HTTPアクセスのログ出力

    CygwinTermimalから、ab2コマンドを使用してクライアントにアクセスします。

    $ ab2 -n 100 -c 10 http://192.168.0.30/
    
    4021-19 4021-20 4021-21

    ここでは、同時接続数10、総接続数100としてクライアントにHTTPアクセスを行っています。

  3. クエリーによるログ確認

    Graylog2の管理画面にアクセスし、送信されたログを確認します。
    クエリーボックスに、TESTを入力すると該当するログが検索表示されます。

    4021-22
  4. タイムスケールによるログ確認

    クエリーボックスの上にあるタイムスケールを変更して、ログを検索します。
    ここでは、[Search in the last 15 minutes]を選択しています。

    4021-23
  5. 以上で、システムが正常に動作していることが確認できます。

まとめ

ここまで、サーバーのログ収集設定および、Graylog2クライアントのセットアップ方法について解説しました。Graylog2は、これまでに本ブログで紹介したFluentdLogStashのように日本語ドキュメントが豊富にあるわけではありません。しかし、海外では、Splunkと並ぶログ収集システムとして評価されており、エンタープライズ向けのソフトウエアとして位置づけられています。本記事をきっかけにして、クライアントに特別なソフトウエアを導入すること無く利用できるGraylog2の導入を検討しては如何でしょうか。

Comments are closed.