前書き
Graylogは、強力なオープンソースのログ管理プラットフォームです。 多くの場合、Syslogプロトコルを使用して送信されるサーバーログから重要なデータを集約して抽出します。 また、Webインターフェイスでログを検索して視覚化することもできます。
このチュートリアルでは、Ubuntu 16.04にGraylogをインストールして構成し、システムログを受け取る簡単な入力を設定します。
前提条件
このチュートリアルを始める前に、次のものが必要です。
-
少なくとも2 GBのRAM、プライベートネットワーキングが有効、および非ルートユーザーを備えたUbuntu 16.04サーバー1台。 これは、Initial Server Setup with Ubuntu 16.04に従って設定できます。
-
Oracle JDK 8がインストールされました。これは、this Java installation articleの「OracleJDKのインストール」セクションに従って実行できます。
-
Elasticsearch2.x。これは、Elasticsearch installation tutorialのステップ1と2に従ってインストールできます。 Graylogの特定のバージョンは、Elasticsearchの特定のバージョンでのみ機能します。 たとえば、Graylog 2.xはElasticsearch 5.xでは機能しません。 正確なバージョンについては、this Greylog-Elasticsearch version comparison tableを参照してください。 このチュートリアルでは、Elasticsearch 2.4.4およびGraylog 2.2を使用します。
-
MongoDB。MongoDB tutorialに従ってインストールできます。
[[step-1 -—- configuring-elasticsearch]] ==ステップ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: graylog
ファイルを保存して、エディターを終了します。
構成ファイルを変更したため、変更を有効にするにはサービスを再起動する必要があります。
sudo systemctl restart elasticsearch
Elasticsearchを構成したので、Graylogのインストールに進みましょう。
[[step-2 -—- installing-graylog]] ==ステップ2—Graylogのインストール
このステップでは、Graylogサーバーをインストールします。
まず、Graylogリポジトリ設定を含むパッケージファイルをダウンロードします。 Graylog download pageにアクセスして、現在のバージョン番号を確認してください。 このチュートリアルでは、バージョン2.2
を使用します。
wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
次に、.deb
パッケージファイルからリポジトリ構成をインストールし、2.2
をダウンロードしたバージョンに置き換えます。
sudo dpkg -i graylog-2.2-repository_latest.deb
リポジトリ設定が更新されたので、パッケージの新しいリストを取得する必要があります。 このコマンドを実行してください。
sudo apt-get update
次に、graylog-server
パッケージをインストールします。
sudo apt-get install graylog-server
最後に、次のコマンドを使用して、システムの起動時にGraylogを自動的に起動します。
sudo systemctl enable graylog-server.service
Graylogは正常にインストールされましたが、まだ開始されていません。 開始する前に設定する必要があります。
[[step-3 -—- configuring-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
の使用の詳細については、this DigitalOcean sed tutorialを参照してください。
次に、root_password_sha2
の値を設定する必要があります。 これは、希望するパスワードのSHA-256 hashです。 繰り返しになりますが、sed
コマンドを使用してGraylog構成ファイルを変更するため、shasum
を使用してSHA-256ハッシュを手動で生成し、構成ファイルに貼り付ける必要はありません。
このコマンドを実行しますが、以下のpassword
を目的のデフォルトの管理者パスワードに置き換えます。
[.note]#Note:コマンドの先頭にスペースがあり、パスワードがBash履歴にプレーンテキストとして保存されないようになっています。
#
sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'password' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf
ここで、構成ファイルにさらにいくつかの変更を加える必要があります。 エディターでGraylog構成ファイルを開きます。
sudo nano /etc/graylog/server/server.conf
次の行を見つけて変更し、コメントを外して、graylog_public_ip
をサーバーのパブリックIPに置き換えます。 これは、IPアドレスまたは完全修飾ドメイン名にすることができます。
/etc/graylog/server/server.conf
...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/
...
web_listen_uri = http://your_server_ip_or_domain: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: 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
ステータスのactive
が表示されます。
システムが実行されていないことを出力が報告する場合は、/var/log/syslog
にエラーがないか確認してください。 Elasticsearchのインストール時にJavaをインストールし、ステップ3ですべての値を変更したことを確認してください。 Graylogサービスを再起動しようとしました。
ufw
でファイアウォールを構成した場合は、TCPポート9000
にファイアウォール例外を追加して、Webインターフェイスにアクセスできるようにします。
sudo ufw allow 9000/tcp
Graylogが実行されると、Webブラウザでhttp://your_server_ip:9000
にアクセスできるようになります。 graylog-server
を再起動してから、Webインターフェイスが開始するまで最大5分待たなければならない場合があります。 さらに、MongoDBが実行されていることを確認してください。
Graylogが正常に実行されたので、ログの処理に進むことができます。
[[ステップ-4 -—-入力の作成]] ==ステップ4—入力の作成
ログを受信するために、Graylogに新しい入力を追加しましょう。 入力により、Graylogがリッスンするポートと、ログを受信するときに使用するプロトコルを指示します。 一般的に使用されるロギングプロトコルであるSyslog UDP入力を追加します。
ブラウザでhttp://your_server_ip:9000
にアクセスすると、ログインページが表示されます。 ユーザー名にはadmin
を使用し、パスワードには手順3で入力したパスワードを使用します。
ログインすると、「はじめに」というタイトルのページが表示され、次の画像のようになります。
入力ページを表示するには、ナビゲーションバーのSystemドロップダウンをクリックし、Inputsを選択します。
次に、テキストSelect Inputを含むドロップダウンボックスが表示されます。 このドロップダウンからSyslog UDPを選択し、Launch new inputボタンをクリックします。
フォーム付きのモーダルが表示されます。 以下の詳細を入力して、入力を作成します。
-
Nodeには、サーバーを選択します。 リスト内の唯一のアイテムでなければなりません。
-
Titleには、
Linux Server Logs
などの適切なタイトルを入力します。 -
Bind addressの場合は、サーバーのプライベートIPを使用します。 外部サーバーからログを収集できるようにする場合(Syslogは認証をサポートしていないため、お勧めしません)、
0.0.0.0
(すべてのインターフェイス)に設定できます。 -
Portには、
8514
と入力します。 ポート0
から1024
は、rootユーザーのみが使用できるため、このチュートリアルではポート8514
を使用していることに注意してください。 他のサービスと競合しない限り、1024
を超える任意のポート番号を使用できます。
Saveをクリックします。 次の図に示すように、ローカル入力リストが更新され、新しい入力が表示されます。
入力が作成されたので、いくつかのログをGraylogに送信できます。
[[step-5 -—- configure-servers-to-send-logs-to-graylog]] ==ステップ5—ログをGraylogに送信するようにサーバーを構成する
入力が構成され、ポート8514
でリッスンしていますが、まだ入力にデータを送信していないため、結果は表示されません。 rsyslog
はログの転送に使用されるソフトウェアユーティリティであり、Ubuntuにプリインストールされているため、ログをGraylogに送信するように構成します。 このチュートリアルでは、作成したばかりの入力にシステムログを送信するようにGraylogを実行するUbuntuサーバーを設定しますが、他のサーバーでこれらの手順を実行できます。
[。注意]##
他のサーバーからGraylogにデータを送信する場合は、UDPポート8514
のファイアウォール例外を追加する必要があります。
sudo ufw allow 8514/udp
エディターで新しいrsyslog
構成ファイルを作成して開きます。
sudo nano /etc/rsyslog.d/60-graylog.conf
次の行をファイルに追加し、your_server_private_ip
をGraylogサーバーのプライベートIPに置き換えます。
/etc/rsyslog.d/60-graylog.conf
*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format
エディターを保存して終了します。
rsyslog
サービスを再起動して、変更を有効にします。
sudo systemctl restart rsyslog
ログを送信するサーバーごとにこれらの手順を繰り返します。
これで、Webインターフェースでログを表示できるはずです。 ナビゲーションバーのSourcesタブをクリックして、ソースのグラフを表示します。 これは次のようになります。
ナビゲーションバーのSearchタブをクリックして、最新のログの概要を表示することもできます。
検索の詳細については、Graylog searching documentationを参照してください。
結論
これで、他のサーバーからログを収集できる入力ソースを備えた動作中のGraylogサーバーができました。
次に、ダッシュボード、アラート、およびストリームの設定を検討します。 ダッシュボードは、ログの概要をすばやく提供します。 ストリームはメッセージを分類し、アラートで監視できます。 Graylogのより高度な機能の構成の詳細については、Graylog documentationに説明があります。