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サーバーノード:メッセージを受信して処理し、他のすべての非サーバーコンポーネントと通信するワーカーとして機能します。 そのパフォーマンスは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
を作成し、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_secret
とroot_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.confのapplication.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
- ポート: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
このファイルに、次の行を追加して、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環境を拡張することも検討できます。
幸運を!