Graylog2+ElasticSearchによるログ可視化の方法(1)

2014年03月03日 22時16分

201403032216OELC00.png

Graylog2とは

Graylog2は、ドイツのTORCH社が開発するログ集中管理システムです。 Graylog2は、TCP/UDPを使ったログ集積を行うSplunkと同等の機能を持つ管理システムですが、Splunkが商用ソフトウエアであるのに対し、Graylog2は、オープンソースで提供されています。

前提条件

構築に必要なサーバー要件および、導入パッケージは下記のとおりです。

  1. 作業環境
    OSWindows 7 Ultimate 32bit
    CygwinSetup Version 2.831
    VirtualBox4.3.6 r91406
    Vagrant1.4.1
  2. サーバー要件
    サーバーGraylog2サーバーGraylog2クライアント
    ホスト名graylog2-servergraylog2-client
    IPアドレス10.0.2.15(eth0)
    192.168.0.50(eth1)
    10.0.2.15(eth0)
    192.168.0.30(eth1)
    OSCentOS 6.5 x86_64 minimalCentOS 6.5 i386 minimal
    HDD8GB(SCSI)
    RAM1024MB512MB
    Apache2.2.15
    OpenJDK1.7.0n/a
    ElasticSearch0.90.11
    mongo-10gen-server2.4.9
    mongo-10gen2.4.9
    その他のパッケージwget
    git
    openssl-devel
    java-1.7.0-openjdk-devel
  3. 導入するパッケージ
    パッケージGraylog2サーバーGraylog2クライアント
    Ruby2.1.1n/a
    graylog2-server0.20.1
    graylog2-web0.20.1
    pwgen2.06
    perl-Digest-SHA5.47

サーバーセットアップ

  1. Rubyのインストール

    Graylog2サーバーでは、rubyのバージョン1.9以上が必要ですが、CentOSの標準リポジトリからインストール可能なrubyのバージョンが1.8.7のため、2.1.1をインストールします。

    $ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
    $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    $ sudo ~/.rbenv/plugins/ruby-build/bin/ruby-build 2.1.1 /usr
    
    201403032216OELC01.png
    $ ruby -v && gem -v
    $ sudo gem i bundle --no-ri --no-rdoc
    
    201403032216OELC02.png
  2. システムパラメータの変更

    elasticsearchおよび、graylog2はJava VM上で動作するため、実メモリ以上のメモリを確保できるようにシステムパラメータを変更します。

    $ echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf
    $ sudo sysctl vm.overcommit_memory=1
    
    201403032216OELC03.png
  3. ElasticSearchの設定

    クラスター名および、ノードのユニキャスト検索に必要なIPアドレスを設定します。

    $ sudo vi /etc/elasticsearch/elasticsearch.yml
    
    cluster.name: graylog2
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.0.50"]
    
    201403032216OELC04.png
  4. ElasticSearchの再起動

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

    $ sudo service elasticsearch restart
    
    201403032216OELC05.png

    指定したクラスター名でログが生成されます。

    $ cat /var/log/elasticsearch/graylog2.log
    
    201403032216OELC06.png
  5. MongoDBの設定

    サーバーがアクセスするデータベースおよび、MongoDBの管理者ユーザーとGraylog2のユーザーを作成します。

    $ mongo
    

    mongoシェルが起動したら、下記のコマンドを実行します。

    > use admin
    > db.addUser('admin','admin123')
    > db.auth('admin','admin123')
    > use graylog2
    > db.addUser('loguser','loguser123')
    > db.auth('loguser','loguser123')
    > exit
    
    201403032216OELC07.png
    201403032216OELC08.png
  6. Graylog2-Serverのインストール

    jaxxstorm氏のサイトから、CentOS用のパッケージをインストールします。

    $ sudo rpm -ivh https://github.com/jaxxstorm/graylog2-server-rpm/releases/download/0.20.1/graylog2-server-0.20.1-1.el6.noarch.rpm
    
    201403032216OELC09.png
  7. pwgenのインストール

    EPELリポジトリから、pwgenをインストールします。

    $ sudo rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/pwgen-2.06-5.el6.x86_64.rpm
    
    201403032216OELC10.png
  8. シークレットパスワードの作成

    graylog2-serverの設定に必要なシークレットパスワードを作成します。

    $ pwgen -s 64 1
    
    201403032216OELC11.png
  9. shasumのインストール

    CentOSにインストールされているsha1sumは、SHA-1のハッシュ値しか計算できないため、SHA-256が計算できるshasumを標準リポジトリからインストールします。

    $ sudo yum -q -y install perl-Digest-SHA
    
    201403032216OELC12.png
  10. adminユーザーパスワードのハッシュ値計算

    設定ファイルに指定するadminユーザーのパスワードハッシュ値(SHA-256)を計算します。

    $ echo -n password | shasum -a 256
    
  11. Graylog2-Server設定

    graylog2サーバーを設定します。
    password_secretおよび、root_password_sha2には、先ほど算出した値を設定して下さい。
    また、elasticsearch_max_docs_per_indexおよび、elasticsearch_max_number_of_indicesのデフォルト値は、実運用では問題ありませんが、動作確認を行うには大きすぎるため変更しています。

    $ sudo vi /etc/graylog2/server.conf
    
    node_id_file = /etc/graylog2/server-node-id
    password_secret = S7O7MDm5eZJnqwXM3r2JVsA9fqQz3v1NpbGUpMg59mKhzs01dYe9sUNX7xUMAd7g
    root_password_sha2 = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
    rest_transport_uri = http://127.0.0.1:12900/
    #elasticsearch_max_docs_per_index = 20000000
    elasticsearch_max_docs_per_index = 5
    #elasticsearch_max_number_of_indices = 20
    elasticsearch_max_number_of_indices = 2
    elasticsearch_shards = 1
    elasticsearch_cluster_name = graylog2
    #elasticsearch_node_data = true
    elasticsearch_transport_tcp_port = 9350
    elasticsearch_discovery_zen_ping_multicast_enabled = false
    elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
    mongodb_useauth = true
    mongodb_user = loguser
    mongodb_password = loguser123
    
    201403032216OELC13.png
    201403032216OELC14.png
  12. 動作確認

    設定が終了したら、コンソール上で動作確認します。

    $ sudo java -jar /opt/graylog2/server/graylog2-server.jar -f /etc/graylog2/server.conf
    
    201403032216OELC15.png
    201403032216OELC16.png
    201403032216OELC17.png
    201403032216OELC18.png
  13. サービス起動設定

    graylog2Webインターフェースで入力ソースを指定する際、1024以下のポート番号にアクセスする必要があるため、起動ユーザーをデフォルトのgraylog2からrootに変更します。

    $ sudo vi /etc/sysconfig/graylog2-server
    
    GL_USER=root
    
    201403032216OELC19.png
  14. サービス起動

    graylog2-serverを起動します。

    $ sudo service graylog2-server start
    
    201403032216OELC20.png

    起動ログを確認します。

    $ cat /var/log/graylog2/server.log
    
    201403032216OELC21.png
    201403032216OELC22.png
    201403032216OELC23.png

  15. Web-Interfaceのインストール

    $ sudo rpm -ivh https://github.com/jaxxstorm/graylog2-web-rpm/releases/download/0.20.1/graylog2-web-0.20.1-1.el6.noarch.rpm
    
    201403032216OELC24.png
  16. Web-Interfaceの設定

    application.secretにserver.confで指定した、password_secretと同じ値を設定します。

    $ sudo vi /etc/graylog2/web.conf
    
    graylog2-server.uris="http://127.0.0.1:12900/"
    application.secret="S7O7MDm5eZJnqwXM3r2JVsA9fqQz3v1NpbGUpMg59mKhzs01dYe9sUNX7xUMAd7g"
    timezone="Asia/Tokyo"
    
    201403032216OELC25.png
    201403032216OELC26.png
  17. 動作確認

    設定が終了したら、コンソール上でWeb-Interfaceを起動します。

    $ sudo /opt/graylog2/web/bin/graylog2-web-interface -Dconfig.file=/etc/graylog2/web.conf
    
    201403032216OELC27.png

    起動したら、ブラウザで下記のサイトにアクセスして動作確認します。

    http://192.168.0.50:9000/
    
    201403032216OELC28.png

    ログインに必要なUsernameおよび、Passwordは、server.conf内で指定したユーザー名とパスワードを使用します。

    201403032216OELC29.png
  18. サービス起動

    graylog2-webを起動します。

    $ sudo service graylog2-web start
    
    201403032216OELC30.png

    起動ログを確認します。

    cat /var/log/graylog2/web.log
    
    201403032216OELC31.png
  19. 起動スクリプトの変更

    インストールしたgraylog2-serverおよび、graylog2-webの起動スクリプトには、起動優先度および、停止優先度が指定されていないため、graylog2-serverのブート時にエラーが発生します。このため、起動スクリプトに優先度を指定します。

    $ sudo vi /etc/rc.d/init.d/graylog2-server /etc/rc.d/init.d/graylog2-web
    

    各々のスクリプトに、下記の行を追加します。

    # chkconfig: 2345 90 15
    # chkconfig: 2345 95 15
    
    201403032216OELC32.png
    201403032216OELC33.png
  20. 起動スクリプト再登録

    登録済みの起動スクリプトを一旦削除し、修正した起動スクリプトを登録します。

    $ sudo chkconfig --del graylog2-server
    $ sudo chkconfig --del graylog2-web
    $ sudo chkconfig --add graylog2-server
    $ sudo chkconfig --add graylog2-web
    
    201403032216OELC34.png

    再登録後、サーバーを再起動してブートログを確認すると、graylog2-serverおよび、graylog2-webが最後に起動されたことが確認できます。

    $ cat /var/log/boot.log
    
    201403032216OELC35.png
    201403032216OELC36.png

以上で、サーバーセットアップは終了です。