Ubuntu 16.04でGraylog 2を使用してログを管理する方法

前書き

Graylogは、強力なオープンソースのログ管理プラットフォームです。 多くの場合、Syslogプロトコルを使用して送信されるサーバーログから重要なデータを集約して抽出します。 また、Webインターフェイスでログを検索して視覚化することもできます。

このチュートリアルでは、Ubuntu 16.04にGraylogをインストールして構成し、システムログを受け取る簡単な入力を設定します。

前提条件

このチュートリアルを始める前に、次のものが必要です。

  • 少なくとも2 GBのRAM、プライベートネットワーキングが有効、および非ルートユーザーを備えたUbuntu 16.04サーバー1台。 これは、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [Ubuntu 16.04での初期サーバーセットアップ]に従って設定できます。

  • Oracle JDK 8がインストールされています。これは、https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-の「Oracle JDKのインストール」セクションに従って実行できます。 ubuntu-16-04 [このJavaインストール記事]。

  • Elasticsearch2.x。https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-16-04のステップ1および2に従ってインストールできます。 [Elasticsearchインストールチュートリアル]。 Graylogの特定のバージョンは、Elasticsearchの特定のバージョンでのみ機能します。 たとえば、Graylog 2.xはElasticsearch 5.xでは機能しません。 正確なバージョンについては、http://docs.graylog.org/en/2.2/pages/configuration/elasticsearch.html [このGreylog-Elasticsearchバージョン比較表]を参照してください。 このチュートリアルでは、Elasticsearch 2.4.4およびGraylog 2.2を使用します。

  • MongoDB。https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04 [MongoDBチュートリアル]に従ってインストールできます。

ステップ1-Elasticsearchの構成

Elasticsearch構成ファイルを変更して、クラスター名がGraylog構成ファイルで設定された名前と一致するようにする必要があります。 簡単にするために、Elasticsearchクラスター名をデフォルトのGraylog名の「+ graylog +」に設定します。 任意の値に設定できますが、Graylog構成ファイルを更新して、その変更を反映するようにしてください。

エディターでElasticsearch構成ファイルを開きます。

sudo nano /etc/elasticsearch/elasticsearch.yml

次の行を見つけます。

/etc/elasticsearch/elasticsearch.yml

cluster.name:

+ cluster.name`の値を + graylog`に変更します。

/etc/elasticsearch/elasticsearch.yml

cluster.name:

ファイルを保存して、エディターを終了します。

構成ファイルを変更したため、変更を有効にするにはサービスを再起動する必要があります。

sudo systemctl restart elasticsearch

Elasticsearchを構成したので、Graylogのインストールに進みましょう。

ステップ2-Graylogのインストール

このステップでは、Graylogサーバーをインストールします。

まず、Graylogリポジトリ設定を含むパッケージファイルをダウンロードします。 Graylog download pageにアクセスして、現在のバージョン番号を確認してください。 このチュートリアルでは、バージョン「2.2」を使用します。

wget https://packages.graylog2.org/repo/packages/graylog--repository_latest.deb

次に、 `+ .deb `パッケージファイルからリポジトリ設定をインストールし、再度 ` 2.2 +`をダウンロードしたバージョンに置き換えます。

sudo dpkg -i graylog--repository_latest.deb

リポジトリ設定が更新されたので、パッケージの新しいリストを取得する必要があります。 このコマンドを実行してください。

sudo apt-get update

次に、 `+ graylog-server +`パッケージをインストールします。

sudo apt-get install graylog-server

最後に、次のコマンドを使用して、システムの起動時にGraylogを自動的に起動します。

sudo systemctl enable graylog-server.service

Graylogは正常にインストールされましたが、まだ開始されていません。 開始する前に設定する必要があります。

手順3-Graylogの構成

Elasticsearchが構成され、Graylogがインストールされたので、使用する前にデフォルトのGraylog構成ファイルのいくつかの設定を変更する必要があります。 Graylogの設定ファイルは、デフォルトで `+ / etc / graylog / server / server.conf +`にあります。

最初に、 `+ password_secret +`値を設定する必要があります。 Graylogはこの値を使用して、保存されているユーザーパスワードを保護します。 ランダムに生成された128文字の値を使用します。

`+ pwgen +`を使用してパスワードを生成するため、まだインストールされていない場合はインストールします。

sudo apt install pwgen

パスワードを生成し、Graylog構成ファイルに配置します。 `+ sed `プログラムを使用して、 ` password_secret +`値をGraylog設定ファイルに注入します。 このように、値をコピーして貼り付ける必要はありません。 このコマンドを実行してシークレットを作成し、ファイルに保存します:

sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf

`+ sed +`の使用の詳細については、https://www.digitalocean.com/community/tutorials/the-basics-of-using-the-sed-stream-editor-to-manipulate-text-in-linuxを参照してください[このDigitalOcean sedチュートリアル]。

次に、 `+ root_password_sha2 `の値を設定する必要があります。 これは、希望するパスワードのhttps://en.wikipedia.org/wiki/SHA-2[SHA-256ハッシュ]です。 もう一度、 ` sed `コマンドを使用してGraylog設定ファイルを変更し、 ` shasum +`を使用して手動でSHA-256ハッシュを生成して設定ファイルに貼り付ける必要がないようにします。

このコマンドを実行しますが、以下の「++」を目的のデフォルトの管理者パスワードに置き換えます。

sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n '' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf

ここで、構成ファイルにさらにいくつかの変更を加える必要があります。 エディターでGraylog構成ファイルを開きます。

sudo nano /etc/graylog/server/server.conf

次の行を見つけて変更し、コメントを外し、「++」をサーバーのパブリックIPに置き換えます。 これは、IPアドレスまたは完全修飾ドメイン名にすることができます。

/etc/graylog/server/server.conf

...
rest_listen_uri = http://:9000/api/

...
web_listen_uri = http://:9000/

...

ファイルを保存して、エディターを終了します。

設定ファイルを変更したので、 `+ graylog-server`サービスを再起動(または開始)する必要があります。 restartコマンドは、サーバーが現在停止している場合でもサーバーを起動します。

sudo systemctl restart graylog-server

次に、サーバーのステータスを確認します。

sudo systemctl status graylog-server

出力は次のようになります。

● graylog-server.service - Graylog server
  Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
  Active:  (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago
    Docs: http://docs.graylog.org/
Main PID: 1300 (graylog-server)
   Tasks: 191 (limit: 9830)
  Memory: 1.2G
     CPU: 14h 57min 21.475s
  CGroup: /system.slice/graylog-server.service
          ├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server
          └─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon

ステータスについては「++」が表示されます。

出力がシステムが実行されていないことを報告している場合は、 `+ / var / log / syslog +`でエラーを確認します。 Elasticsearchのインストール時にJavaをインストールし、ステップ3ですべての値を変更したことを確認してください。 Graylogサービスを再起動しようとしました。

`+ ufw `を使用してファイアウォールを設定している場合、Webインターフェイスにアクセスできるように、TCPポート ` 9000 +`のファイアウォール例外を追加します。

sudo ufw allow 9000/tcp

Graylogが実行されると、Webブラウザーで `+ http://:9000 `にアクセスできるはずです。 ` graylog-server +`を再起動してからWebインターフェースが起動するまで、最大5分待たなければならない場合があります。 さらに、MongoDBが実行されていることを確認してください。

Graylogが正常に実行されたので、ログの処理に進むことができます。

ステップ4-入力の作成

ログを受信するために、Graylogに新しい入力を追加しましょう。 入力により、Graylogがリッスンするポートと、ログを受信するときに使用するプロトコルを指示します。 一般的に使用されるロギングプロトコルであるSyslog UDP入力を追加します。

ブラウザで「+ http://:9000+」にアクセスすると、ログインページが表示されます。 ユーザー名に「+ admin +」を使用し、パスワードに手順3で入力したパスワードを使用します。

ログインすると、「はじめに」というタイトルのページが表示され、次の画像のようになります。

画像:https://assets.digitalocean.com/articles/graylog_ubuntu_1604/IeULQ5f.png [「はじめに」ページ]

入力ページを表示するには、ナビゲーションバーの[システム]ドロップダウンをクリックし、[入力]を選択します。

テキスト* Select Input を含むドロップダウンボックスが表示されます。 このドロップダウンから[ Syslog UDP ]を選択し、[*新しい入力の起動]ボタンをクリックします。

フォーム付きのモーダルが表示されます。 以下の詳細を入力して、入力を作成します。

  1. * Node *には、サーバーを選択します。 リスト内の唯一のアイテムでなければなりません。

  2. *タイトル*には、 `+ Linux Server Logs +`などの適切なタイトルを入力します。

  3. *バインドアドレス*には、サーバーのプライベートIPを使用します。 外部サーバーからログも収集できるようにしたい場合(Syslogは認証をサポートしていないためお勧めしません)、「+ 0.0.0.0+」(すべてのインターフェース)に設定できます。

  4. *ポート*には、「+ 8514+」と入力します。 ポート + 0 +〜 `+ 1024 `はルートユーザーのみが使用できるため、このチュートリアルではポート ` 8514 `を使用していることに注意してください。 他のサービスと競合しない限り、「 1024+」より上の任意のポート番号を使用できます。

[保存]をクリックします。 次の図に示すように、ローカル入力リストが更新され、新しい入力が表示されます。

image:https://assets.digitalocean.com/articles/graylog_ubuntu_1604/ZL75jrK.png [ローカル入力のスクリーンショット]

入力が作成されたので、いくつかのログをGraylogに送信できます。

手順5-ログをGraylogに送信するようにサーバーを構成する

入力を構成し、ポート「8514」でリッスンしていますが、まだ入力にデータを送信していないため、結果は表示されません。 「+ rsyslog +」はログを転送するために使用されるソフトウェアユーティリティであり、Ubuntuにプリインストールされているため、ログをGraylogに送信するように設定します。 このチュートリアルでは、作成したばかりの入力にシステムログを送信するようにGraylogを実行するUbuntuサーバーを設定しますが、他のサーバーでこれらの手順を実行できます。

エディターで新しい `+ rsyslog +`設定ファイルを作成して開きます。

sudo nano /etc/rsyslog.d/60-graylog.conf

ファイルに次の行を追加し、「++」をGraylogサーバーのプライベートIPに置き換えます。

/etc/rsyslog.d/60-graylog.conf

*.* @:8514;RSYSLOG_SyslogProtocol23Format

エディターを保存して終了します。

変更が有効になるように、 `+ syslog`サービスを再起動します。

sudo systemctl restart rsyslog

ログを送信するサーバーごとにこれらの手順を繰り返します。

これで、Webインターフェースでログを表示できるはずです。 ナビゲーションバーの[ソース]タブをクリックして、ソースのグラフを表示します。 これは次のようになります。

image:https://assets.digitalocean.com/articles/graylog_ubuntu_1604/SwMfGPD.png [ソースのスクリーンショット]

ナビゲーションバーの[検索]タブをクリックして、最新のログの概要を表示することもできます。

検索の詳細については、http://docs.graylog.org/en/2.2/pages/queries.html [Graylog検索ドキュメント]をご覧ください。

結論

これで、他のサーバーからログを収集できる入力ソースを備えた動作中のGraylogサーバーができました。

次に、ダッシュボード、アラート、およびストリームの設定を検討します。 ダッシュボードは、ログの概要をすばやく提供します。 ストリームはメッセージを分類し、アラートで監視できます。 Graylogのより高度な機能の設定の詳細については、http://docs.graylog.org/en/2.2/index.html [Graylog documentation]の手順を参照してください。

前の投稿:Ubuntu 18.04にApache ZooKeeperクラスターをインストールおよび構成する方法
次の投稿:GOPATHを理解する