序章

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

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

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

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

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

  • Graylog2サーバーノード:メッセージを受信して処理し、他のすべての非サーバーコンポーネントと通信するワーカーとして機能します。 そのパフォーマンスはCPUに依存します
  • Elasticsearchノード:すべてのログ/メッセージを保存します。 そのパフォーマンスはRAMとディスクI/Oに依存します
  • MongoDB :メタデータを保存し、負荷をあまりかけません
  • Webインターフェイス:ユーザーインターフェイス

次に、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 目的のパスワードを入力し、 root_password_sha2 Graylog2構成ファイルのパラメーター。 次のコマンドを使用して、目的のパスワードのシャサムを作成します。強調表示された「パスワード」を独自のパスワードに置き換えます。 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

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

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インターフェイスの秘密鍵である application.secret graylog2-web-interface.confのパラメーター。 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つしかないため、値は次の値と一致する必要があります。 rest_listen_uri Graylog2サーバー構成(つまり 「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
  • ポート:514
  • バインドアドレス: gl2_private_IP

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

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

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

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

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

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

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

このファイルに、次の行を追加して、Graylog2サーバーにsyslogメッセージを送信するように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ログが表示され、多くのルートログイン試行が失敗しました。 結果は異なる場合がありますが、許可されていないユーザーがサーバーにアクセスしようとしている方法など、多くの問題を特定するのに役立ちます。

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

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

検索バーの動作の詳細については、公式ドキュメントを確認してください:検索バーの説明

結論

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

幸運を!

ミッチェル・アニカス