開発者ドキュメント

Ubuntu14.04でGraylog2をインストールしてログを一元化する方法

序章

このチュートリアルでは、Graylog2(v0.20.2)のインストールについて説明し、システムのsyslogを一元化された場所に収集するように構成します。 Graylog2は、SSHログインや異常なアクティビティの監視からアプリケーションのデバッグまで、多くのユースケースを持つ強力なログ管理および分析ツールです。 これは、Elasticsearch、Java、MongoDB、およびScalaに基づいています。

注:このチュートリアルは、Graylog2の古いバージョンを対象としています。 新しいバージョンはこちらから入手できます: Ubuntu14.04にGraylog1.xをインストールする方法。

Graylog2を使用してさまざまなログを収集および監視することは可能ですが、このチュートリアルの範囲をsyslog収集に限定します。 また、Graylog2の基本を示しているため、すべてのコンポーネントを1台のサーバーにインストールします。

Graylog2コンポーネントについて

Graylog2には、次の4つの主要コンポーネントがあります。

次に、Graylog2コンポーネントの図を示します(メッセージは他のサーバーから送信されることに注意してください)。

非常に基本的なセットアップでは、すべてのコンポーネントを同じサーバーにインストールできます。 大規模な本番環境のセットアップでは、サーバー、Elasticsearch、またはMongoDBコンポーネントで停止が発生した場合、Graylog2は停止中に生成されたメッセージを収集しないため、高可用性機能をいくつか設定することをお勧めします。

前提条件

このチュートリアルで説明するセットアップには、少なくとも2GBのRAMを搭載したUbuntu14.04VPSが必要です。 ルートアクセスも必要です( Ubuntu 14.04 を使用したサーバーの初期設定の手順1〜4)。

RAMが2GB未満のVPSを使用している場合、すべてのGraylog2コンポーネントを起動することはできません。

ソフトウェアのインストールを始めましょう!

MongoDBをインストールします

MongoDBのインストールはシンプルで迅速です。 次のコマンドを実行して、MongoDB公開GPGキーをaptにインポートします。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

MongoDBソースリストを作成します。

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

aptパッケージデータベースを更新します。

sudo apt-get update

次のコマンドを使用して、MongoDBの最新の安定バージョンをインストールします。

sudo apt-get install mongodb-org

これでMongoDBが稼働しているはずです。 Java7のインストールに移りましょう。

Java7をインストールします

ElasticsearchにはJava7が必要なので、今すぐインストールします。 Oracle Java 7をインストールするのは、それがelasticsearch.orgで推奨されているためです。 ただし、そのルートを選択する場合は、OpenJDKで正常に機能するはずです。

OracleJavaPPAをaptに追加します。

sudo add-apt-repository ppa:webupd8team/java

aptパッケージデータベースを更新します。

sudo apt-get update

次のコマンドを使用して、Oracle Java 7の最新の安定バージョンをインストールします(ポップアップするライセンス契約に同意します)。

sudo apt-get install oracle-java7-installer

Java 7がインストールされたので、Elasticsearchをインストールしましょう。

Elasticsearchをインストールする

Graylog2v0.20.2にはElasticsearchv.0.90.10が必要です。 次のコマンドを使用してダウンロードしてインストールします。

cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb
sudo dpkg -i elasticsearch-0.90.10.deb

Elasticsearch cluster.nameの設定を変更する必要があります。 Elasticsearch構成ファイルを開きます。

sudo vi /etc/elasticsearch/elasticsearch.yml

cluster.nameを指定するセクションを見つけます。 コメントを外し、デフォルト値を「graylog2」に置き換えると、次のようになります。

cluster.name: graylog2

また、Elasticsearchインスタンス(ポート9200)への外部アクセスを制限して、部外者がHTTPAPIを介してデータを読み取ったりElasticseachクラスターをシャットダウンしたりできないようにすることもできます。 network.bind_hostを指定する行を見つけてコメントを外し、次のようにします。

network.bind_host: localhost

次に、ファイルのどこかに次の行を追加して、動的スクリプトを無効にします。

script.disable_dynamic: true

保存して終了します。 次に、Elasticsearchを再起動して、変更を有効にします。

sudo service elasticsearch restart

数秒後、以下を実行して、Elasticsearchが正しく実行されていることをテストします。

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Elasticsearchが稼働しているので、Graylog2サーバーをインストールしましょう。

Graylog2サーバーをインストールします

他の必要なソフトウェアをインストールしたので、Graylog2サーバーをインストールしましょう。 /optにGraylog2Serverv0.20.2をインストールします。 まず、次のコマンドを使用して、Graylog2アーカイブを/optにダウンロードします。

cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz

次に、アーカイブを抽出します。

sudo tar xvf graylog2-server-0.20.2.tgz

ディレクトリ名を簡略化するために、新しく作成したディレクトリへのシンボリックリンクを作成しましょう。

sudo ln -s graylog2-server-0.20.2 graylog2-server

サンプル構成ファイルを/etc内の適切な場所にコピーします。

sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf

パスワード秘密鍵の生成に使用するpwgenをインストールします。

sudo apt-get install pwgen

次に、adminパスワードと秘密鍵を構成する必要があります。 パスワード秘密鍵は、 graylog2.conf で、password_secretパラメーターによって構成されます。 次の2つのコマンドを使用して、ランダムキーを生成し、Graylog2構成に挿入できます。

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf

admin パスワードは、目的のパスワードのshasumを作成し、Graylog2構成ファイルのroot_password_sha2パラメーターに割り当てることによって割り当てられます。 次のコマンドを使用して、目的のパスワードのシャサムを作成します。強調表示された「パスワード」を独自のパスワードに置き換えます。 sedコマンドは、それをGraylog2構成に挿入します。

PASSWORD = $(echo -n password | shasum -a 256 | awk'{print $ 1}')sudo -E sed -i -e's /root_password_sha2=。*/root_password_sha2 ='$ PASSWORD'/' / etc / graylog2 .conf

管理者パスワードが設定されたので、Graylog2構成を開いて、いくつかの変更を加えましょう。

sudo vi /etc/graylog2.conf

上記の手順で実行したコマンドにより、password_secretroot_password_sha2にはランダムな文字列が含まれていることがわかります。 次に、rest_transport_uriを構成します。これは、Graylog2Webインターフェースがサーバーと通信する方法です。 すべてのコンポーネントを単一のサーバーにインストールしているので、値を127.0.0.1、つまりlocalhostに設定しましょう。 rest_transport_uriを見つけてコメントを外し、次のように値を変更します。

rest_transport_uri = http:// 127.0.0.1:12900 /

次に、Elasticsearchシャード(このサーバーで実行されている)が1つしかないため、elasticsearch_shardsの値を1に変更します。

elasticsearch_shards = 1

保存して終了します。 これで、Graylog2サーバーが構成され、起動する準備が整いました。

オプション:テストする場合は、次のコマンドを実行します。

sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug

たくさんの出力が表示されるはずです。 次の行のような出力が表示されると、Graylog2サーバーが正しく構成されていることがわかります。

2014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/>
2014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running.

CTRL-Cを押してテストを終了し、シェルに戻ります。

それでは、Graylog2initスクリプトをインストールしましょう。 graylog2ctlを/etc/init.dにコピーします。

sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2

次の2つのsedコマンドを実行して、起動スクリプトを更新し、Graylog2ログを/var/logに配置し、Graylog2サーバーJARファイルを/opt/graylog2-serverで検索します。

sudo sed -i -e's / GRAYLOG2_SERVER_JAR = $ {GRAYLOG2_SERVER_JAR:= graylog2-server.jar} /GRAYLOG2_SERVER_JAR = $ {GRAYLOG2_SERVER_JAR:= / opt / graylog2-server / graylog2-server.jar} /'/ etc/init。 d / graylog2 sudo sed -i -e's / LOG_FILE = $ {LOG_FILE:= log / graylog2-server.log} /LOG_FILE=${LOG_FILE:= /var/log/ graylog2-server.log} /'/ etc /init.d/graylog2

次に、起動スクリプトをインストールします。

sudo update-rc.d graylog2 defaults

これで、serviceコマンドを使用してGraylog2サーバーを起動できます。

sudo service graylog2 start

次のステップは、Graylog2Webインターフェースをインストールすることです。 今それをやろう!

Graylog2Webインターフェイスをインストールします

次のコマンドを使用して、Graylog2v.0.20.2Webインターフェイスを/optにダウンロードしてインストールします。

cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz
sudo tar xvf graylog2-web-interface-0.20.2.tgz

ディレクトリ名を簡略化するために、新しく作成したディレクトリへのシンボリックリンクを作成しましょう。

sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface

次に、Webインターフェイスの秘密鍵であるgraylog2-web-interface.confapplication.secretパラメーターを構成します。 Graylog2サーバー構成で行ったように、別のキーを生成し、次のようにsedで挿入します。

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

次に、次のコマンドを使用して、Webインターフェイス構成ファイルを開きます。

sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

次に、Webインターフェイスの構成を更新して、graylog2-server.urisパラメーターを指定する必要があります。 これは、サーバーのRESTURIのコンマ区切りのリストです。 Graylog2サーバーノードは1つしかないため、値は、Graylog2サーバー構成のrest_listen_uriの値と一致する必要があります(つまり、 「http://127.0.0.1:12900/」)。

 graylog2-server.uris =“  http://127.0.0.1:12900/

これで、Graylog2Webインターフェイスが構成されました。 それをテストするためにそれを始めましょう:

sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface

次の2行を見ると、正しく開始されたことがわかります。

[info] play - Application started (Prod)
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

CTRL-Cを押して、Webインターフェイスを強制終了します。 それでは、起動スクリプトをインストールしましょう。 独自に作成することも、このチュートリアル用に作成したものをダウンロードすることもできます。 スクリプトをホームディレクトリにダウンロードするには、次のコマンドを使用します。

cd ~; wget https://assets.digitalocean.com/articles/graylog2/graylog2-web

次に、それを/etc/init.dにコピーし、所有権をrootに変更し、権限を755に変更します。

sudo cp ~/graylog2-web /etc/init.d/
sudo chown root:root /etc/init.d/graylog2-web
sudo chmod 755 /etc/init.d/graylog2-web

これで、次のコマンドを使用してWebインターフェイスの初期化スクリプトをインストールできます。

sudo update-rc.d graylog2-web defaults

Graylog2Webインターフェイスを起動します。

sudo service graylog2-web start

これで、Graylog2Webインターフェイスを使用できます。 今それをしましょう。

syslogメッセージを受信するようにGraylog2を構成する

Graylog2Webインターフェイスにログインします

お気に入りのブラウザで、VPSのパブリックIPアドレスのポート9000に移動します。

http:// gl2_public_IP :9000 /

ログイン画面が表示されます。 ユーザー名として「admin」を入力し、パスワードを前に設定した管理者パスワードとして入力します。

ログインすると、次のようなメッセージが表示されます。

点滅する赤い「1」は通知です。 それをクリックすると、入力を実行していないノードがあることを示すメッセージが表示されます。 ここで、UDPを介してsyslogメッセージを受信するための入力を追加しましょう。

SyslogUDP入力を作成する

syslogメッセージを受信するための入力を追加するには、右側のシステムメニューの入力をクリックします。

次に、ドロップダウンメニューから Syslog UDP を選択し、新しい入力の起動をクリックします。

「新しい入力を起動するSyslogUDP」ウィンドウがポップアップ表示されます。 次の情報を入力します。

次に、起動をクリックします。

これで、ローカル入力の実行セクションに「syslog」という名前の入力が表示されます(「実行中」という緑色のボックスが表示されているはずです)。

これで、Graylog2サーバーがサーバーからsyslogメッセージを受信する準備が整いました。 ここで、syslogメッセージをGraylog2に送信するようにサーバーを構成しましょう。

Graylog2サーバーに送信するようにrsyslogを構成します

syslogメッセージをGraylog2に送信するすべてのサーバーで、次の手順を実行します。

/etc/rsyslog.dにrsyslog構成ファイルを作成します。 私たちは私たちを90-graylog2.confと呼びます:

sudo vi /etc/rsyslog.d/90-graylog2.conf

このファイルに、次の行を追加して、syslogメッセージをGraylog2サーバーに送信するようにrsyslogを構成します(gl2_private_IPをGraylog2サーバーのプライベートIPアドレスに置き換えます)。

 $ template GRAYLOGRFC5424、“ <%pri%>%protocol-version %% timestamp ::: date-rfc3339%%HOSTNAME%%app-name%%procid%%msg%\ n”  @ gl2_private_IP :514; GRAYLOGRFC5424

保存して終了します。 このファイルは、今後rsyslog構成の一部としてロードされます。 次に、変更を有効にするためにrsyslogを再起動する必要があります。

sudo service rsyslog restart

監視するすべてのサーバーでrsyslogの構成が完了したら、Graylog2Webインターフェイスに戻りましょう。

Graylog2ソースの表示

お気に入りのブラウザで、VPSのパブリックIPアドレスのポート9000に移動します。

http:// gl2_public_IP :9000 /

トップバーのソースをクリックします。 rsyslogを構成したすべてのサーバーのリストが表示されます。 これがどのように見えるかの例です:

ソースのホスト名は左側にあり、Graylog2によって受信されたメッセージの数は右側にあります。

Graylog2データの検索

しばらくの間Graylog2にメッセージを収集させた後、メッセージを検索できるようになります。 例として、「sshd」を検索して、サーバーでどのようなSSHアクティビティが発生しているかを確認しましょう。 結果の抜粋は次のとおりです。

ご覧のとおり、検索結果の例では、さまざまなサーバーのsshdログが明らかになり、rootログインの試行に多くの失敗がありました。 結果は異なる場合がありますが、権限のないユーザーがサーバーにアクセスしようとしている方法など、多くの問題を特定するのに役立ちます。

すべてのソースの基本的な検索機能に加えて、特定のホストのログを特定の時間枠で検索できます。

たとえば、インシデントが発生した後に1つまたは複数のサーバーのログを確認する場合は、Graylog2のデータを検索すると便利です。 一元化されたロギングにより、発生したすべてのイベントを確認するために複数のサーバーにログインする必要がないため、関連するインシデントの関連付けが容易になります。

検索バーの仕組みの詳細については、公式ドキュメントをご覧ください:検索バーの説明

結論

これでGraylog2がセットアップされたので、Graylog2が提供する他の機能を自由に調べてください。 他の種類のログをGraylog2に送信し、エクストラクタを設定して(または、logstashなどのソフトウェアでログを再フォーマットして)、ログをより構造化して検索できるようにすることができます。 コンポーネントを分離し、冗長性を追加してパフォーマンスと可用性を向上させることにより、Graylog2環境を拡張することも検討できます。

幸運を!

ミッチェル・アニカス
モバイルバージョンを終了